Skip to content

Commit 24584cf

Browse files
committed
Convergence fix
1 parent a0150ee commit 24584cf

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

src/integrators/sdirk_integrators.jl

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ end
278278
iter = 1
279279
tstep = t + dto2
280280
# u = uprev + z then u = (uprev+u)/2 = (uprev+uprev+z)/2 = uprev + z/2
281-
u = @. uprev + 1//2*z
281+
u = @. uprev + z/2
282282
b = dt.*f(tstep,u) .- z
283283
dz = W\b
284284
ndz = integrator.opts.internalnorm(dz)
@@ -292,7 +292,7 @@ end
292292
while (do_newton || iter < integrator.alg.min_newton_iter) && iter < integrator.alg.max_newton_iter
293293
iter += 1
294294
# u = uprev + z then u = (uprev+u)/2 = (uprev+uprev+z)/2 = uprev + z/2
295-
u = @. uprev + 1//2*z
295+
u = @. uprev + z/2
296296
b = dt.*f(tstep,u) .- z
297297
dz = W\b
298298
ndzprev = ndz
@@ -424,7 +424,7 @@ end
424424
iter = 1
425425
tstep = t + dto2
426426
# u = uprev + z then u = (uprev+u)/2 = (uprev+uprev+z)/2 = uprev + z/2
427-
@. u = uprev + 1//2*z
427+
@. u = uprev + z/2
428428
f(tstep,u,k)
429429
if mass_matrix == I
430430
@. b = dt*k - z
@@ -448,7 +448,7 @@ end
448448
while (do_newton || iter < integrator.alg.min_newton_iter) && iter < integrator.alg.max_newton_iter
449449
iter += 1
450450
# u = uprev + z then u = (uprev+u)/2 = (uprev+uprev+z)/2 = uprev + z/2
451-
@. u = uprev + 1//2*z
451+
@. u = uprev + z/2
452452
f(tstep,u,k)
453453
if mass_matrix == I
454454
@. b = dt*k - z
@@ -537,7 +537,7 @@ function initialize!(integrator, cache::TrapezoidConstantCache)
537537
integrator.k[2] = integrator.fsallast
538538
end
539539

540-
@muladd function perform_step!(integrator,cache::TrapezoidConstantCache,f=integrator.f)
540+
@muladd function perform_step!(integrator, cache::TrapezoidConstantCache, repeat_step=false)
541541
@unpack t,dt,uprev,u,f = integrator
542542
@unpack uf,κ,tol = cache
543543

@@ -564,7 +564,7 @@ end
564564
iter = 1
565565
tstep = t + dt
566566
tmp = @. uprev + dto2*integrator.fsalfirst
567-
u = @. tmp + 1//2*z
567+
u = @. tmp + z/2
568568
b = dt.*f(tstep,u) .- z
569569
dz = W\b
570570
ndz = integrator.opts.internalnorm(dz)
@@ -577,7 +577,7 @@ end
577577
fail_convergence = false
578578
while (do_newton || iter < integrator.alg.min_newton_iter) && iter < integrator.alg.max_newton_iter
579579
iter += 1
580-
u = @. tmp + 1//2*z
580+
u = @. tmp + z/2
581581
b = dt.*f(tstep,u) .- z
582582
dz = W\b
583583
ndzprev = ndz
@@ -597,7 +597,7 @@ end
597597
return
598598
end
599599

600-
u = @. tmp + 1//2*z
600+
u = @. tmp + z/2
601601

602602
cache.ηold = η
603603
cache.newton_iters = iter
@@ -703,7 +703,7 @@ end
703703
iter = 1
704704
tstep = t + dt
705705
@. tmp = uprev + dto2*integrator.fsalfirst
706-
@. u = tmp + 1//2*z
706+
@. u = tmp + z/2
707707
f(tstep,u,k)
708708
if mass_matrix == I
709709
@. b = dt*k - z
@@ -726,7 +726,7 @@ end
726726
fail_convergence = false
727727
while (do_newton || iter < integrator.alg.min_newton_iter) && iter < integrator.alg.max_newton_iter
728728
iter += 1
729-
@. u = tmp + 1//2*z
729+
@. u = tmp + z/2
730730
f(tstep,u,k)
731731
if mass_matrix == I
732732
@. b = dt*k - z
@@ -756,7 +756,7 @@ end
756756
return
757757
end
758758

759-
@. u = tmp + 1//2*z
759+
@. u = tmp + z/2
760760

761761
cache.ηold = η
762762
cache.newton_iters = iter
@@ -2809,8 +2809,8 @@ function initialize!(integrator, cache::Hairer4ConstantCache)
28092809
integrator.k[2] = integrator.fsallast
28102810
end
28112811

2812-
@muladd function perform_step!(integrator,cache::Hairer4ConstantCache,f=integrator.f)
2813-
@unpack t,dt,uprev,u = integrator
2812+
@muladd function perform_step!(integrator, cache::Hairer4ConstantCache, repeat_step=false)
2813+
@unpack t,dt,uprev,u,f = integrator
28142814
@unpack uf,κ,tol = cache
28152815
@unpack γ,a21,a31,a32,a41,a42,a43,a51,a52,a53,a54,c2,c3,c4 = cache.tab
28162816
@unpack α21,α31,α32,α41,α43 = cache.tab
@@ -3418,8 +3418,8 @@ function initialize!(integrator, cache::Kvaerno4ConstantCache)
34183418
end
34193419

34203420

3421-
@muladd function perform_step!(integrator,cache::Kvaerno4ConstantCache,f=integrator.f)
3422-
@unpack t,dt,uprev,u = integrator
3421+
@muladd function perform_step!(integrator, cache::Kvaerno4ConstantCache, repeat_step=false)
3422+
@unpack t,dt,uprev,u,f = integrator
34233423
@unpack uf,κ,tol = cache
34243424
@unpack γ,a31,a32,a41,a42,a43,a51,a52,a53,a54,c3,c4 = cache.tab
34253425
@unpack α21,α31,α32,α41,α42 = cache.tab
@@ -3534,7 +3534,7 @@ end
35343534
# initial step of Newton iteration
35353535
iter = 1
35363536
tstep = t + c4*dt
3537-
tmp = @. uprev + a41*z₁ + a42*z₂ * a43*z₃
3537+
tmp = @. uprev + a41*z₁ + a42*z₂ + a43*z₃
35383538
u = @. tmp + γ*z₄
35393539
b = dt.*f(tstep,u) .- z₄
35403540
dz = W\b
@@ -4412,7 +4412,7 @@ end
44124412
iter = 1
44134413
tstep = t + c5*dt
44144414
@. tmp = uprev + a51*z₁ + a52*z₂ + a53*z₃ + a54*z₄
4415-
@. u = uprev + γ*z₅
4415+
@. u = tmp + γ*z₅
44164416
f(tstep,u,k)
44174417
@. b = dt*k - z₅
44184418
if has_invW(f)

0 commit comments

Comments
 (0)