11using 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
33
44testTol = 0.5
55
@@ -40,26 +40,23 @@ for i in [5, 9, 13, 17, 21, 25], prob in [prob_ode_linear_big, prob_ode_2Dlinear
4040 @test sim21. 𝒪est[:final ] ≈ i atol= testTol
4141end
4242
43+ sys = prob_ode_vanderpol. f. sys
44+
4345# test adaptivity
4446for 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 ])
5148 sol = solve (vanstiff, RadauIIA5 ())
5249 if iip
5350 @test sol. stats. naccept + sol. stats. nreject > sol. stats. njacs # J reuse
5451 @test sol. stats. njacs < sol. stats. nw # W reuse
5552 end
5653 @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 ,
6057 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
6360end
6461
6562# #Tests for RadauIIA3
7269
7370# test adaptivity
7471for 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 ])
8173 sol = solve (vanstiff, RadauIIA3 ())
8274 if iip
8375 @test sol. stats. naccept + sol. stats. nreject > sol. stats. njacs # J reuse
8476 @test sol. stats. njacs < sol. stats. nw # W reuse
8577 end
8678 @test length (sol) < 5000 # the error estimate is not very good
87- end
79+ end
0 commit comments