Skip to content

Commit 9af8cdd

Browse files
committed
fixes
1 parent 0054db2 commit 9af8cdd

File tree

5 files changed

+63
-228
lines changed

5 files changed

+63
-228
lines changed

lib/OrdinaryDiffEqRosenbrock/src/rosenbrock_caches.jl

Lines changed: 15 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ mutable struct RosenbrockCache{uType, rateType, uNoUnitsType, JType, WType, TabT
4141
alg::A
4242
step_limiter!::StepLimiter
4343
stage_limiter!::StageLimiter
44-
order::Int
44+
interp_order::Int
4545
end
4646
function full_cache(c::RosenbrockCache)
4747
return [c.u, c.uprev, c.dense..., c.du, c.du1, c.du2,
@@ -56,7 +56,7 @@ struct RosenbrockCombinedConstantCache{TF, UF, Tab, JType, WType, F, AD} <: Rose
5656
W::WType
5757
linsolve::F
5858
autodiff::AD
59-
order::Int
59+
interp_order::Int
6060
end
6161

6262
@cache mutable struct Rosenbrock23Cache{uType, rateType, uNoUnitsType, JType, WType,
@@ -718,8 +718,12 @@ tabtype(::Rodas4) = Rodas4Tableau
718718
tabtype(::Rodas42) = Rodas42Tableau
719719
tabtype(::Rodas4P) = Rodas4PTableau
720720
tabtype(::Rodas4P2) = Rodas4P2Tableau
721+
tabtype(::Rodas5) = Rodas5Tableau
722+
tabtype(::Rodas5P) = Rodas5PTableau
723+
tabtype(::Rodas5Pr) = Rodas5PTableau
724+
tabtype(::Rodas5Pe) = Rodas5PTableau
721725

722-
function alg_cache(alg::Union{Rodas4, Rodas42, Rodas4P, Rodas4P2},
726+
function alg_cache(alg::Union{Rodas4, Rodas42, Rodas4P, Rodas4P2, Rodas5, Rodas5P, Rodas5Pe, Rodas5Pr},
723727
u, rate_prototype, ::Type{uEltypeNoUnits},
724728
::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t,
725729
dt, reltol, p, calck,
@@ -729,21 +733,22 @@ function alg_cache(alg::Union{Rodas4, Rodas42, Rodas4P, Rodas4P2},
729733
J, W = build_J_W(alg, u, uprev, p, t, dt, f, uEltypeNoUnits, Val(false))
730734
linprob = nothing #LinearProblem(W,copy(u); u0=copy(u))
731735
linsolve = nothing #init(linprob,alg.linsolve,alias_A=true,alias_b=true)
736+
tab = tabtype(alg)(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits))
732737
RosenbrockCombinedConstantCache(tf, uf,
733-
tabtype(alg)(constvalue(uBottomEltypeNoUnits),
734-
constvalue(tTypeNoUnits)), J, W, linsolve,
735-
alg_autodiff(alg), 4)
738+
tab, J, W, linsolve,
739+
alg_autodiff(alg), size(tab.H, 1))
736740
end
737741

738-
function alg_cache(alg::Union{Rodas4, Rodas42, Rodas4P, Rodas4P2},
742+
function alg_cache(alg::Union{Rodas4, Rodas42, Rodas4P, Rodas4P2, Rodas5, Rodas5P, Rodas5Pe, Rodas5Pr},
739743
u, rate_prototype, ::Type{uEltypeNoUnits},
740744
::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t,
741745
dt, reltol, p, calck,
742746
::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits}
743747

748+
tab = tabtype(alg)(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits))
744749
# Initialize vectors
745-
dense = [zero(rate_prototype) for _ in 1:2]
746-
ks = [zero(rate_prototype) for _ in 1:6]
750+
dense = [zero(rate_prototype) for _ in 1:size(tab.H, 1)]
751+
ks = [zero(rate_prototype) for _ in 1:size(tab.A, 1)]
747752
du = zero(rate_prototype)
748753
du1 = zero(rate_prototype)
749754
du2 = zero(rate_prototype)
@@ -762,7 +767,6 @@ function alg_cache(alg::Union{Rodas4, Rodas42, Rodas4P, Rodas4P2},
762767
recursivefill!(atmp, false)
763768
weight = similar(u, uEltypeNoUnits)
764769
recursivefill!(weight, false)
765-
tab = tabtype(alg)(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits))
766770

767771
tf = TimeGradientWrapper(f, uprev, p)
768772
uf = UJacobianWrapper(f, t, p)
@@ -785,120 +789,9 @@ function alg_cache(alg::Union{Rodas4, Rodas42, Rodas4P, Rodas4P2},
785789
u, uprev, dense, du, du1, du2, ks, fsalfirst, fsallast,
786790
dT, J, W, tmp, atmp, weight, tab, tf, uf, linsolve_tmp,
787791
linsolve, jac_config, grad_config, reltol, alg,
788-
alg.step_limiter!, alg.stage_limiter!, 4)
789-
end
790-
791-
################################################################################
792-
793-
### Rosenbrock5
794-
795-
function alg_cache(alg::Rodas5, u, rate_prototype, ::Type{uEltypeNoUnits},
796-
::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t,
797-
dt, reltol, p, calck,
798-
::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits}
799-
dense = [zero(rate_prototype) for _ in 1:3]
800-
du = zero(rate_prototype)
801-
du1 = zero(rate_prototype)
802-
du2 = zero(rate_prototype)
803-
ks = [zero(rate_prototype) for _ in 1:7]
804-
fsalfirst = zero(rate_prototype)
805-
fsallast = zero(rate_prototype)
806-
dT = zero(rate_prototype)
807-
J, W = build_J_W(alg, u, uprev, p, t, dt, f, uEltypeNoUnits, Val(true))
808-
tmp = zero(rate_prototype)
809-
atmp = similar(u, uEltypeNoUnits)
810-
recursivefill!(atmp, false)
811-
weight = similar(u, uEltypeNoUnits)
812-
recursivefill!(weight, false)
813-
tab = Rodas5Tableau(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits))
814-
815-
tf = TimeGradientWrapper(f, uprev, p)
816-
uf = UJacobianWrapper(f, t, p)
817-
linsolve_tmp = zero(rate_prototype)
818-
linprob = LinearProblem(W, _vec(linsolve_tmp); u0 = _vec(tmp))
819-
Pl, Pr = wrapprecs(
820-
alg.precs(W, nothing, u, p, t, nothing, nothing, nothing,
821-
nothing)..., weight, tmp)
822-
linsolve = init(linprob, alg.linsolve, alias_A = true, alias_b = true,
823-
Pl = Pl, Pr = Pr,
824-
assumptions = LinearSolve.OperatorAssumptions(true))
825-
grad_config = build_grad_config(alg, f, tf, du1, t)
826-
jac_config = build_jac_config(alg, f, uf, du1, uprev, u, tmp, du2)
827-
RosenbrockCache(u, uprev, dense, du, du1, du2, ks,
828-
fsalfirst, fsallast, dT, J, W, tmp, atmp, weight, tab, tf, uf,
829-
linsolve_tmp,
830-
linsolve, jac_config, grad_config, reltol, alg, alg.step_limiter!,
831-
alg.stage_limiter!, 5)
832-
end
833-
834-
function alg_cache(alg::Rodas5, u, rate_prototype, ::Type{uEltypeNoUnits},
835-
::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t,
836-
dt, reltol, p, calck,
837-
::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits}
838-
tf = TimeDerivativeWrapper(f, u, p)
839-
uf = UDerivativeWrapper(f, t, p)
840-
J, W = build_J_W(alg, u, uprev, p, t, dt, f, uEltypeNoUnits, Val(false))
841-
linprob = nothing #LinearProblem(W,copy(u); u0=copy(u))
842-
linsolve = nothing #init(linprob,alg.linsolve,alias_A=true,alias_b=true)
843-
RosenbrockCombinedConstantCache(tf, uf,
844-
Rodas5Tableau(constvalue(uBottomEltypeNoUnits),
845-
constvalue(tTypeNoUnits)), J, W, linsolve, alg_autodiff(alg), 5)
792+
alg.step_limiter!, alg.stage_limiter!, size(tab.H, 1))
846793
end
847794

848-
function alg_cache(
849-
alg::Union{Rodas5P, Rodas5Pe, Rodas5Pr}, u, rate_prototype, ::Type{uEltypeNoUnits},
850-
::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t,
851-
dt, reltol, p, calck,
852-
::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits}
853-
dense = [zero(rate_prototype) for _ in 1:3]
854-
du = zero(rate_prototype)
855-
du1 = zero(rate_prototype)
856-
du2 = zero(rate_prototype)
857-
ks = [zero(rate_prototype) for _ in 1:8]
858-
fsalfirst = zero(rate_prototype)
859-
fsallast = zero(rate_prototype)
860-
dT = zero(rate_prototype)
861-
J, W = build_J_W(alg, u, uprev, p, t, dt, f, uEltypeNoUnits, Val(true))
862-
tmp = zero(rate_prototype)
863-
atmp = similar(u, uEltypeNoUnits)
864-
recursivefill!(atmp, false)
865-
weight = similar(u, uEltypeNoUnits)
866-
recursivefill!(weight, false)
867-
tab = Rodas5PTableau(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits))
868-
869-
tf = TimeGradientWrapper(f, uprev, p)
870-
uf = UJacobianWrapper(f, t, p)
871-
linsolve_tmp = zero(rate_prototype)
872-
linprob = LinearProblem(W, _vec(linsolve_tmp); u0 = _vec(tmp))
873-
Pl, Pr = wrapprecs(
874-
alg.precs(W, nothing, u, p, t, nothing, nothing, nothing,
875-
nothing)..., weight, tmp)
876-
linsolve = init(linprob, alg.linsolve, alias_A = true, alias_b = true,
877-
Pl = Pl, Pr = Pr,
878-
assumptions = LinearSolve.OperatorAssumptions(true))
879-
grad_config = build_grad_config(alg, f, tf, du1, t)
880-
jac_config = build_jac_config(alg, f, uf, du1, uprev, u, tmp, du2)
881-
RosenbrockCache(u, uprev, dense, du, du1, du2, ks,
882-
fsalfirst, fsallast, dT, J, W, tmp, atmp, weight, tab, tf, uf,
883-
linsolve_tmp,
884-
linsolve, jac_config, grad_config, reltol, alg, alg.step_limiter!,
885-
alg.stage_limiter!, 5)
886-
end
887-
888-
function alg_cache(
889-
alg::Union{Rodas5P, Rodas5Pe, Rodas5Pr}, u, rate_prototype, ::Type{uEltypeNoUnits},
890-
::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t,
891-
dt, reltol, p, calck,
892-
::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits}
893-
tf = TimeDerivativeWrapper(f, u, p)
894-
uf = UDerivativeWrapper(f, t, p)
895-
J, W = build_J_W(alg, u, uprev, p, t, dt, f, uEltypeNoUnits, Val(false))
896-
linprob = nothing #LinearProblem(W,copy(u); u0=copy(u))
897-
linsolve = nothing #init(linprob,alg.linsolve,alias_A=true,alias_b=true)
898-
RosenbrockCombinedConstantCache(tf, uf,
899-
Rodas5PTableau(constvalue(uBottomEltypeNoUnits),
900-
constvalue(tTypeNoUnits)), J, W, linsolve, alg_autodiff(alg), 5)
901-
end
902795

903796
function get_fsalfirstlast(
904797
cache::Union{Rosenbrock23Cache, Rosenbrock32Cache, Rosenbrock33Cache,

lib/OrdinaryDiffEqRosenbrock/src/rosenbrock_interpolants.jl

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ From MATLAB ODE Suite by Shampine
131131
Θ, dt, y₀, y₁, k, cache::Union{RosenbrockCombinedConstantCache, Rodas23WConstantCache, Rodas3PConstantCache, RosenbrockCache, Rodas23WCache, Rodas3PCache},
132132
idxs::Nothing, T::Type{Val{0}}, differential_vars)
133133
Θ1 = 1 - Θ
134-
if !isdefined(cache, :order) || cache.order == 4
134+
if !hasproperty(cache, :interp_order) || cache.interp_order == 2
135135
@.. Θ1 * y₀+Θ * (y₁ + Θ1 * (k[1] + Θ * k[2]))
136136
else
137137
@.. Θ1 * y₀+Θ * (y₁ + Θ1 * (k[1] + Θ * (k[2] + Θ * k[3])))
@@ -143,7 +143,7 @@ end
143143
Rodas23WCache, Rodas3PConstantCache, Rodas3PCache},
144144
idxs, T::Type{Val{0}}, differential_vars)
145145
Θ1 = 1 - Θ
146-
if !isdefined(cache, :order) || cache.order == 4
146+
if !hasproperty(cache, :interp_order) || cache.interp_order == 2
147147
@views @.. Θ1 * y₀[idxs]+Θ * (y₁[idxs] + Θ1 * (k[1][idxs] + Θ * k[2][idxs]))
148148
else
149149
@views @.. Θ1 * y₀[idxs]+Θ * (y₁[idxs] + Θ1 * (k[1][idxs] + Θ * (k[2][idxs] + Θ * k[3][idxs])))
@@ -155,7 +155,7 @@ end
155155
Rodas23WCache, Rodas3PConstantCache, Rodas3PCache},
156156
idxs::Nothing, T::Type{Val{0}}, differential_vars)
157157
Θ1 = 1 - Θ
158-
if !isdefined(cache, :order) || cache.order == 4
158+
if !hasproperty(cache, :interp_order) || cache.interp_order == 2
159159
@.. out=Θ1 * y₀ + Θ * (y₁ + Θ1 * (k[1] + Θ * k[2]))
160160
else
161161
@.. out=Θ1 * y₀ + Θ * (y₁ + Θ1 * (k[1] + Θ * (k[2] + Θ * k[3])))
@@ -168,7 +168,7 @@ end
168168
Rodas23WCache, Rodas3PConstantCache, Rodas3PCache},
169169
idxs, T::Type{Val{0}}, differential_vars)
170170
Θ1 = 1 - Θ
171-
if !isdefined(cache, :order) || cache.order == 4
171+
if !hasproperty(cache, :interp_order) || cache.interp_order == 2
172172
@views @.. out=Θ1 * y₀[idxs] + Θ * (y₁[idxs] + Θ1 * (k[1][idxs] + Θ * k[2][idxs]))
173173
else
174174
@views @.. Θ1 * y₀[idxs]+Θ * (y₁[idxs] +
@@ -181,32 +181,32 @@ end
181181
@muladd function _ode_interpolant(
182182
Θ, dt, y₀, y₁, k, cache::Union{RosenbrockCache, Rodas23WCache, Rodas3PCache, RosenbrockCombinedConstantCache, Rodas23WConstantCache, Rodas3PConstantCache},
183183
idxs::Nothing, T::Type{Val{1}}, differential_vars)
184-
if !isdefined(cache, :order) || cache.order == 4
184+
if !hasproperty(cache, :interp_order) || cache.interp_order == 2
185185
@.. (k[1] + Θ * (-2 * k[1] + 2 * k[2] - 3 * k[2] * Θ) - y₀ + y₁)/dt
186186
else
187-
@.. (k[1][idxs] + Θ * (-2 * k[1][idxs] + 2 * k[2][idxs] +
188-
Θ * (-3 * k[2][idxs] + 3 * k[3][idxs] - 4 * Θ * k[3][idxs])) -
189-
y₀[idxs] + y₁[idxs])/dt
187+
@.. (k[1] + Θ * (-2 * k[1] + 2 * k[2] +
188+
Θ * (-3 * k[2] + 3 * k[3] - 4 * Θ * k[3])) -
189+
y₀ + y₁)/dt
190190
end
191191
end
192192
@muladd function _ode_interpolant(Θ, dt, y₀, y₁, k,
193193
cache::Union{RosenbrockCombinedConstantCache, RosenbrockCache, Rodas23WConstantCache,
194194
Rodas23WCache, Rodas3PConstantCache, Rodas3PCache},
195195
idxs, T::Type{Val{1}}, differential_vars)
196-
if !isdefined(cache, :order) || cache.order == 4
196+
if !hasproperty(cache, :interp_order) || cache.interp_order == 2
197197
@views @.. (k[1][idxs] + Θ * (-2 * k[1][idxs] + 2 * k[2][idxs] - 3 * k[2][idxs] * Θ) -
198198
y₀[idxs] + y₁[idxs])/dt
199199
else
200-
@views @.. (k[1] + Θ * (-2 * k[1] + 2 * k[2] +
201-
Θ * (-3 * k[2] + 3 * k[3] - 4 * Θ * k[3])) - y₀ + y₁)/dt
200+
@views @.. (k[1][idxs] + Θ * (-2 * k[1][idxs] + 2 * k[2][idxs] +
201+
Θ * (-3 * k[2][idxs] + 3 * k[3][idxs] - 4 * Θ * k[3][idxs])) - y₀[idxs] + y₁[idxs])/dt
202202
end
203203
end
204204

205205
@muladd function _ode_interpolant!(out, Θ, dt, y₀, y₁, k,
206206
cache::Union{RosenbrockCombinedConstantCache, RosenbrockCache, Rodas23WConstantCache,
207207
Rodas23WCache, Rodas3PConstantCache, Rodas3PCache},
208208
idxs::Nothing, T::Type{Val{1}}, differential_vars)
209-
if !isdefined(cache, :order) || cache.order == 4
209+
if !hasproperty(cache, :interp_order) || cache.interp_order == 2
210210
@.. out=(k[1] + Θ * (-2 * k[1] + 2 * k[2] - 3 * k[2] * Θ) - y₀ + y₁) / dt
211211
else
212212
@.. out=(k[1] + Θ * (-2 * k[1] + 2 * k[2] +
@@ -219,7 +219,7 @@ end
219219
cache::Union{RosenbrockCombinedConstantCache, RosenbrockCache, Rodas23WConstantCache,
220220
Rodas23WCache, Rodas3PConstantCache, Rodas3PCache},
221221
idxs, T::Type{Val{1}}, differential_vars)
222-
if !isdefined(cache, :order) || cache.order == 4
222+
if !hasproperty(cache, :interp_order) || cache.interp_order == 2
223223
@views @.. out=(k[1][idxs] +
224224
Θ *
225225
(-2 * k[1][idxs] + 2 * k[2][idxs] -

lib/OrdinaryDiffEqRosenbrock/src/rosenbrock_perform_step.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1203,7 +1203,7 @@ end
12031203
#### Rodas4 type method
12041204

12051205
function initialize!(integrator, cache::RosenbrockCombinedConstantCache)
1206-
integrator.kshortsize = cache.order == 5 ? 3 : 2
1206+
integrator.kshortsize = size(cache.tab.H, 1)
12071207
integrator.k = typeof(integrator.k)(undef, integrator.kshortsize)
12081208
# Avoid undefined entries if k is an array of arrays
12091209
for i in 1:integrator.kshortsize
@@ -1307,7 +1307,7 @@ end
13071307
end
13081308

13091309
function initialize!(integrator, cache::RosenbrockCache)
1310-
integrator.kshortsize = cache.order == 5 ? 3 : 2
1310+
integrator.kshortsize = size(cache.tab.H, 1)
13111311
resize!(integrator.k, integrator.kshortsize)
13121312
for i in 1:integrator.kshortsize
13131313
integrator.k[i] = cache.dense[i]

lib/OrdinaryDiffEqRosenbrock/src/rosenbrock_tableaus.jl

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -338,13 +338,13 @@ function Rodas5Tableau(T, T2)
338338
-14.09640773051259 6.925207756232704 -41.47510893210728 2.343771018586405 24.13215229196062 1 1 0
339339
]
340340
C = T[
341-
0 0 0 0 0 0 0
342-
-10.31323885133993 0 0 0 0 0 0
343-
-21.04823117650003 -7.234992135176716 0 0 0 0 0
344-
32.22751541853323 -4.943732386540191 19.44922031041879 0 0 0 0
345-
-20.69865579590063 -8.816374604402768 1.260436877740897 -0.7495647613787146 0 0 0
346-
-46.22004352711257 -17.49534862857472 -289.6389582892057 93.60855400400906 318.3822534212147 0 0
347-
34.20013733472935 -14.15535402717690 57.82335640988400 25.83362985412365 1.408950972071624 -6.551835421242162 0
341+
0 0 0 0 0 0 0
342+
-10.31323885133993 0 0 0 0 0 0
343+
-21.04823117650003 -7.234992135176716 0 0 0 0 0
344+
32.22751541853323 -4.943732386540191 19.44922031041879 0 0 0 0
345+
-20.69865579590063 -8.816374604402768 1.260436877740897 -0.7495647613787146 0 0 0
346+
-46.22004352711257 -17.49534862857472 -289.6389582892057 93.60855400400906 318.3822534212147 0 0
347+
34.20013733472935 -14.15535402717690 57.82335640988400 25.83362985412365 1.408950972071624 -6.551835421242162 0
348348
42.57076742291101 -13.80770672017997 93.98938432427124 18.77919633714503 -31.58359187223370 -6.685968952921985 -5.810979938412932
349349
]
350350
c = T2[0, 0.38, 0.3878509998321533, 0.4839718937873840, 0.4570477008819580, 1, 1, 1]
@@ -380,7 +380,7 @@ function Rodas5Tableau(T, T2)
380380
b7 = convert(T,1)
381381
b8 = convert(T,1)
382382
=#
383-
RodasTableau(A, C, gamma, d, c, H)
383+
RodasTableau(A, C, gamma, c, d, H)
384384
end
385385

386386
function Rodas5PTableau(T, T2)
@@ -396,13 +396,13 @@ function Rodas5PTableau(T, T2)
396396
-7.502846399306121 2.561846144803919 -11.627539656261098 -0.18268767659942256 0.030198172008377946 1 1 0
397397
]
398398
C = T[
399-
0 0 0 0 0 0 0
400-
-14.155112264123755 0 0 0 0 0 0
401-
-17.97296035885952 -2.859693295451294 0 0 0 0 0
402-
147.12150275711716 -1.41221402718213 71.68940251302358 0 0 0 0
403-
165.43517024871676 -0.4592823456491126 42.90938336958603 -5.961986721573306 0 0 0
404-
24.854864614690072 -3.0009227002832186 47.4931110020768 5.5814197821558125 -0.6610691825249471 0 0
405-
30.91273214028599 -3.1208243349937974 77.79954646070892 34.28646028294783 -19.097331116725623 -28.087943162872662 0
399+
0 0 0 0 0 0 0
400+
-14.155112264123755 0 0 0 0 0 0
401+
-17.97296035885952 -2.859693295451294 0 0 0 0 0
402+
147.12150275711716 -1.41221402718213 71.68940251302358 0 0 0 0
403+
165.43517024871676 -0.4592823456491126 42.90938336958603 -5.961986721573306 0 0 0
404+
24.854864614690072 -3.0009227002832186 47.4931110020768 5.5814197821558125 -0.6610691825249471 0 0
405+
30.91273214028599 -3.1208243349937974 77.79954646070892 34.28646028294783 -19.097331116725623 -28.087943162872662 0
406406
37.80277123390563 -3.2571969029072276 112.26918849496327 66.9347231244047 -40.06618937091002 -54.66780262877968 -9.48861652309627
407407
]
408408
c = T2[0, 0.6358126895828704, 0.4095798393397535, 0.9769306725060716, 0.4288403609558664, 1, 1, 1]
@@ -412,7 +412,7 @@ function Rodas5PTableau(T, T2)
412412
-9.91568850695171 -0.9689944594115154 3.0438037242978453 -24.495224566215796 20.176138334709044 15.98066361424651 -6.789040303419874 -6.710236069923372
413413
11.419903575922262 2.8879645146136994 72.92137995996029 80.12511834622643 -52.072871366152654 -59.78993625266729 -0.15582684282751913 4.883087185713722
414414
]
415-
RodasTableau(A, C, gamma, d, c, H)
415+
RodasTableau(A, C, gamma, c, d, H)
416416
end
417417

418418
@RosenbrockW6S4OS(:tableau)

0 commit comments

Comments
 (0)