Skip to content

Commit 0ffc04d

Browse files
GodotMisogiGodotMisogi
authored andcommitted
Some KenCarp tests working
1 parent 90bfa8e commit 0ffc04d

File tree

2 files changed

+37
-63
lines changed

2 files changed

+37
-63
lines changed

benchmarks/SimpleHandwrittenPDE/kdv_fdm_wpd.jmd

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -91,25 +91,24 @@ plt = heatmap(xs, tslices, ys', xlabel="x", ylabel="t")
9191
Dense/banded linear solvers.
9292

9393
```julia
94-
abstols = 0.1 .^ (7:13)
95-
reltols = 0.1 .^ (4:10)
96-
multipliers = 0.5 .^ (0:6)
94+
abstols = 0.1 .^ (7:10)
95+
reltols = 0.1 .^ (4:7)
9796
setups = [
9897
# KenCarp methods take forever with adaptive timestepping for some reason
99-
# Dict(:alg => KenCarp3(), :dts => 1e-3 * multipliers),
100-
# Dict(:alg => KenCarp4(), :dts => 1e-3 * multipliers),
101-
# Dict(:alg => KenCarp5(), :dts => 1e-3 * multipliers),
102-
Dict(:alg => ARKODE(Sundials.Implicit(), order=3, linear_solver=:Band, jac_upper=1, jac_lower=1)),
103-
Dict(:alg => ARKODE(Sundials.Implicit(), order=4, linear_solver=:Band, jac_upper=1, jac_lower=1)),
104-
Dict(:alg => ARKODE(Sundials.Implicit(), order=5, linear_solver=:Band, jac_upper=1, jac_lower=1))
98+
Dict(:alg => KenCarp3()),
99+
Dict(:alg => KenCarp4()),
100+
Dict(:alg => KenCarp5()),
101+
# Dict(:alg => ARKODE(Sundials.Implicit(), order=3, linear_solver=:Band, jac_upper=1, jac_lower=1)),
102+
# Dict(:alg => ARKODE(Sundials.Implicit(), order=4, linear_solver=:Band, jac_upper=1, jac_lower=1)),
103+
# Dict(:alg => ARKODE(Sundials.Implicit(), order=5, linear_solver=:Band, jac_upper=1, jac_lower=1))
105104
]
106105
labels = hcat(
107-
# "KenCarp3",
108-
# "KenCarp4",
109-
# "KenCarp5",
110-
"ARKODE3",
111-
"ARKODE4",
112-
"ARKODE5",
106+
"KenCarp3",
107+
"KenCarp4",
108+
"KenCarp5",
109+
# "ARKODE3",
110+
# "ARKODE4",
111+
# "ARKODE5",
113112
)
114113
@time wp = WorkPrecisionSet(prob, abstols, reltols, setups;
115114
print_names=true, names=labels, numruns=5, error_estimate=:l2,
@@ -120,21 +119,21 @@ plot(wp, label=labels, markershape=:auto, title="IMEX Methods, Band Linsolve, Lo
120119

121120
Krylov linear solvers.
122121
```julia
123-
abstols = 0.1 .^ (7:13)
124-
reltols = 0.1 .^ (4:10)
122+
abstols = 0.1 .^ (7:10)
123+
reltols = 0.1 .^ (4:7)
125124
setups = [
126125
# KenCarp methods take forever with adaptive timestepping for some reason
127-
# Dict(:alg => KenCarp3(linsolve=KrylovJL_GMRES())),
128-
# Dict(:alg => KenCarp4(linsolve=KrylovJL_GMRES())),
129-
# Dict(:alg => KenCarp5(linsolve=KrylovJL_GMRES())),
126+
Dict(:alg => KenCarp3(linsolve=KrylovJL_GMRES())),
127+
Dict(:alg => KenCarp4(linsolve=KrylovJL_GMRES())),
128+
Dict(:alg => KenCarp5(linsolve=KrylovJL_GMRES())),
130129
Dict(:alg => ARKODE(Sundials.Implicit(), order=3, linear_solver=:GMRES)),
131130
Dict(:alg => ARKODE(Sundials.Implicit(), order=4, linear_solver=:GMRES)),
132131
Dict(:alg => ARKODE(Sundials.Implicit(), order=5, linear_solver=:GMRES)),
133132
]
134133
labels = hcat(
135-
# "KenCarp3",
136-
# "KenCarp4",
137-
# "KenCarp5",
134+
"KenCarp3",
135+
"KenCarp4",
136+
"KenCarp5",
138137
"ARKODE3",
139138
"ARKODE4",
140139
"ARKODE5",

benchmarks/SimpleHandwrittenPDE/kdv_spectral_wpd.jmd

Lines changed: 15 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -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)
9291
setups = [
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
]
130102
labels = 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)
224199
multipliers = 0.5 .^ (0:3)
225200
setups = [
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
]
233208
labels = 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

Comments
 (0)