Skip to content

Commit 9fb2316

Browse files
Merge pull request #2443 from AayushSabharwal/as/manual-indepvar
fix!: require explicit independent variable for ODESystem
2 parents cea2ae8 + 346d092 commit 9fb2316

23 files changed

+92
-100
lines changed

src/ModelingToolkit.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ const D = Differential(t)
192192
PrecompileTools.@compile_workload begin
193193
using ModelingToolkit
194194
@variables x(ModelingToolkit.t_nounits)
195-
@named sys = ODESystem([ModelingToolkit.D_nounits(x) ~ -x])
195+
@named sys = ODESystem([ModelingToolkit.D_nounits(x) ~ -x], ModelingToolkit.t_nounits)
196196
prob = ODEProblem(structural_simplify(sys), [x => 30.0], (0, 100), [], jac = true)
197197
end
198198

src/systems/diffeqs/odesystem.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ function ODESystem(deqs::AbstractVector{<:Equation}, iv, dvs, ps;
230230
metadata, gui_metadata, checks = checks)
231231
end
232232

233-
function ODESystem(eqs, iv = nothing; kwargs...)
233+
function ODESystem(eqs, iv; kwargs...)
234234
eqs = scalarize(eqs)
235235
# NOTE: this assumes that the order of algebraic equations doesn't matter
236236
diffvars = OrderedSet()

src/systems/systems.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
function System(eqs::AbstractVector{<:Equation}, iv = nothing, args...; name = nothing,
1+
function System(eqs::AbstractVector{<:Equation}, iv, args...; name = nothing,
22
kw...)
33
ODESystem(eqs, iv, args...; name, kw..., checks = false)
44
end

test/clock.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ eqs = [yd ~ Sample(t, dt)(y)
2222
u ~ Hold(ud)
2323
D(x) ~ -x + u
2424
y ~ x]
25-
@named sys = ODESystem(eqs)
25+
@named sys = ODESystem(eqs, t)
2626
# compute equation and variables' time domains
2727
#TODO: test linearize
2828

@@ -110,7 +110,7 @@ z′(k + 1) ~ z(k) + yd
110110
z(k + 1) ~ z′(k)
111111
=#
112112
]
113-
@named sys = ODESystem(eqs)
113+
@named sys = ODESystem(eqs, t)
114114
ss = structural_simplify(sys);
115115

116116
Tf = 1.0
@@ -174,7 +174,7 @@ eqs = [
174174
u ~ Hold(ud1) + Hold(ud2)
175175
D(x) ~ -x + u
176176
y ~ x]
177-
@named sys = ODESystem(eqs)
177+
@named sys = ODESystem(eqs, t)
178178
ci, varmap = infer_clocks(sys)
179179

180180
d = Clock(t, dt)

test/constants.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ UMT = ModelingToolkit.UnitfulUnitCheck
99
@variables t x(t) w(t)
1010
D = Differential(t)
1111
eqs = [D(x) ~ a]
12-
@named sys = ODESystem(eqs)
12+
@named sys = ODESystem(eqs, t)
1313
prob = ODEProblem(complete(sys), [0], [0.0, 1.0], [])
1414
sol = solve(prob, Tsit5())
1515

@@ -19,7 +19,7 @@ newsys = MT.eliminate_constants(sys)
1919
# Test structural_simplify substitutions & observed values
2020
eqs = [D(x) ~ 1,
2121
w ~ a]
22-
@named sys = ODESystem(eqs)
22+
@named sys = ODESystem(eqs, t)
2323
# Now eliminate the constants first
2424
simp = structural_simplify(sys)
2525
@test equations(simp) == [D(x) ~ 1.0]
@@ -31,7 +31,7 @@ UMT.get_unit(β)
3131
@variables t [unit = u"s"] x(t) [unit = u"m"]
3232
D = Differential(t)
3333
eqs = [D(x) ~ β]
34-
@named sys = ODESystem(eqs)
34+
@named sys = ODESystem(eqs, t)
3535
simp = structural_simplify(sys)
3636

3737
@test isempty(MT.collect_constants(nothing))

test/dae_jacobian.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ sol1 = solve(prob1, IDA(linear_solver = :KLU))
3636
eqs = [D(u1) ~ p1 * u1 - u1 * u2,
3737
D(u2) ~ u1 * u2 - p2 * u2]
3838

39-
@named sys = ODESystem(eqs)
39+
@named sys = ODESystem(eqs, t)
4040

4141
u0 = [u1 => 1.0,
4242
u2 => 1.0]

test/distributed.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ addprocs(2)
1313
D(y) ~ x *- z) - y,
1414
D(z) ~ x * y - β * z]
1515

16-
@everywhere @named de = ODESystem(eqs)
16+
@everywhere @named de = ODESystem(eqs, t)
1717
@everywhere de = complete(de)
1818
@everywhere ode_func = ODEFunction(de, [x, y, z], [σ, ρ, β])
1919

test/dq_units.jl

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ using ModelingToolkit: t, D
2020
eqs = [D(E) ~ P - E / τ
2121
0 ~ P]
2222
@test MT.validate(eqs)
23-
@named sys = ODESystem(eqs)
23+
@named sys = ODESystem(eqs, t)
2424

2525
@test !MT.validate(D(D(E)) ~ P)
2626
@test !MT.validate(0 ~ P + E * τ)
@@ -30,13 +30,13 @@ eqs = [D(E) ~ P - E / τ
3030
ODESystem(eqs, t, [E, P, t], [τ], name = :sys, checks = MT.CheckUnits)
3131
eqs = [D(E) ~ P - E / τ
3232
0 ~ P + E * τ]
33-
@test_throws MT.ValidationError ODESystem(eqs, name = :sys, checks = MT.CheckAll)
34-
@test_throws MT.ValidationError ODESystem(eqs, name = :sys, checks = true)
35-
ODESystem(eqs, name = :sys, checks = MT.CheckNone)
36-
ODESystem(eqs, name = :sys, checks = false)
37-
@test_throws MT.ValidationError ODESystem(eqs, name = :sys,
33+
@test_throws MT.ValidationError ODESystem(eqs, t, name = :sys, checks = MT.CheckAll)
34+
@test_throws MT.ValidationError ODESystem(eqs, t, name = :sys, checks = true)
35+
ODESystem(eqs, t, name = :sys, checks = MT.CheckNone)
36+
ODESystem(eqs, t, name = :sys, checks = false)
37+
@test_throws MT.ValidationError ODESystem(eqs, t, name = :sys,
3838
checks = MT.CheckComponents | MT.CheckUnits)
39-
@named sys = ODESystem(eqs, checks = MT.CheckComponents)
39+
@named sys = ODESystem(eqs, t, checks = MT.CheckComponents)
4040
@test_throws MT.ValidationError ODESystem(eqs, t, [E, P, t], [τ], name = :sys,
4141
checks = MT.CheckUnits)
4242

@@ -69,7 +69,7 @@ good_eqs = [connect(p1, p2)]
6969
@variables x(t)[1:3] [unit = u"m"]
7070
@parameters v[1:3]=[1, 2, 3] [unit = u"m/s"]
7171
eqs = D.(x) .~ v
72-
ODESystem(eqs, name = :sys)
72+
ODESystem(eqs, t, name = :sys)
7373

7474
# Nonlinear system
7575
@parameters a [unit = u"kg"^-1]
@@ -104,12 +104,12 @@ noiseeqs = [0.1u"W" 0.1u"W"
104104
@parameters v [unit = u"m/s"] r [unit = u"m"^3 / u"s"]
105105
eqs = [D(L) ~ v,
106106
V ~ L^3]
107-
@named sys = ODESystem(eqs)
107+
@named sys = ODESystem(eqs, t)
108108
sys_simple = structural_simplify(sys)
109109

110110
eqs = [D(V) ~ r,
111111
V ~ L^3]
112-
@named sys = ODESystem(eqs)
112+
@named sys = ODESystem(eqs, t)
113113
sys_simple = structural_simplify(sys)
114114

115115
@variables V [unit = u"m"^3] L [unit = u"m"]

test/extensions/bifurcationkit.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ let
6060
@variables x(t) y(t) z(t)
6161
eqs = [D(x) ~ -x + a * y + x^2 * y,
6262
D(y) ~ b - a * y - x^2 * y]
63-
@named sys = ODESystem(eqs)
63+
@named sys = ODESystem(eqs, t)
6464
sys = complete(sys)
6565
# Creates BifurcationProblem
6666
bprob = BifurcationProblem(sys,

test/input_output_handling.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ eqs = [
158158
D(x) ~ -x + u,
159159
]
160160

161-
@named sys = ODESystem(eqs)
161+
@named sys = ODESystem(eqs, t)
162162
f, dvs, ps = ModelingToolkit.generate_control_function(sys, simplify = true)
163163

164164
@test isequal(dvs[], x)

test/labelledarrays.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ eqs = [D(x) ~ σ * (y - x),
1212
D(y) ~ t * x *- z) - y,
1313
D(z) ~ x * y - β * z]
1414

15-
@named de = ODESystem(eqs)
15+
@named de = ODESystem(eqs, t)
1616
de = complete(de)
1717
ff = ODEFunction(de, [x, y, z], [σ, ρ, β], jac = true)
1818

test/linearity.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,16 @@ eqs = [D(x) ~ σ * (y - x),
1111
D(y) ~ -z - y,
1212
D(z) ~ y - β * z]
1313

14-
@test ModelingToolkit.islinear(@named sys = ODESystem(eqs))
14+
@test ModelingToolkit.islinear(@named sys = ODESystem(eqs, t))
1515

1616
eqs2 = [D(x) ~ σ * (y - x),
1717
D(y) ~ -z - 1 / y,
1818
D(z) ~ y - β * z]
1919

20-
@test !ModelingToolkit.islinear(@named sys = ODESystem(eqs2))
20+
@test !ModelingToolkit.islinear(@named sys = ODESystem(eqs2, t))
2121

2222
eqs3 = [D(x) ~ σ * (y - x),
2323
D(y) ~ -z - y,
2424
D(z) ~ y - β * z + 1]
2525

26-
@test ModelingToolkit.isaffine(@named sys = ODESystem(eqs))
26+
@test ModelingToolkit.isaffine(@named sys = ODESystem(eqs, t))

test/lowering_solving.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ eqs = [D(D(x)) ~ σ * (y - x),
88
D(y) ~ x *- z) - y,
99
D(z) ~ x * y - β * z]
1010

11-
@named sys′ = ODESystem(eqs)
11+
@named sys′ = ODESystem(eqs, t)
1212
sys = ode_order_lowering(sys′)
1313

1414
eqs2 = [0 ~ x * y - k,
@@ -46,8 +46,8 @@ eqs = [D(x) ~ σ * (y - x),
4646
D(y) ~ x *- z) - y,
4747
D(z) ~ x * y - β * z]
4848

49-
lorenz1 = ODESystem(eqs, name = :lorenz1)
50-
lorenz2 = ODESystem(eqs, name = :lorenz2)
49+
lorenz1 = ODESystem(eqs, t, name = :lorenz1)
50+
lorenz2 = ODESystem(eqs, t, name = :lorenz2)
5151

5252
@variables α(t)
5353
@parameters γ

test/nonlinearsystem.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ eq = [v1 ~ sin(2pi * t * h)
188188
v1 - v2 ~ i1
189189
v2 ~ i2
190190
i1 ~ i2]
191-
@named sys = ODESystem(eq)
191+
@named sys = ODESystem(eq, t)
192192
@test length(equations(structural_simplify(sys))) == 0
193193

194194
@testset "Issue: 1504" begin

0 commit comments

Comments
 (0)