@@ -84,56 +84,31 @@ plt = heatmap(xs, tslices, ys', xlabel = "x", ylabel = "t")
8484
8585#### Implicit-Explicit Methods
8686
87- Dense/banded linear solvers.
8887
8988```julia
90- abstols = 0.1 .^ (7:13 )
91- reltols = 0.1 .^ (4:10 )
89+ abstols = 0.1 .^ (7:10 )
90+ reltols = 0.1 .^ (4:7 )
9291setups = [
93- # KenCarp methods take forever with adaptive timestepping for some reason
94- # Dict(:alg => KenCarp3()),
92+ Dict(:alg => KenCarp3()),
9593 # Dict(:alg => KenCarp4()),
9694 # Dict(:alg => KenCarp5()),
97- # ARKODE with banded linear solves fail with adaptive timestepping for some reason
98- # Dict(:alg => ARKODE(Sundials.Implicit(), order=3, linear_solver=:Band, jac_upper=1, jac_lower=1)),
99- # Dict(:alg => ARKODE(Sundials.Implicit(), order=4, linear_solver=:Band, jac_upper=1, jac_lower=1)),
100- # Dict(:alg => ARKODE(Sundials.Implicit(), order=5, linear_solver=:Band, jac_upper=1, jac_lower=1))
101- ]
102- labels = hcat(
103- # "KenCarp3",
104- # "KenCarp4",
105- # "KenCarp5",
106- # "ARKODE3",
107- # "ARKODE4",
108- # "ARKODE5",
109- )
110- @time wp = WorkPrecisionSet(prob, abstols, reltols, setups;
111- print_names=true, names=labels, numruns=5, error_estimate=:l2,
112- save_everystep=false, appxsol=test_sol, maxiters=Int(1e5));
113-
114- plot(wp, label=labels, markershape=:auto, title="IMEX Methods, Band Linsolve, Low Tolerances")
115- ```
116-
117- Krylov linear solvers.
118- ```julia
119- abstols = 0.1 .^ (7:13)
120- reltols = 0.1 .^ (4:10)
121- setups = [
122- # KenCarp methods take forever with adaptive timestepping for some reason
123- # Dict(:alg => KenCarp3(linsolve=KrylovJL_GMRES())),
95+ Dict(:alg => KenCarp3(linsolve=KrylovJL_GMRES())),
12496 # Dict(:alg => KenCarp4(linsolve=KrylovJL_GMRES())),
12597 # Dict(:alg => KenCarp5(linsolve=KrylovJL_GMRES())),
12698 Dict(:alg => ARKODE(Sundials.Implicit(), order=3, linear_solver=:GMRES)),
12799 Dict(:alg => ARKODE(Sundials.Implicit(), order=4, linear_solver=:GMRES)),
128100 Dict(:alg => ARKODE(Sundials.Implicit(), order=5, linear_solver=:GMRES)),
129101]
130102labels = hcat(
131- # "KenCarp3",
103+ "KenCarp3",
132104 # "KenCarp4",
133105 # "KenCarp5",
134- "ARKODE3",
135- "ARKODE4",
136- "ARKODE5",
106+ "KenCarp3 (Krylov)",
107+ # "KenCarp4 (Krylov)",
108+ # "KenCarp5 (Krylov)",
109+ "ARKODE3 (Krylov)",
110+ "ARKODE4 (Krylov)",
111+ "ARKODE5 (Krylov)",
137112)
138113@time wp = WorkPrecisionSet(prob, abstols, reltols, setups;
139114 print_names=true, names=labels, numruns=5, error_estimate=:l2,
@@ -224,16 +199,16 @@ reltols = 0.1 .^ (1:4)
224199multipliers = 0.5 .^ (0:3)
225200setups = [
226201 Dict(:alg => NorsettEuler(), :dts => 1e-4 * multipliers),
227- # Dict(:alg => NorsettEuler(krylov=true, m=5), :dts => 1e-4 * multipliers),
228- # Dict(:alg => NorsettEuler(krylov=true, m=20), :dts => 1e-4 * multipliers),
202+ Dict(:alg => NorsettEuler(krylov=true, m=5), :dts => 1e-4 * multipliers),
203+ Dict(:alg => NorsettEuler(krylov=true, m=20), :dts => 1e-4 * multipliers),
229204 Dict(:alg => ETDRK2(), :dts => 1e-4 * multipliers),
230205 Dict(:alg => ETDRK2(krylov=true, m=5), :dts => 1e-4 * multipliers),
231206 Dict(:alg => ETDRK2(krylov=true, m=20), :dts => 1e-4 * multipliers)
232207]
233208labels = hcat(
234209 "NorsettEuler (caching)",
235- # "NorsettEuler (m=5)",
236- # "NorsettEuler (m=20)",
210+ "NorsettEuler (m=5)",
211+ "NorsettEuler (m=20)",
237212 "ETDRK2 (caching)",
238213 "ETDRK2 (m=5)",
239214 "ETDRK2 (m=20)"
0 commit comments