|
278 | 278 | iter = 1
|
279 | 279 | tstep = t + dto2
|
280 | 280 | # 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 |
282 | 282 | b = dt.*f(tstep,u) .- z
|
283 | 283 | dz = W\b
|
284 | 284 | ndz = integrator.opts.internalnorm(dz)
|
|
292 | 292 | while (do_newton || iter < integrator.alg.min_newton_iter) && iter < integrator.alg.max_newton_iter
|
293 | 293 | iter += 1
|
294 | 294 | # 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 |
296 | 296 | b = dt.*f(tstep,u) .- z
|
297 | 297 | dz = W\b
|
298 | 298 | ndzprev = ndz
|
|
424 | 424 | iter = 1
|
425 | 425 | tstep = t + dto2
|
426 | 426 | # 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 |
428 | 428 | f(tstep,u,k)
|
429 | 429 | if mass_matrix == I
|
430 | 430 | @. b = dt*k - z
|
|
448 | 448 | while (do_newton || iter < integrator.alg.min_newton_iter) && iter < integrator.alg.max_newton_iter
|
449 | 449 | iter += 1
|
450 | 450 | # 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 |
452 | 452 | f(tstep,u,k)
|
453 | 453 | if mass_matrix == I
|
454 | 454 | @. b = dt*k - z
|
@@ -537,7 +537,7 @@ function initialize!(integrator, cache::TrapezoidConstantCache)
|
537 | 537 | integrator.k[2] = integrator.fsallast
|
538 | 538 | end
|
539 | 539 |
|
540 |
| -@muladd function perform_step!(integrator,cache::TrapezoidConstantCache,f=integrator.f) |
| 540 | +@muladd function perform_step!(integrator, cache::TrapezoidConstantCache, repeat_step=false) |
541 | 541 | @unpack t,dt,uprev,u,f = integrator
|
542 | 542 | @unpack uf,κ,tol = cache
|
543 | 543 |
|
|
564 | 564 | iter = 1
|
565 | 565 | tstep = t + dt
|
566 | 566 | tmp = @. uprev + dto2*integrator.fsalfirst
|
567 |
| - u = @. tmp + 1//2*z |
| 567 | + u = @. tmp + z/2 |
568 | 568 | b = dt.*f(tstep,u) .- z
|
569 | 569 | dz = W\b
|
570 | 570 | ndz = integrator.opts.internalnorm(dz)
|
|
577 | 577 | fail_convergence = false
|
578 | 578 | while (do_newton || iter < integrator.alg.min_newton_iter) && iter < integrator.alg.max_newton_iter
|
579 | 579 | iter += 1
|
580 |
| - u = @. tmp + 1//2*z |
| 580 | + u = @. tmp + z/2 |
581 | 581 | b = dt.*f(tstep,u) .- z
|
582 | 582 | dz = W\b
|
583 | 583 | ndzprev = ndz
|
|
597 | 597 | return
|
598 | 598 | end
|
599 | 599 |
|
600 |
| - u = @. tmp + 1//2*z |
| 600 | + u = @. tmp + z/2 |
601 | 601 |
|
602 | 602 | cache.ηold = η
|
603 | 603 | cache.newton_iters = iter
|
|
703 | 703 | iter = 1
|
704 | 704 | tstep = t + dt
|
705 | 705 | @. tmp = uprev + dto2*integrator.fsalfirst
|
706 |
| - @. u = tmp + 1//2*z |
| 706 | + @. u = tmp + z/2 |
707 | 707 | f(tstep,u,k)
|
708 | 708 | if mass_matrix == I
|
709 | 709 | @. b = dt*k - z
|
|
726 | 726 | fail_convergence = false
|
727 | 727 | while (do_newton || iter < integrator.alg.min_newton_iter) && iter < integrator.alg.max_newton_iter
|
728 | 728 | iter += 1
|
729 |
| - @. u = tmp + 1//2*z |
| 729 | + @. u = tmp + z/2 |
730 | 730 | f(tstep,u,k)
|
731 | 731 | if mass_matrix == I
|
732 | 732 | @. b = dt*k - z
|
|
756 | 756 | return
|
757 | 757 | end
|
758 | 758 |
|
759 |
| - @. u = tmp + 1//2*z |
| 759 | + @. u = tmp + z/2 |
760 | 760 |
|
761 | 761 | cache.ηold = η
|
762 | 762 | cache.newton_iters = iter
|
@@ -2809,8 +2809,8 @@ function initialize!(integrator, cache::Hairer4ConstantCache)
|
2809 | 2809 | integrator.k[2] = integrator.fsallast
|
2810 | 2810 | end
|
2811 | 2811 |
|
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 |
2814 | 2814 | @unpack uf,κ,tol = cache
|
2815 | 2815 | @unpack γ,a21,a31,a32,a41,a42,a43,a51,a52,a53,a54,c2,c3,c4 = cache.tab
|
2816 | 2816 | @unpack α21,α31,α32,α41,α43 = cache.tab
|
@@ -3418,8 +3418,8 @@ function initialize!(integrator, cache::Kvaerno4ConstantCache)
|
3418 | 3418 | end
|
3419 | 3419 |
|
3420 | 3420 |
|
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 |
3423 | 3423 | @unpack uf,κ,tol = cache
|
3424 | 3424 | @unpack γ,a31,a32,a41,a42,a43,a51,a52,a53,a54,c3,c4 = cache.tab
|
3425 | 3425 | @unpack α21,α31,α32,α41,α42 = cache.tab
|
@@ -3534,7 +3534,7 @@ end
|
3534 | 3534 | # initial step of Newton iteration
|
3535 | 3535 | iter = 1
|
3536 | 3536 | tstep = t + c4*dt
|
3537 |
| - tmp = @. uprev + a41*z₁ + a42*z₂ * a43*z₃ |
| 3537 | + tmp = @. uprev + a41*z₁ + a42*z₂ + a43*z₃ |
3538 | 3538 | u = @. tmp + γ*z₄
|
3539 | 3539 | b = dt.*f(tstep,u) .- z₄
|
3540 | 3540 | dz = W\b
|
@@ -4412,7 +4412,7 @@ end
|
4412 | 4412 | iter = 1
|
4413 | 4413 | tstep = t + c5*dt
|
4414 | 4414 | @. tmp = uprev + a51*z₁ + a52*z₂ + a53*z₃ + a54*z₄
|
4415 |
| - @. u = uprev + γ*z₅ |
| 4415 | + @. u = tmp + γ*z₅ |
4416 | 4416 | f(tstep,u,k)
|
4417 | 4417 | @. b = dt*k - z₅
|
4418 | 4418 | if has_invW(f)
|
|
0 commit comments