1
1
using OrdinaryDiffEqFIRK, DiffEqDevTools, Test, LinearAlgebra
2
- import ODEProblemLibrary: prob_ode_linear, prob_ode_2Dlinear, van
2
+ import ODEProblemLibrary: prob_ode_linear, prob_ode_2Dlinear, prob_ode_vanderpol
3
3
4
4
testTol = 0.5
5
5
@@ -40,26 +40,23 @@ for i in [5, 9, 13, 17, 21, 25], prob in [prob_ode_linear_big, prob_ode_2Dlinear
40
40
@test sim21. 𝒪est[:final ] ≈ i atol= testTol
41
41
end
42
42
43
+ sys = prob_ode_vanderpol. f. sys
44
+
43
45
# test adaptivity
44
46
for iip in (true , false )
45
- if iip
46
- vanstiff = ODEProblem {iip} (van, [0 ; sqrt (3 )], (0.0 , 1.0 ), 1e6 )
47
- else
48
- vanstiff = ODEProblem {false} ((u, p, t) -> van (u, p, t), [0 ; sqrt (3 )], (0.0 , 1.0 ),
49
- 1e6 )
50
- end
47
+ vanstiff = ODEProblem {iip} (sys, [sys. y => 0 , sys. x => sqrt (3 )], (0.0 , 1.0 ), [sys. μ => 1e6 ])
51
48
sol = solve (vanstiff, RadauIIA5 ())
52
49
if iip
53
50
@test sol. stats. naccept + sol. stats. nreject > sol. stats. njacs # J reuse
54
51
@test sol. stats. njacs < sol. stats. nw # W reuse
55
52
end
56
53
@test length (sol) < 150
57
- @test length (solve (remake (vanstiff, p = 1e7 ), RadauIIA5 ())) < 150
58
- @test length (solve (remake (vanstiff, p = 1e7 ), reltol = [1e-4 , 1e-6 ], RadauIIA5 ())) < 180
59
- @test length (solve (remake (vanstiff, p = 1e7 ), RadauIIA5 (), reltol = 1e-9 ,
54
+ @test length (solve (remake (vanstiff, p = [sys . μ => 1e7 ] ), RadauIIA5 ())) < 150
55
+ @test length (solve (remake (vanstiff, p = [sys . μ => 1e7 ] ), reltol = [1e-6 , 1e-4 ], RadauIIA5 ())) < 180
56
+ @test length (solve (remake (vanstiff, p = [sys . μ => 1e7 ] ), RadauIIA5 (), reltol = 1e-9 ,
60
57
abstol = 1e-9 )) < 970
61
- @test length (solve (remake (vanstiff, p = 1e9 ), RadauIIA5 ())) < 170
62
- @test length (solve (remake (vanstiff, p = 1e10 ), RadauIIA5 ())) < 190
58
+ @test length (solve (remake (vanstiff, p = [sys . μ => 1e9 ] ), RadauIIA5 ())) < 170
59
+ @test length (solve (remake (vanstiff, p = [sys . μ => 1e10 ] ), RadauIIA5 ())) < 190
63
60
end
64
61
65
62
# #Tests for RadauIIA3
72
69
73
70
# test adaptivity
74
71
for iip in (true , false )
75
- if iip
76
- vanstiff = ODEProblem {iip} (van, [0 ; sqrt (3 )], (0.0 , 1.0 ), 1e6 )
77
- else
78
- vanstiff = ODEProblem {false} ((u, p, t) -> van (u, p, t), [0 ; sqrt (3 )], (0.0 , 1.0 ),
79
- 1e6 )
80
- end
72
+ vanstiff = ODEProblem {iip} (sys, [sys. y => 0 , sys. x => sqrt (3 )], (0.0 , 1.0 ), [sys. μ => 1e6 ])
81
73
sol = solve (vanstiff, RadauIIA3 ())
82
74
if iip
83
75
@test sol. stats. naccept + sol. stats. nreject > sol. stats. njacs # J reuse
84
76
@test sol. stats. njacs < sol. stats. nw # W reuse
85
77
end
86
78
@test length (sol) < 5000 # the error estimate is not very good
87
- end
79
+ end
0 commit comments