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