Mercurial > repos > public > sbplib_julia
annotate test/SimpleTimeSteppers/SimpleTimeSteppers_test.jl @ 862:a382942e5437 feature/subpackage_simple_timesteppers
Add a few simple timesteppers
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Tue, 18 Jan 2022 15:29:54 +0100 |
parents | |
children |
rev | line source |
---|---|
862
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
1 using Test |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
2 using Sbplib.SimpleTimeSteppers |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
3 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
4 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
5 @testset "rk4" begin |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
6 ode_solutions = @NamedTuple{F,v}.([ |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
7 ((v,t) -> 0., (v₀,t₀,t) -> v₀), |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
8 ((v,t) -> 1., (v₀,t₀,t) -> v₀+t-t₀), |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
9 ((v,t) -> t, (v₀,t₀,t) -> v₀+(t^2-t₀^2)/2), |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
10 ((v,t) -> v, (v₀,t₀,t) -> v₀*exp(t-t₀)), |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
11 ((v,t) -> t*v, (v₀,t₀,t) -> v₀*exp((t^2-t₀^2)/2)), |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
12 ]) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
13 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
14 @testset "Exact" begin |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
15 @testset for i ∈ eachindex(ode_solutions[1:3]) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
16 F, v = ode_solutions[i] |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
17 cases = @NamedTuple{v₀,t₀}.([ |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
18 (0.,0.), |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
19 (0.,1.), |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
20 (1.,0.), |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
21 (1.,1.), |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
22 (2.,0.), |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
23 (0.,2.), |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
24 (2.,2.), |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
25 ]) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
26 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
27 @testset for (v₀,t₀) ∈ cases |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
28 @testset for Δt ∈ [0., 1., .5, 2.] |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
29 @test rk4(F, v₀, t₀, Δt) == v(v₀, t₀, t₀+Δt) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
30 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
31 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
32 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
33 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
34 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
35 @testset "Approximate" begin |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
36 @testset for i ∈ eachindex(ode_solutions) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
37 F, v = ode_solutions[i] |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
38 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
39 @testset for v₀ ∈ [1., .5] ,t₀ ∈ [0., 1.] |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
40 Δt = 0.1 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
41 @test rk4(F, v₀, t₀, Δt) ≈ v(v₀, t₀, t₀+Δt) rtol=1e-6 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
42 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
43 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
44 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
45 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
46 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
47 @testset "rkn4" begin |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
48 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
49 function damped_oscillator(v₀, v̇₀,t₀,t; ζ) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
50 ω = sqrt(1-ζ^2) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
51 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
52 C = v̇₀ + ζ*v₀ |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
53 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
54 V = v₀*cos(ω*(t-t₀)) + C*sin(ω*(t-t₀)) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
55 V̇ = C*cos(ω*(t-t₀)) - v₀*sin(ω*(t-t₀)) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
56 v = exp(-ζ*(t-t₀))*V |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
57 v̇ = -ζ*exp(-ζ*(t-t₀))*V + exp(-ζ*(t-t₀))*V̇ |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
58 return v, v̇ |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
59 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
60 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
61 ode_solutions = @NamedTuple{F,vv̇}.([ |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
62 ((v,v̇,t) -> 0., (v₀,v̇₀,t₀,t) -> (v₀ + (t-t₀)*v̇₀, v̇₀)), |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
63 ((v,v̇,t) -> 1., (v₀,v̇₀,t₀,t) -> (v₀ + (t-t₀)*v̇₀ + (t-t₀)^2/2, v̇₀ + t - t₀)), |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
64 ((v,v̇,t) -> t, (v₀,v̇₀,t₀,t) -> (v₀ + (t-t₀)*v̇₀ + (t-t₀)^3/6+ t₀/2*(t-t₀)^2, v̇₀ + (t^2-t₀^2)/2)), |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
65 ((v,v̇,t) -> -v, (v₀,v̇₀,t₀,t) -> (v₀*cos(t-t₀) + v̇₀*sin(t-t₀), v̇₀*cos(t-t₀) - v₀*sin(t-t₀))), |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
66 ((v,v̇,t) -> -v-6/5*v̇, (v₀,v̇₀,t₀,t) -> damped_oscillator(v₀,v̇₀,t₀,t; ζ=3/5)), |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
67 ]) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
68 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
69 @testset "Exact" begin |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
70 @testset for i ∈ eachindex(ode_solutions[1:3]) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
71 F, vv̇ = ode_solutions[i] |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
72 @testset for v₀ ∈ [0., 1., 2.], v̇₀ ∈ [0., 1.], t₀ ∈ [0.,1.,2.] |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
73 @testset for Δt ∈ [0., 1., .5, 2.] |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
74 V,V̇ = rkn4(F, v₀, v̇₀, t₀, Δt) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
75 v,v̇ = vv̇(v₀, v̇₀, t₀, t₀+Δt) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
76 @test V ≈ v rtol=1e-15 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
77 @test V̇ ≈ v̇ rtol=1e-15 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
78 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
79 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
80 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
81 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
82 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
83 @testset "Approximate" begin |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
84 @testset for i ∈ eachindex(ode_solutions) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
85 F, vv̇ = ode_solutions[i] |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
86 @testset for v̇₀ ∈ [0., 0.5], v₀ ∈ [1., 0.5], t₀∈[0.,1.] |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
87 Δt = 0.1 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
88 V,V̇ = rkn4(F, v₀, v̇₀, t₀, Δt) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
89 v,v̇ = vv̇(v₀, v̇₀, t₀, t₀+Δt) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
90 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
91 if i != 5 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
92 @test V ≈ v rtol=1e-6 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
93 @test V̇ ≈ v̇ rtol=1e-6 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
94 else |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
95 # TODO: Is this a bug or reasonable? |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
96 @test_broken V ≈ v rtol=1e-6 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
97 @test_broken V̇ ≈ v̇ rtol=1e-6 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
98 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
99 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
100 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
101 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
102 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
103 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
104 @testset "cdiff" begin |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
105 ode_solutions = @NamedTuple{F,vv̇}.([ |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
106 ((v,t) -> 0., (v₀,v̇₀,t₀,t) -> v₀ + (t-t₀)*v̇₀), |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
107 ((v,t) -> 1., (v₀,v̇₀,t₀,t) -> v₀ + (t-t₀)*v̇₀ + (t-t₀)^2/2), |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
108 ((v,t) -> t, (v₀,v̇₀,t₀,t) -> v₀ + (t-t₀)*v̇₀ + (t-t₀)^3/6+ t₀/2*(t-t₀)^2), |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
109 ((v,t) -> -v, (v₀,v̇₀,t₀,t) -> v₀*cos(t-t₀) + v̇₀*sin(t-t₀)), |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
110 ]) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
111 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
112 @testset "Exact" begin |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
113 @testset for i ∈ eachindex(ode_solutions[1:3]) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
114 F, v = ode_solutions[i] |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
115 @testset for v₀ ∈ [1., 2.], v̇₀ ∈ [0., 1.], t₀ ∈ [0.,1.,2.] |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
116 @testset for Δt ∈ [0., 1., .5] |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
117 v₋₁ = v(v₀, v̇₀, t₀, t₀-Δt) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
118 v₁ = v(v₀, v̇₀, t₀, t₀+Δt) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
119 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
120 V₁, V₀ = centered_2nd_order_fd(F, v₀, v₋₁, t₀, Δt) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
121 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
122 @test V₁ ≈ v₁ rtol=1e-15 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
123 @test V₀ ≈ v₀ rtol=1e-15 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
124 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
125 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
126 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
127 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
128 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
129 @testset "Approximate" begin |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
130 @testset for i ∈ eachindex(ode_solutions) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
131 F, v = ode_solutions[i] |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
132 @testset for v̇₀ ∈ [0., 0.5], v₀ ∈ [1., 0.5], t₀ ∈ [0.,1.] |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
133 Δt = 0.1 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
134 v₋₁ = v(v₀, v̇₀, t₀, t₀-Δt) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
135 v₁ = v(v₀, v̇₀, t₀, t₀+Δt) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
136 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
137 V₁, V₀ = centered_2nd_order_fd(F, v₀, v₋₁, t₀, Δt) |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
138 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
139 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
140 @test V₁ ≈ v₁ rtol=1e-5 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
141 @test V₀ ≈ v₀ rtol=1e-5 |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
142 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
143 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
144 end |
a382942e5437
Add a few simple timesteppers
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
145 end |