|
1 | 1 | ### Prepares Tests ### |
2 | 2 |
|
3 | 3 | # Fetch packages |
4 | | -using ModelingToolkit, JumpProcesses, NonlinearSolve, OrdinaryDiffEq, SteadyStateDiffEq, |
5 | | - StochasticDiffEq, Test |
| 4 | +using ModelingToolkit, JumpProcesses, NonlinearSolve, OrdinaryDiffEq, StaticArrays, |
| 5 | + SteadyStateDiffEq, StochasticDiffEq, Test |
6 | 6 | using ModelingToolkit: t_nounits as t, D_nounits as D |
7 | 7 |
|
8 | 8 | # Sets rnd number. |
|
51 | 51 | # Vectors providing default values. |
52 | 52 | [X => 4, Y => 5, Z => 10], |
53 | 53 | [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], |
54 | 60 | # Dicts not providing default values. |
55 | 61 | Dict([X => 4, Y => 5]), |
56 | 62 | Dict([osys.X => 4, osys.Y => 5]), |
|
72 | 78 | # Vectors providing default values. |
73 | 79 | [kp => 1.0, kd => 0.1, k1 => 0.25, k2 => 0.5, Z0 => 10], |
74 | 80 | [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], |
75 | 87 | # Dicts not providing default values. |
76 | 88 | Dict([kp => 1.0, kd => 0.1, k1 => 0.25, Z0 => 10]), |
77 | 89 | Dict([osys.kp => 1.0, osys.kd => 0.1, osys.k1 => 0.25, osys.Z0 => 10]), |
|
100 | 112 | # test failure. |
101 | 113 | for u0 in u0_alts, p in p_alts |
102 | 114 | 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) |
104 | 116 | 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) |
106 | 118 | end |
107 | 119 | end |
108 | 120 |
|
|
148 | 160 | base_nlprob = NonlinearProblem(nsys, u0_alts[1], p_alts[1]) |
149 | 161 | base_sol = solve(base_nlprob, NewtonRaphson()) |
150 | 162 | # Solves problems for all input types, checking that identical solutions are found. |
151 | | - # test failure. |
152 | 163 | for u0 in u0_alts, p in p_alts |
153 | 164 | nlprob = remake(base_nlprob; u0, p) |
154 | | - # @test base_sol == solve(nlprob, NewtonRaphson()) |
| 165 | + @test base_sol == solve(nlprob, NewtonRaphson()) |
155 | 166 | end |
156 | 167 | end |
157 | 168 |
|
|
167 | 178 | # test failure. |
168 | 179 | for u0 in u0_alts, p in p_alts |
169 | 180 | ssprob = remake(base_ssprob; u0, p) |
170 | | - # @test base_sol == solve(ssprob, DynamicSS(Tsit5())) |
| 181 | + @test base_sol == solve(ssprob, DynamicSS(Tsit5())) |
171 | 182 | 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) |
173 | 184 | end |
174 | 185 | end |
175 | 186 |
|
@@ -210,25 +221,31 @@ let |
210 | 221 | # Missing a value. |
211 | 222 | [X1 => 1], |
212 | 223 | [osys.X1 => 1], |
| 224 | + SA[X1 => 1], |
| 225 | + SA[osys.X1 => 1], |
213 | 226 | Dict([X1 => 1]), |
214 | 227 | Dict([osys.X1 => 1]), |
215 | 228 | (X1 => 1), |
216 | 229 | (osys.X1 => 1), |
217 | 230 | # Contain an additional value. |
218 | 231 | [X1 => 1, X2 => 2, X3 => 3], |
| 232 | + SA[X1 => 1, X2 => 2, X3 => 3], |
219 | 233 | Dict([X1 => 1, X2 => 2, X3 => 3]), |
220 | 234 | (X1 => 1, X2 => 2, X3 => 3) |
221 | 235 | ] |
222 | 236 | ps_invalid = [ |
223 | 237 | # Missing a value. |
224 | 238 | [k1 => 1.0], |
225 | 239 | [osys.k1 => 1.0], |
| 240 | + SA[k1 => 1.0], |
| 241 | + SA[osys.k1 => 1.0], |
226 | 242 | Dict([k1 => 1.0]), |
227 | 243 | Dict([osys.k1 => 1.0]), |
228 | 244 | (k1 => 1.0), |
229 | 245 | (osys.k1 => 1.0), |
230 | 246 | # Contain an additional value. |
231 | 247 | [k1 => 1.0, k2 => 2.0, k3 => 3.0], |
| 248 | + SA[k1 => 1.0, k2 => 2.0, k3 => 3.0], |
232 | 249 | Dict([k1 => 1.0, k2 => 2.0, k3 => 3.0]), |
233 | 250 | (k1 => 1.0, k2 => 2.0, k3 => 3.0) |
234 | 251 | ] |
|
237 | 254 | # Broken tests are due to this issue: https://github.com/SciML/ModelingToolkit.jl/issues/2779 |
238 | 255 | for ps in [[ps_valid]; ps_invalid], u0 in [[u0_valid]; u0s_invalid] |
239 | 256 | # 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]) |
242 | 259 | if isequal(ps, ps_valid) && isequal(u0, u0_valid) |
243 | 260 | XProblem(xsys, u0, (0.0, 1.0), ps) |
244 | 261 | @test true |
@@ -312,6 +329,16 @@ begin |
312 | 329 | [X[1] => 1.0, X[2] => 2.0, Y[1] => 10.0, Y[2] => 20.0], |
313 | 330 | [osys.X => [1.0, 2.0], osys.Y => [10.0, 20.0]], |
314 | 331 | [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], |
315 | 342 | # Dicts not providing default values. |
316 | 343 | Dict([X => [1.0, 2.0]]), |
317 | 344 | Dict([X[1] => 1.0, X[2] => 2.0]), |
@@ -342,6 +369,12 @@ begin |
342 | 369 | # Vectors providing default values. |
343 | 370 | [p => [4.0, 5.0], d => [0.2, 0.5]], |
344 | 371 | [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]], |
345 | 378 | # Dicts not providing default values. |
346 | 379 | Dict([p => [1.0, 2.0]]), |
347 | 380 | Dict([osys.p => [1.0, 2.0]]), |
|
0 commit comments