From 436b2db6826958ea41408f0a6e4dd5526decacf7 Mon Sep 17 00:00:00 2001 From: bennibolm Date: Fri, 15 Sep 2023 17:55:28 +0200 Subject: [PATCH] Add denominator variable for SSP scheme --- src/time_integration/methods_SSP.jl | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/time_integration/methods_SSP.jl b/src/time_integration/methods_SSP.jl index 8ecad69748b..942a2aaa6bd 100644 --- a/src/time_integration/methods_SSP.jl +++ b/src/time_integration/methods_SSP.jl @@ -26,12 +26,14 @@ The third-order SSP Runge-Kutta method of Shu and Osher. struct SimpleSSPRK33{StageCallbacks} <: SimpleAlgorithmSSP a::SVector{3, Float64} b::SVector{3, Float64} + denom::SVector{3, Float64} c::SVector{3, Float64} stage_callbacks::StageCallbacks function SimpleSSPRK33(; stage_callbacks = ()) - a = SVector(0.0, 3 / 4, 1 / 3) - b = SVector(1.0, 1 / 4, 2 / 3) + a = SVector(0.0, 3.0, 1.0) # a = a / denom + b = SVector(1.0, 1.0, 2.0) # b = b / denom + denom = SVector(1.0, 4.0, 3.0) c = SVector(0.0, 1.0, 1 / 2) # Butcher tableau @@ -42,7 +44,7 @@ struct SimpleSSPRK33{StageCallbacks} <: SimpleAlgorithmSSP # -------------------- # b | 1/6 1/6 2/3 - new{typeof(stage_callbacks)}(a, b, c, stage_callbacks) + new{typeof(stage_callbacks)}(a, b, denom, c, stage_callbacks) end end @@ -166,7 +168,7 @@ function solve!(integrator::SimpleIntegratorSSP) end # perform convex combination - @. integrator.u = alg.a[stage] * integrator.r0 + alg.b[stage] * integrator.u + @. integrator.u = (alg.a[stage] * integrator.r0 + alg.b[stage] * integrator.u) / alg.denom[stage] end integrator.iter += 1