Skip to content

Commit 0875e8e

Browse files
committed
add tests for static vector inputs
1 parent 4c4ab1d commit 0875e8e

File tree

1 file changed

+43
-10
lines changed

1 file changed

+43
-10
lines changed

test/sciml_problem_inputs.jl

Lines changed: 43 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
### Prepares Tests ###
22

33
# Fetch packages
4-
using ModelingToolkit, JumpProcesses, NonlinearSolve, OrdinaryDiffEq, SteadyStateDiffEq,
5-
StochasticDiffEq, Test
4+
using ModelingToolkit, JumpProcesses, NonlinearSolve, OrdinaryDiffEq, StaticArrays,
5+
SteadyStateDiffEq, StochasticDiffEq, Test
66
using ModelingToolkit: t_nounits as t, D_nounits as D
77

88
# Sets rnd number.
@@ -51,6 +51,12 @@ begin
5151
# Vectors providing default values.
5252
[X => 4, Y => 5, Z => 10],
5353
[osys.X => 4, osys.Y => 5, osys.Z => 10],
54+
# Static vectors not providing default values.
55+
SA[X => 4, Y => 5],
56+
SA[osys.X => 4, osys.Y => 5],
57+
# Static vectors providing default values.
58+
SA[X => 4, Y => 5, Z => 10],
59+
SA[osys.X => 4, osys.Y => 5, osys.Z => 10],
5460
# Dicts not providing default values.
5561
Dict([X => 4, Y => 5]),
5662
Dict([osys.X => 4, osys.Y => 5]),
@@ -72,6 +78,12 @@ begin
7278
# Vectors providing default values.
7379
[kp => 1.0, kd => 0.1, k1 => 0.25, k2 => 0.5, Z0 => 10],
7480
[osys.kp => 1.0, osys.kd => 0.1, osys.k1 => 0.25, osys.k2 => 0.5, osys.Z0 => 10],
81+
# Static vectors not providing default values.
82+
SA[kp => 1.0, kd => 0.1, k1 => 0.25, Z0 => 10],
83+
SA[osys.kp => 1.0, osys.kd => 0.1, osys.k1 => 0.25, osys.Z0 => 10],
84+
# Static vectors providing default values.
85+
SA[kp => 1.0, kd => 0.1, k1 => 0.25, k2 => 0.5, Z0 => 10],
86+
SA[osys.kp => 1.0, osys.kd => 0.1, osys.k1 => 0.25, osys.k2 => 0.5, osys.Z0 => 10],
7587
# Dicts not providing default values.
7688
Dict([kp => 1.0, kd => 0.1, k1 => 0.25, Z0 => 10]),
7789
Dict([osys.kp => 1.0, osys.kd => 0.1, osys.k1 => 0.25, osys.Z0 => 10]),
@@ -100,9 +112,9 @@ let
100112
# test failure.
101113
for u0 in u0_alts, p in p_alts
102114
oprob = remake(base_oprob; u0, p)
103-
# @test base_sol == solve(oprob, Tsit5(); saveat = 1.0)
115+
@test base_sol == solve(oprob, Tsit5(); saveat = 1.0)
104116
eprob = remake(base_eprob; u0, p)
105-
# @test base_esol == solve(eprob, Tsit5(); trajectories = 2, saveat = 1.0)
117+
@test base_esol == solve(eprob, Tsit5(); trajectories = 2, saveat = 1.0)
106118
end
107119
end
108120

@@ -148,10 +160,9 @@ let
148160
base_nlprob = NonlinearProblem(nsys, u0_alts[1], p_alts[1])
149161
base_sol = solve(base_nlprob, NewtonRaphson())
150162
# Solves problems for all input types, checking that identical solutions are found.
151-
# test failure.
152163
for u0 in u0_alts, p in p_alts
153164
nlprob = remake(base_nlprob; u0, p)
154-
# @test base_sol == solve(nlprob, NewtonRaphson())
165+
@test base_sol == solve(nlprob, NewtonRaphson())
155166
end
156167
end
157168

@@ -167,9 +178,9 @@ let
167178
# test failure.
168179
for u0 in u0_alts, p in p_alts
169180
ssprob = remake(base_ssprob; u0, p)
170-
# @test base_sol == solve(ssprob, DynamicSS(Tsit5()))
181+
@test base_sol == solve(ssprob, DynamicSS(Tsit5()))
171182
eprob = remake(base_eprob; u0, p)
172-
# @test base_esol == solve(eprob, DynamicSS(Tsit5()); trajectories = 2)
183+
@test base_esol == solve(eprob, DynamicSS(Tsit5()); trajectories = 2)
173184
end
174185
end
175186

@@ -210,25 +221,31 @@ let
210221
# Missing a value.
211222
[X1 => 1],
212223
[osys.X1 => 1],
224+
SA[X1 => 1],
225+
SA[osys.X1 => 1],
213226
Dict([X1 => 1]),
214227
Dict([osys.X1 => 1]),
215228
(X1 => 1),
216229
(osys.X1 => 1),
217230
# Contain an additional value.
218231
[X1 => 1, X2 => 2, X3 => 3],
232+
SA[X1 => 1, X2 => 2, X3 => 3],
219233
Dict([X1 => 1, X2 => 2, X3 => 3]),
220234
(X1 => 1, X2 => 2, X3 => 3)
221235
]
222236
ps_invalid = [
223237
# Missing a value.
224238
[k1 => 1.0],
225239
[osys.k1 => 1.0],
240+
SA[k1 => 1.0],
241+
SA[osys.k1 => 1.0],
226242
Dict([k1 => 1.0]),
227243
Dict([osys.k1 => 1.0]),
228244
(k1 => 1.0),
229245
(osys.k1 => 1.0),
230246
# Contain an additional value.
231247
[k1 => 1.0, k2 => 2.0, k3 => 3.0],
248+
SA[k1 => 1.0, k2 => 2.0, k3 => 3.0],
232249
Dict([k1 => 1.0, k2 => 2.0, k3 => 3.0]),
233250
(k1 => 1.0, k2 => 2.0, k3 => 3.0)
234251
]
@@ -237,8 +254,8 @@ let
237254
# Broken tests are due to this issue: https://github.com/SciML/ModelingToolkit.jl/issues/2779
238255
for ps in [[ps_valid]; ps_invalid], u0 in [[u0_valid]; u0s_invalid]
239256
# Handles problems with/without tspan separately. Special check ensuring that valid inputs passes.
240-
for (xsys, XProblem) in zip(
241-
[osys, ssys, jsys], [ODEProblem, SDEProblem, DiscreteProblem])
257+
for (xsys, XProblem) in zip([osys, ssys, jsys],
258+
[ODEProblem, SDEProblem, DiscreteProblem])
242259
if isequal(ps, ps_valid) && isequal(u0, u0_valid)
243260
XProblem(xsys, u0, (0.0, 1.0), ps)
244261
@test true
@@ -312,6 +329,16 @@ begin
312329
[X[1] => 1.0, X[2] => 2.0, Y[1] => 10.0, Y[2] => 20.0],
313330
[osys.X => [1.0, 2.0], osys.Y => [10.0, 20.0]],
314331
[osys.X[1] => 1.0, osys.X[2] => 2.0, osys.Y[1] => 10.0, osys.Y[2] => 20.0],
332+
# Static vectors not providing default values.
333+
SA[X => [1.0, 2.0]],
334+
SA[X[1] => 1.0, X[2] => 2.0],
335+
SA[osys.X => [1.0, 2.0]],
336+
SA[osys.X[1] => 1.0, osys.X[2] => 2.0],
337+
# Static vectors providing default values.
338+
SA[X => [1.0, 2.0], Y => [10.0, 20.0]],
339+
SA[X[1] => 1.0, X[2] => 2.0, Y[1] => 10.0, Y[2] => 20.0],
340+
SA[osys.X => [1.0, 2.0], osys.Y => [10.0, 20.0]],
341+
SA[osys.X[1] => 1.0, osys.X[2] => 2.0, osys.Y[1] => 10.0, osys.Y[2] => 20.0],
315342
# Dicts not providing default values.
316343
Dict([X => [1.0, 2.0]]),
317344
Dict([X[1] => 1.0, X[2] => 2.0]),
@@ -342,6 +369,12 @@ begin
342369
# Vectors providing default values.
343370
[p => [4.0, 5.0], d => [0.2, 0.5]],
344371
[osys.p => [4.0, 5.0], osys.d => [0.2, 0.5]],
372+
# Static vectors not providing default values.
373+
SA[p => [1.0, 2.0]],
374+
SA[osys.p => [1.0, 2.0]],
375+
# Static vectors providing default values.
376+
SA[p => [4.0, 5.0], d => [0.2, 0.5]],
377+
SA[osys.p => [4.0, 5.0], osys.d => [0.2, 0.5]],
345378
# Dicts not providing default values.
346379
Dict([p => [1.0, 2.0]]),
347380
Dict([osys.p => [1.0, 2.0]]),

0 commit comments

Comments
 (0)