|
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