Skip to content

Commit 9b41617

Browse files
test: fix tests
1 parent c555a29 commit 9b41617

18 files changed

+77
-45
lines changed

test/constants.jl

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ UMT = ModelingToolkit.UnitfulUnitCheck
1010
D = Differential(t)
1111
eqs = [D(x) ~ a]
1212
@named sys = ODESystem(eqs)
13-
prob = ODEProblem(sys, [0], [0.0, 1.0], [])
13+
prob = ODEProblem(complete(sys), [0], [0.0, 1.0], [])
1414
sol = solve(prob, Tsit5())
1515

1616
newsys = MT.eliminate_constants(sys)

test/dae_jacobian.jl

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ du0 = [0.5, -2.0]
4949
p = [p1 => 1.5,
5050
p2 => 3.0]
5151

52-
prob = DAEProblem(sys, du0, u0, tspan, p, jac = true, sparse = true)
52+
prob = DAEProblem(complete(sys), du0, u0, tspan, p, jac = true, sparse = true)
5353
sol = solve(prob, IDA(linear_solver = :KLU))
5454

5555
@test maximum(sol - sol1) < 1e-12

test/extensions/bifurcationkit.jl

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ let
99
eqs = [0 ~ μ * x - x^3 + α * y,
1010
0 ~ -y]
1111
@named nsys = NonlinearSystem(eqs, [x, y], [μ, α])
12-
12+
nsys = complete(nsys)
1313
# Creates BifurcationProblem
1414
bif_par = μ
1515
p_start ==> -1.0, α => 1.0]
@@ -62,7 +62,7 @@ let
6262
eqs = [D(x) ~ -x + a * y + x^2 * y,
6363
D(y) ~ b - a * y - x^2 * y]
6464
@named sys = ODESystem(eqs)
65-
65+
sys = complete(sys)
6666
# Creates BifurcationProblem
6767
bprob = BifurcationProblem(sys,
6868
[x => 1.5, y => 1.0],

test/funcaffect.jl

+5-5
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ affect1!(integ, u, p, ctx) = integ.u[u.u] += 10
1111

1212
@named sys = ODESystem(eqs, t, [u], [],
1313
discrete_events = [[4.0] => (affect1!, [u], [], nothing)])
14-
prob = ODEProblem(sys, [u => 10.0], (0, 10.0))
14+
prob = ODEProblem(complete(sys), [u => 10.0], (0, 10.0))
1515
sol = solve(prob, Tsit5())
1616
i4 = findfirst(==(4.0), sol[:t])
1717
@test sol.u[i4 + 1][1] > 10.0
@@ -62,7 +62,7 @@ end
6262
ctx1 = [10.0]
6363
@named sys = ODESystem(eqs, t, [u], [],
6464
discrete_events = [[4.0, 8.0] => (affect2!, [u], [], ctx1)])
65-
prob = ODEProblem(sys, [u => 10.0], (0, 10.0))
65+
prob = ODEProblem(complete(sys), [u => 10.0], (0, 10.0))
6666
sol = solve(prob, Tsit5())
6767
i4 = findfirst(==(4.0), sol[:t])
6868
@test sol.u[i4 + 1][1] > 10.0
@@ -79,7 +79,7 @@ end
7979
@parameters a = 10.0
8080
@named sys = ODESystem(eqs, t, [u], [a],
8181
discrete_events = [[4.0, 8.0] => (affect3!, [u], [a], nothing)])
82-
prob = ODEProblem(sys, [u => 10.0], (0, 10.0))
82+
prob = ODEProblem(complete(sys), [u => 10.0], (0, 10.0))
8383

8484
sol = solve(prob, Tsit5())
8585
i4 = findfirst(==(4.0), sol[:t])
@@ -97,7 +97,7 @@ end
9797
discrete_events = [
9898
[4.0, 8.0] => (affect3!, [u], [a => :b], nothing),
9999
])
100-
prob = ODEProblem(sys, [u => 10.0], (0, 10.0))
100+
prob = ODEProblem(complete(sys), [u => 10.0], (0, 10.0))
101101

102102
sol = solve(prob, Tsit5())
103103
i4 = findfirst(==(4.0), sol[:t])
@@ -225,7 +225,7 @@ balls = compose(balls, [ball1, ball2])
225225
@test ModelingToolkit.has_discrete_events(balls)
226226
@test length(ModelingToolkit.affects(ModelingToolkit.discrete_events(balls))) == 2
227227

228-
prob = ODEProblem(balls, [ball1.x => 10.0, ball1.v => 0, ball2.x => 10.0, ball2.v => 0],
228+
prob = ODEProblem(complete(balls), [ball1.x => 10.0, ball1.v => 0, ball2.x => 10.0, ball2.v => 0],
229229
(0, 3.0))
230230
sol = solve(prob, Tsit5())
231231

test/jacobiansparsity.jl

+2-2
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ end
4040
u0 = init_brusselator_2d(xyd_brusselator)
4141
prob_ode_brusselator_2d = ODEProblem(brusselator_2d_loop,
4242
u0, (0.0, 11.5), p)
43-
sys = modelingtoolkitize(prob_ode_brusselator_2d)
43+
sys = complete(modelingtoolkitize(prob_ode_brusselator_2d))
4444

4545
# test sparse jacobian pattern only.
4646
prob = ODEProblem(sys, u0, (0, 11.5), sparse = true, jac = false)
@@ -74,7 +74,7 @@ f = DiffEqBase.ODEFunction(sys, u0 = nothing, sparse = true, jac = false)
7474
u0 = similar(init_brusselator_2d(xyd_brusselator), Float32)
7575
prob_ode_brusselator_2d = ODEProblem(brusselator_2d_loop,
7676
u0, (0.0, 11.5), p)
77-
sys = modelingtoolkitize(prob_ode_brusselator_2d)
77+
sys = complete(modelingtoolkitize(prob_ode_brusselator_2d))
7878

7979
prob = ODEProblem(sys, u0, (0, 11.5), sparse = true, jac = false)
8080
@test eltype(prob.f.jac_prototype) == Float32

test/jumpsystem.jl

+7
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ rate₃ = γ * I * h
5959
affect₃ = [I ~ I * h - 1, R ~ R + 1]
6060
j₃ = ConstantRateJump(rate₃, affect₃)
6161
@named js2 = JumpSystem([j₁, j₃], t, [S, I, R], [β, γ])
62+
js2 = complete(js2)
6263
u₀ = [999, 1, 0];
6364
p = (0.1 / 1000, 0.01);
6465
tspan = (0.0, 250.0);
@@ -80,6 +81,7 @@ m = getmean(jprob, Nsims)
8081
@variables S2(t)
8182
obs = [S2 ~ 2 * S]
8283
@named js2b = JumpSystem([j₁, j₃], t, [S, I, R], [β, γ], observed = obs)
84+
js2b = complete(js2b)
8385
dprob = DiscreteProblem(js2b, u₀map, tspan, parammap)
8486
jprob = JumpProblem(js2b, dprob, Direct(), save_positions = (false, false), rng = rng)
8587
sol = solve(jprob, SSAStepper(), saveat = tspan[2] / 10)
@@ -132,13 +134,15 @@ m2 = getmean(jprob, Nsims)
132134
maj1 = MassActionJump(2 * β / 2, [S => 1, I => 1], [S => -1, I => 1])
133135
maj2 = MassActionJump(γ, [I => 1], [I => -1, R => 1])
134136
@named js3 = JumpSystem([maj1, maj2], t, [S, I, R], [β, γ])
137+
js3 = complete(js3)
135138
dprob = DiscreteProblem(js3, u₀map, tspan, parammap)
136139
jprob = JumpProblem(js3, dprob, Direct(), rng = rng)
137140
m3 = getmean(jprob, Nsims)
138141
@test abs(m - m3) / m < 0.01
139142

140143
# maj jump test with various dep graphs
141144
@named js3b = JumpSystem([maj1, maj2], t, [S, I, R], [β, γ])
145+
js3b = complete(js3b)
142146
jprobb = JumpProblem(js3b, dprob, NRM(), rng = rng)
143147
m4 = getmean(jprobb, Nsims)
144148
@test abs(m - m4) / m < 0.01
@@ -150,6 +154,7 @@ m4 = getmean(jprobc, Nsims)
150154
maj1 = MassActionJump(2.0, [0 => 1], [S => 1])
151155
maj2 = MassActionJump(γ, [S => 1], [S => -1])
152156
@named js4 = JumpSystem([maj1, maj2], t, [S], [β, γ])
157+
js4 = complete(js4)
153158
dprob = DiscreteProblem(js4, [S => 999], (0, 1000.0), [β => 100.0, γ => 0.01])
154159
jprob = JumpProblem(js4, dprob, Direct(), rng = rng)
155160
m4 = getmean(jprob, Nsims)
@@ -159,6 +164,7 @@ m4 = getmean(jprob, Nsims)
159164
maj1 = MassActionJump(2.0, [0 => 1], [S => 1])
160165
maj2 = MassActionJump(γ, [S => 2], [S => -1])
161166
@named js4 = JumpSystem([maj1, maj2], t, [S], [β, γ])
167+
js4 = complete(js4)
162168
dprob = DiscreteProblem(js4, [S => 999], (0, 1000.0), [β => 100.0, γ => 0.01])
163169
jprob = JumpProblem(js4, dprob, Direct(), rng = rng)
164170
sol = solve(jprob, SSAStepper());
@@ -177,6 +183,7 @@ end
177183
maj1 = MassActionJump(k1 * k3, [0 => 1], [A => -1, B => 1])
178184
maj2 = MassActionJump(k2, [B => 1], [A => 1, B => -1])
179185
@named js5 = JumpSystem([maj1, maj2], t, [A, B], [k1, k2, k3])
186+
js5 = complete(js5)
180187
p = [k1 => 2.0, k2 => 0.0, k3 => 0.5]
181188
u₀ = [A => 100, B => 0]
182189
tspan = (0.0, 2000.0)

test/lowering_solving.jl

+3-1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ p = [σ => 28.0,
3030
β => 8 / 3]
3131

3232
tspan = (0.0, 100.0)
33+
34+
sys = complete(sys)
3335
prob = ODEProblem(sys, u0, tspan, p, jac = true)
3436
probexpr = ODEProblemExpr(sys, u0, tspan, p, jac = true)
3537
sol = solve(prob, Tsit5())
@@ -52,7 +54,7 @@ lorenz2 = ODESystem(eqs, name = :lorenz2)
5254
@parameters γ
5355
connections = [0 ~ lorenz1.x + lorenz2.y + α * γ]
5456
@named connected = ODESystem(connections, t, [α], [γ], systems = [lorenz1, lorenz2])
55-
57+
connected = complete(connected)
5658
u0 = [lorenz1.x => 1.0,
5759
lorenz1.y => 0.0,
5860
lorenz1.z => 0.0,

test/modelingtoolkitize.jl

+5-5
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ x0 = zeros(2)
5252
p = [1.0, 100.0]
5353

5454
prob = OptimizationProblem(rosenbrock, x0, p)
55-
sys = modelingtoolkitize(prob) # symbolicitize me captain!
55+
sys = complete(modelingtoolkitize(prob)) # symbolicitize me captain!
5656

5757
prob = OptimizationProblem(sys, x0, p, grad = true, hess = true)
5858
sol = solve(prob, NelderMead())
@@ -141,7 +141,7 @@ problem = ODEProblem(SIRD_ac!, ℬ, 𝒯, 𝒫)
141141
@time solution = solve(problem, Tsit5(), saveat = 1:final_time);
142142

143143
problem = ODEProblem(SIRD_ac!, ℬ, 𝒯, 𝒫)
144-
sys = modelingtoolkitize(problem)
144+
sys = complete(modelingtoolkitize(problem))
145145
fast_problem = ODEProblem(sys, ℬ, 𝒯, 𝒫)
146146
@time solution = solve(fast_problem, Tsit5(), saveat = 1:final_time)
147147

@@ -179,7 +179,7 @@ u0 = [1.0, 0, 0, 0, 0]
179179
p = [9.8, 1]
180180
tspan = (0, 10.0)
181181
pendulum_prob = ODEProblem(pendulum_fun!, u0, tspan, p)
182-
pendulum_sys_org = modelingtoolkitize(pendulum_prob)
182+
pendulum_sys_org = complete(modelingtoolkitize(pendulum_prob))
183183
sts = unknowns(pendulum_sys_org)
184184
pendulum_sys = dae_index_lowering(pendulum_sys_org)
185185
prob = ODEProblem(pendulum_sys, Pair[], tspan)
@@ -250,7 +250,7 @@ u0 = @LArray [9998.0, 1.0, 1.0, 1.0] (:S, :I, :R, :C)
250250

251251
# Initiate ODE problem
252252
problem = ODEProblem(SIR!, u0, tspan, p)
253-
sys = modelingtoolkitize(problem)
253+
sys = complete(modelingtoolkitize(problem))
254254

255255
@parameters t
256256
@test all(isequal.(parameters(sys), getproperty.(@variables(β, η, ω, φ, σ, μ), :val)))
@@ -304,6 +304,6 @@ noiseeqs = [0.1 * x,
304304
0.1 * z]
305305

306306
@named sys = SDESystem(eqs, noiseeqs, t, [x, y, z], [sig, rho, beta]; tspan = (0, 1000.0))
307-
prob = SDEProblem(sys)
307+
prob = SDEProblem(complete(sys))
308308
sys = modelingtoolkitize(prob)
309309
@test ModelingToolkit.has_tspan(sys)

test/nonlinearsystem.jl

+5-2
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ eqs = [0 ~ σ * a * h,
6666
0 ~ x *- z) - y,
6767
0 ~ x * y - β * z]
6868
@named ns = NonlinearSystem(eqs, [x, y, z], [σ, ρ, β])
69+
ns = complete(ns)
6970
nlsys_func = generate_function(ns, [x, y, z], [σ, ρ, β])
7071
nf = NonlinearFunction(ns)
7172
jac = calculate_jacobian(ns)
@@ -98,7 +99,7 @@ eqs1 = [
9899

99100
lorenz = name -> NonlinearSystem(eqs1, [x, y, z, u, F], [σ, ρ, β], name = name)
100101
lorenz1 = lorenz(:lorenz1)
101-
@test_throws ArgumentError NonlinearProblem(lorenz1, zeros(5))
102+
@test_throws ArgumentError NonlinearProblem(complete(lorenz1), zeros(5))
102103
lorenz2 = lorenz(:lorenz2)
103104
@named connected = NonlinearSystem([s ~ a + lorenz1.x
104105
lorenz2.y ~ s * h
@@ -128,7 +129,7 @@ eqs = [0 ~ σ * (y - x),
128129
0 ~ x *- z) - y,
129130
0 ~ x * y - β * z * h]
130131
@named ns = NonlinearSystem(eqs, [x, y, z], [σ, ρ, β])
131-
np = NonlinearProblem(ns, [0, 0, 0], [1, 2, 3], jac = true, sparse = true)
132+
np = NonlinearProblem(complete(ns), [0, 0, 0], [1, 2, 3], jac = true, sparse = true)
132133
@test calculate_jacobian(ns, sparse = true) isa SparseMatrixCSC
133134

134135
# issue #819
@@ -199,6 +200,7 @@ eq = [v1 ~ sin(2pi * t * h)
199200
u[4] ~ h]
200201

201202
sys = NonlinearSystem(eqs, collect(u[1:4]), Num[], defaults = Dict([]), name = :test)
203+
sys = complete(sys)
202204
prob = NonlinearProblem(sys, ones(length(unknowns(sys))))
203205

204206
sol = NonlinearSolve.solve(prob, NewtonRaphson())
@@ -223,6 +225,7 @@ testdict = Dict([:test => 1])
223225
0 ~ x * (b - z) - y,
224226
0 ~ x * y - c * z]
225227
@named sys = NonlinearSystem(eqs, [x, y, z], [a, b, c], defaults = Dict(x => 2.0))
228+
sys = complete(sys)
226229
prob = NonlinearProblem(sys, ones(length(unknowns(sys))))
227230

228231
prob_ = remake(prob, u0 = [1.0, 2.0, 3.0], p = [1.1, 1.2, 1.3])

test/odesystem.jl

+9-2
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,7 @@ eqs = [D(y₁) ~ -k₁ * y₁ + k₃ * y₂ * y₃,
232232
0 ~ y₁ + y₂ + y₃ - 1,
233233
D(y₂) ~ k₁ * y₁ - k₂ * y₂^2 - k₃ * y₂ * y₃ * κ]
234234
@named sys = ODESystem(eqs, defaults = [k₁ => 100, k₂ => 3e7, y₁ => 1.0])
235+
sys = complete(sys)
235236
u0 = Pair[]
236237
push!(u0, y₂ => 0.0)
237238
push!(u0, y₃ => 0.0)
@@ -279,7 +280,7 @@ sol_dpmap = solve(prob_dpmap, Rodas5())
279280
sys1 = makesys(:sys1)
280281
sys2 = makesys(:sys2)
281282
@parameters t b=1.0
282-
ODESystem(Equation[], t, [], [b]; systems = [sys1, sys2], name = :foo)
283+
complete(ODESystem(Equation[], t, [], [b]; systems = [sys1, sys2], name = :foo))
283284
end
284285

285286
sys = makecombinedsys()
@@ -435,6 +436,7 @@ default_u0 = [D(x) => 0.0, x => 10.0]
435436
default_p = [M => 1.0, b => 1.0, k => 1.0]
436437
@named sys = ODESystem(eqs, t, [x], ps; defaults = [default_u0; default_p], tspan)
437438
sys = ode_order_lowering(sys)
439+
sys = complete(sys)
438440
prob = ODEProblem(sys)
439441
sol = solve(prob, Tsit5())
440442
@test sol.t[end] == tspan[end]
@@ -448,6 +450,7 @@ prob = ODEProblem{false}(sys; u0_constructor = x -> SVector(x...))
448450
D = Differential(t)
449451
eqs = [D(x1) ~ -x1]
450452
@named sys = ODESystem(eqs, t, [x1, x2], [])
453+
sys = complete(sys)
451454
@test_throws ArgumentError ODEProblem(sys, [1.0, 1.0], (0.0, 1.0))
452455
@test_nowarn ODEProblem(sys, [1.0, 1.0], (0.0, 1.0), check_length = false)
453456

@@ -545,6 +548,7 @@ eqs = [D(x) ~ foo(x, ms); D.(ms) .~ 1]
545548
@named sys = ODESystem(eqs, t, [x; ms], [])
546549
@named emptysys = ODESystem(Equation[], t)
547550
@named outersys = compose(emptysys, sys)
551+
outersys = complete(outersys)
548552
prob = ODEProblem(outersys, [sys.x => 1.0; collect(sys.ms) .=> 1:3], (0, 1.0))
549553
@test_nowarn solve(prob, Tsit5())
550554

@@ -631,6 +635,7 @@ eqs[end] = D(D(z)) ~ α * x - β * y
631635
end
632636

633637
@named sys = ODESystem(eqs, t, us, ps; defaults = defs, preface = preface)
638+
sys = complete(sys)
634639
prob = ODEProblem(sys, [], (0.0, 1.0))
635640
sol = solve(prob, Euler(); dt = 0.1)
636641

@@ -690,6 +695,7 @@ let
690695
D = Differential(t)
691696
eqs = [D(A) ~ -k1 * k2 * A]
692697
@named sys = ODESystem(eqs, t)
698+
sys = complete(sys)
693699
u0map = [A => 1.0]
694700
pmap = (k1 => 1.0, k2 => 1)
695701
tspan = (0.0, 1.0)
@@ -843,6 +849,7 @@ let
843849
D = Differential(t)
844850
eqs = [D(A) ~ -k * A]
845851
@named osys = ODESystem(eqs, t)
852+
osys = complete(osys)
846853
oprob = ODEProblem(osys, [A => 1.0], (0.0, 10.0), [k => 1.0]; check_length = false)
847854
@test_nowarn sol = solve(oprob, Tsit5())
848855
end
@@ -958,7 +965,7 @@ testdict = Dict([:name => "test"])
958965
eqs = [∂t(Q) ~ 1 / sin(P)
959966
∂t(P) ~ log(-cos(Q))]
960967
@named sys = ODESystem(eqs, t, [P, Q], [])
961-
sys = debug_system(sys);
968+
sys = complete(debug_system(sys));
962969
prob = ODEProblem(sys, [], (0, 1.0));
963970
du = zero(prob.u0);
964971
if VERSION < v"1.8"

0 commit comments

Comments
 (0)