From e13a40a8b4c8958e5c188be0be12342d870499f4 Mon Sep 17 00:00:00 2001 From: Florian Atteneder <florian.atteneder@uni-jena.de> Date: Mon, 12 Aug 2024 18:43:48 +0000 Subject: [PATCH] dg1d: substep callbacks have to be evolved after updating the solution (https://git.tpi.uni-jena.de/dg/dg1d.jl/-/merge_requests/202) --- src/evolve.jl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/evolve.jl b/src/evolve.jl index c0675e5c..7aff7aea 100644 --- a/src/evolve.jl +++ b/src/evolve.jl @@ -231,8 +231,6 @@ function ode_step!(u!, F, u0, t, dt, tmp_k, coeffs::COEFFS_LSERK4, callback_subs for i = 1:nstages ti = t + c[i] * dt F(ki, i == 1 ? u0 : u!, ti) - success = callback_substep(u!, ti, i+1) # +1 because u! is value for next stage - !success && return false if i == 1 @. u! = u0 + b[i] * dt * ki else @@ -243,9 +241,11 @@ function ode_step!(u!, F, u0, t, dt, tmp_k, coeffs::COEFFS_LSERK4, callback_subs if i < nstages @. kim1 = ki end + success = callback_substep(u!, ti, i+1) # +1 because u! is value for next stage + !success && return false end # for - return true + return success end @@ -262,12 +262,12 @@ function ode_step!(u!, F, u0, t, dt, tmp_k, coeffs::TimeStepAlgorithm, callback_ # assumes that a[1,:] are all zeros F(tmp_k[i], i == 1 ? u0 : u!, ti) i == nstages && break - success = callback_substep(u!, ti, i+1) # +1 because u! is value for next stage - !success && return false u! .= u0 for j = 1:i @. u! += a[i+1, j] * dt * tmp_k[j] end + success = callback_substep(u!, ti, i+1) # +1 because u! is value for next stage + !success && return false end u! .= u0 @@ -276,7 +276,7 @@ function ode_step!(u!, F, u0, t, dt, tmp_k, coeffs::TimeStepAlgorithm, callback_ end success = callback_substep(u!, t+dt, nstages) - return true + return success end -- GitLab