Skip to content

Commit 4db47f5

Browse files
github-actions[bot]CompatHelper JuliaSKopeczJoshuaLampertranocha
authored
CompatHelper: bump compat for PrettyTables to 3 for package docs, (keep existing compat) (#169)
* CompatHelper: bump compat for PrettyTables to 3 for package docs, (keep existing compat) * use pretty_table v3 api * Update docs/Project.toml Co-authored-by: Joshua Lampert <51029046+JoshuaLampert@users.noreply.github.com> * Update docs/src/convergence.md Co-authored-by: Joshua Lampert <51029046+JoshuaLampert@users.noreply.github.com> * use tables with less columns * bugfix * Update convergence.md * bugfix * bugfix & revision * Only 3 MPDeC algs in one table --------- Co-authored-by: CompatHelper Julia <compathelper_noreply@julialang.org> Co-authored-by: Stefan Kopecz <SKopecz@users.noreply.github.com> Co-authored-by: Joshua Lampert <51029046+JoshuaLampert@users.noreply.github.com> Co-authored-by: Hendrik Ranocha <ranocha@users.noreply.github.com>
1 parent 5a27cb6 commit 4db47f5

2 files changed

Lines changed: 47 additions & 23 deletions

File tree

docs/Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,6 @@ OrdinaryDiffEqTsit5 = "1.1"
3838
OrdinaryDiffEqVerner = "1.1"
3939
Pkg = "1"
4040
Plots = "1"
41-
PrettyTables = "2.4.0"
41+
PrettyTables = "3"
4242
SparseArrays = "1"
4343
StaticArrays = "1.9.7"

docs/src/convergence.md

Lines changed: 46 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ function convergence_table(dts, prob, algs, labels, test_setup)
6363
6464
# print table
6565
formatter = (v, i, j) -> (j>1) ? (@sprintf "%5.2e (%4.2f) " v[1] v[2]) : (@sprintf "%5.2e " v)
66-
pretty_table(data, formatters = formatter, header = ["Δt"; labels])
66+
pretty_table(data; formatters = [formatter], column_labels = ["Δt"; labels])
6767
end
6868
6969
nothing # hide
@@ -78,21 +78,28 @@ First, we test several second-order and third-order MPRK schemes.
7878
dts = 0.5 .^ (5:10)
7979
8080
# select 2nd order schemes
81-
algs2 = [MPRK22(0.5); MPRK22(2.0 / 3.0); MPRK22(1.0); SSPMPRK22(0.5, 1.0); MPDeC(2)]
82-
labels2 = ["MPRK22(0.5)"; "MPRK22(2.0/3.0)"; "MPRK22(1.0)"; "SSPMPRK22(0.5, 1.0)"; "MPDeC(2)"]
81+
algs2a = [MPRK22(0.5); MPRK22(2.0 / 3.0); MPRK22(1.0)]
82+
labels2a = ["MPRK22(0.5)"; "MPRK22(2.0/3.0)"; "MPRK22(1.0)"]
83+
algs2b = [SSPMPRK22(0.5, 1.0); MPDeC(2)]
84+
labels2b = ["SSPMPRK22(0.5, 1.0)"; "MPDeC(2)"]
8385
8486
# select 3rd order schemes
85-
algs3 = [MPRK43I(1.0, 0.5); MPRK43I(0.5, 0.75); MPRK43II(0.5); MPRK43II(2.0 / 3.0);
86-
SSPMPRK43(); MPDeC(3)]
87-
labels3 = ["MPRK43I(1.0,0.5)"; "MPRK43I(0.5, 0.75)"; "MPRK43II(0.5)"; "MPRK43II(2.0/3.0)";
88-
"SSPMPRK43()"; "MPDeC(3)"]
89-
90-
convergence_table(dts, prob, algs2, labels2, test_setup)
91-
92-
convergence_table(dts, prob, algs3, labels3, test_setup)
87+
algs3a = [MPRK43I(1.0, 0.5); MPRK43I(0.5, 0.75)]
88+
labels3a = ["MPRK43I(1.0,0.5)"; "MPRK43I(0.5, 0.75)"]
89+
algs3b = [MPRK43II(0.5); MPRK43II(2.0 / 3.0)]
90+
labels3b = [ "MPRK43II(0.5)"; "MPRK43II(2.0/3.0)"]
91+
algs3c = [SSPMPRK43(); MPDeC(3)]
92+
labels3c = ["SSPMPRK43()"; "MPDeC(3)"]
93+
94+
convergence_table(dts, prob, algs2a, labels2a, test_setup)
95+
convergence_table(dts, prob, algs2b, labels2b, test_setup)
96+
97+
convergence_table(dts, prob, algs3a, labels3a, test_setup)
98+
convergence_table(dts, prob, algs3b, labels3b, test_setup)
99+
convergence_table(dts, prob, algs3c, labels3c, test_setup)
93100
```
94101

95-
The table shows that all schemes converge as expected.
102+
The tables show that all schemes converge as expected.
96103

97104
### Higher-order MPRK schemes
98105

@@ -111,14 +118,20 @@ prob_d64 = ConservativePDSProblem(P, u0, tspan)
111118
dts_d64 = Double64(1/2) .^ (5:9)
112119
113120
# select higher-order schemes
114-
algs4 = [MPDeC(4); MPDeC(5); MPDeC(6); MPDeC(7); MPDeC(8); MPDeC(9); MPDeC(10)]
115-
labels4 = ["MPDeC(4)"; "MPDeC(5)"; "MPDeC(6)"; "MPDeC(7)"; "MPDeC(8)"; "MPDeC(9)"; "MPDeC(10)"]
121+
algs4a = [MPDeC(4); MPDeC(5); MPDeC(6)]
122+
labels4a = ["MPDeC(4)"; "MPDeC(5)"; "MPDeC(6)"]
123+
algs4b = [MPDeC(7); MPDeC(8)]
124+
labels4b = ["MPDeC(7)"; "MPDeC(8)"]
125+
algs4c = [MPDeC(9); MPDeC(10)]
126+
labels4c = ["MPDeC(9)"; "MPDeC(10)"]
116127
117128
# solver and tolerances to compute reference solution
118129
test_setup_d64 = Dict(:alg => Vern9(), :reltol => 1e-30, :abstol => 1e-30)
119130
120131
# compute errors and experimental order of convergence
121-
convergence_table(dts_d64, prob_d64, algs4, labels4, test_setup_d64)
132+
convergence_table(dts_d64, prob_d64, algs4a, labels4a, test_setup_d64)
133+
convergence_table(dts_d64, prob_d64, algs4b, labels4b, test_setup_d64)
134+
convergence_table(dts_d64, prob_d64, algs4c, labels4c, test_setup_d64)
122135
```
123136

124137
Again, all schemes show the expected converge order.
@@ -152,9 +165,12 @@ The following tables demonstrate that the chosen MPRK schemes converge as expect
152165
### Second-order and third-order MPRK schemes
153166

154167
```@example eoc
155-
convergence_table(dts, prob, algs2, labels2, test_setup)
168+
convergence_table(dts, prob, algs2a, labels2a, test_setup)
169+
convergence_table(dts, prob, algs2b, labels2b, test_setup)
156170
157-
convergence_table(dts, prob, algs3, labels3, test_setup)
171+
convergence_table(dts, prob, algs3a, labels3a, test_setup)
172+
convergence_table(dts, prob, algs3b, labels3b, test_setup)
173+
convergence_table(dts, prob, algs3c, labels3c, test_setup)
158174
```
159175

160176
### Higher-order MPRK schemes
@@ -165,7 +181,9 @@ P(u, p, t) = [0 cospi(t)^2 * u[2]; sinpi(2 * t)^2 * u[1] 0]
165181
D(u, p, t) = [cospi(2 * t)^2 * u[1]; sinpi(t)^2 * u[2]]
166182
prob_d64 = PDSProblem(P, D, [Double64(9)/10; Double64(1)/10], (Double64(0), Double64(1)))
167183
168-
convergence_table(dts_d64, prob_d64, algs4, labels4, test_setup_d64)
184+
convergence_table(dts_d64, prob_d64, algs4a, labels4a, test_setup_d64)
185+
convergence_table(dts_d64, prob_d64, algs4b, labels4b, test_setup_d64)
186+
convergence_table(dts_d64, prob_d64, algs4c, labels4c, test_setup_d64)
169187
```
170188

171189
## Order reduction
@@ -200,12 +218,18 @@ test_setup = Dict(:alg => Vern9(), :reltol => 1e-14, :abstol => 1e-14)
200218
201219
dts = 0.5 .^ (6:12)
202220
203-
convergence_table(dts, prob, algs2, labels2, test_setup)
204-
convergence_table(dts, prob, algs3, labels3, test_setup)
205-
convergence_table(dts, prob, algs4, labels4, test_setup)
221+
convergence_table(dts, prob, algs2a, labels2a, test_setup)
222+
convergence_table(dts, prob, algs2b, labels2b, test_setup)
223+
224+
convergence_table(dts, prob, algs3a, labels3a, test_setup)
225+
convergence_table(dts, prob, algs3b, labels3b, test_setup)
226+
convergence_table(dts, prob, algs3c, labels3c, test_setup)
206227
228+
convergence_table(dts, prob, algs4a, labels4a, test_setup)
229+
convergence_table(dts, prob, algs4b, labels4b, test_setup)
230+
convergence_table(dts, prob, algs4c, labels4c, test_setup)
207231
nothing # hide
208232
```
209233

210234
We find that all methods apart from MPDeC(``K``) methods with ``K ≥ 3`` converge as expected.
211-
The MPDeC(``K``) methods with ``K ≥ 3`` suffer from order reduction and show convergence order 2 instead of ``K``.
235+
The MPDeC(``K``) methods with ``K ≥ 3`` suffer from order reduction and show convergence order 2 instead of ``K``.

0 commit comments

Comments
 (0)