Skip to content

Commit 9d8de6e

Browse files
committed
Force name specification
1 parent 1ebaee3 commit 9d8de6e

23 files changed

+100
-80
lines changed

examples/rc_model.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@ rc_eqs = [
1414
connect(capacitor.n, source.n, ground.g)
1515
]
1616

17-
@named rc_model = compose(ODESystem(rc_eqs, t), [resistor, capacitor, source, ground])
17+
@named rc_model = ODESystem(rc_eqs, t)
18+
rc_model = compose(rc_model, [resistor, capacitor, source, ground])

examples/serial_inductor.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,5 @@ eqs = [
1313
connect(source.n, inductor2.n, ground.g)
1414
]
1515

16-
@named ll_model = compose(ODESystem(eqs, t), source, resistor, inductor1, inductor2, ground)
16+
@named ll_model = ODESystem(eqs, t)
17+
ll_model = compose(ll_model, [source, resistor, inductor1, inductor2, ground])

src/systems/control/controlsystem.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,5 +197,5 @@ function runge_kutta_discretize(sys::ControlSystem,dt,tspan;
197197
equalities = vcat(stages,updates,control_equality)
198198
opt_states = vcat(reduce(vcat,reduce(vcat,states_timeseries)),reduce(vcat,reduce(vcat,k_timeseries)),reduce(vcat,reduce(vcat,control_timeseries)))
199199

200-
OptimizationSystem(reduce(+,losses, init=0),opt_states,ps,equality_constraints = equalities)
200+
OptimizationSystem(reduce(+,losses, init=0),opt_states,ps,equality_constraints = equalities, name=nameof(sys))
201201
end

src/systems/diffeqs/sdesystem.jl

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,11 @@ $(TYPEDSIGNATURES)
148148
Choose correction_factor=-1//2 (1//2) to converte Ito -> Stratonovich (Stratonovich->Ito).
149149
"""
150150
function stochastic_integral_transform(sys::SDESystem, correction_factor)
151+
name = nameof(sys)
151152
# use the general interface
152153
if typeof(get_noiseeqs(sys)) <: Vector
153154
eqs = vcat([equations(sys)[i].lhs ~ get_noiseeqs(sys)[i] for i in eachindex(states(sys))]...)
154-
de = ODESystem(eqs,get_iv(sys),states(sys),parameters(sys))
155+
de = ODESystem(eqs,get_iv(sys),states(sys),parameters(sys),name=name)
155156

156157
jac = calculate_jacobian(de, sparse=false, simplify=false)
157158
∇σσ′ = simplify.(jac*get_noiseeqs(sys))
@@ -160,13 +161,13 @@ function stochastic_integral_transform(sys::SDESystem, correction_factor)
160161
else
161162
dimstate, m = size(get_noiseeqs(sys))
162163
eqs = vcat([equations(sys)[i].lhs ~ get_noiseeqs(sys)[i] for i in eachindex(states(sys))]...)
163-
de = ODESystem(eqs,get_iv(sys),states(sys),parameters(sys))
164+
de = ODESystem(eqs,get_iv(sys),states(sys),parameters(sys),name=name)
164165

165166
jac = calculate_jacobian(de, sparse=false, simplify=false)
166167
∇σσ′ = simplify.(jac*get_noiseeqs(sys)[:,1])
167168
for k = 2:m
168169
eqs = vcat([equations(sys)[i].lhs ~ get_noiseeqs(sys)[Int(i+(k-1)*dimstate)] for i in eachindex(states(sys))]...)
169-
de = ODESystem(eqs,get_iv(sys),states(sys),parameters(sys))
170+
de = ODESystem(eqs,get_iv(sys),states(sys),parameters(sys),name=name)
170171

171172
jac = calculate_jacobian(de, sparse=false, simplify=false)
172173
∇σσ′ = ∇σσ′ + simplify.(jac*get_noiseeqs(sys)[:,k])
@@ -176,7 +177,7 @@ function stochastic_integral_transform(sys::SDESystem, correction_factor)
176177
end
177178

178179

179-
SDESystem(deqs,get_noiseeqs(sys),get_iv(sys),states(sys),parameters(sys))
180+
SDESystem(deqs,get_noiseeqs(sys),get_iv(sys),states(sys),parameters(sys),name=name)
180181
end
181182

182183
"""

test/controlsystem.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ eqs = [
1010
D(v) ~ p[1]*u^3 + v
1111
]
1212

13-
sys = ControlSystem(loss,eqs,t,[x,v],[u],p)
13+
@named sys = ControlSystem(loss,eqs,t,[x,v],[u],p)
1414
dt = 0.1
1515
tspan = (0.0,1.0)
1616
sys = runge_kutta_discretize(sys,dt,tspan)
@@ -27,5 +27,5 @@ sol = solve(prob,BFGS())
2727
]
2828
sys1 = ControlSystem(loss,eqs_short, t, [x, v], [u], p, name = :sys1)
2929
sys2 = ControlSystem(loss,eqs_short, t, [x, v], [u], p, name = :sys1)
30-
@test_throws ArgumentError ControlSystem(loss, [sys2.v ~ sys1.v], t, [], [], [], systems = [sys1, sys2])
30+
@test_throws ArgumentError ControlSystem(loss, [sys2.v ~ sys1.v], t, [], [], [], systems = [sys1, sys2], name=:foo)
3131
end

test/dep_graphs.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ rxs = [Reaction(k1, nothing, [S]),
1313
Reaction(k2, [S,R], [S], [2,1], [2]),
1414
Reaction(k1*I, nothing, [R]),
1515
Reaction(k1*k2/(1+t), [S], [R])]
16-
rs = ReactionSystem(rxs, t, [S,I,R], [k1,k2])
16+
@named rs = ReactionSystem(rxs, t, [S,I,R], [k1,k2])
1717

1818

1919
#################################
@@ -98,7 +98,7 @@ s_eqdeps = [[1],[2],[3]]
9898
eqs = [0 ~ σ*(y-x),
9999
0 ~ ρ-y,
100100
0 ~ y - β*z]
101-
ns = NonlinearSystem(eqs, [x,y,z],[σ,ρ,β])
101+
@named ns = NonlinearSystem(eqs, [x,y,z],[σ,ρ,β])
102102
deps = equation_dependencies(ns)
103103
eq_sdeps = [[x,y],[y],[y,z]]
104104
@test all(i -> isequal(Set(deps[i]),Set(value.(eq_sdeps[i]))), 1:length(deps))

test/discretesystem.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ eqs = [D(S) ~ S-infection,
2323
D(R) ~ R+recovery]
2424

2525
# System
26-
sys = DiscreteSystem(eqs,t,[S,I,R],[c,nsteps,δt,β,γ]; controls = [β, γ])
26+
@named sys = DiscreteSystem(eqs,t,[S,I,R],[c,nsteps,δt,β,γ]; controls = [β, γ])
2727

2828
# Problem
2929
u0 = [S => 990.0, I => 10.0, R => 0.0]
@@ -55,4 +55,4 @@ p = [0.05,10.0,0.25,0.1];
5555
prob_map = DiscreteProblem(sir_map!,u0,tspan,p);
5656
sol_map2 = solve(prob_map,FunctionMap());
5757

58-
@test Array(sol_map) Array(sol_map2)
58+
@test Array(sol_map) Array(sol_map2)

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 de = ODESystem(eqs)
16+
@everywhere @named de = ODESystem(eqs)
1717
@everywhere ode_func = ODEFunction(de, [x,y,z], [σ, ρ, β])
1818

1919
@everywhere u0 = [19.,20.,50.]

test/function_registration.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ module MyModule
1818
@register do_something(a)
1919

2020
eq = Dt(u) ~ do_something(x) + MyModule.do_something(x)
21-
sys = ODESystem([eq], t, [u], [x])
21+
@named sys = ODESystem([eq], t, [u], [x])
2222
fun = ODEFunction(sys)
2323

2424
u0 = 5.0
@@ -41,7 +41,7 @@ module MyModule2
4141
@register do_something_2(a)
4242

4343
eq = Dt(u) ~ do_something_2(x) + MyNestedModule.do_something_2(x)
44-
sys = ODESystem([eq], t, [u], [x])
44+
@named sys = ODESystem([eq], t, [u], [x])
4545
fun = ODEFunction(sys)
4646

4747
u0 = 3.0
@@ -63,7 +63,7 @@ end
6363
@register do_something_3(a)
6464

6565
eq = Dt(u) ~ do_something_3(x) + (@__MODULE__).do_something_3(x)
66-
sys = ODESystem([eq], t, [u], [x])
66+
@named sys = ODESystem([eq], t, [u], [x])
6767
fun = ODEFunction(sys)
6868

6969
u0 = 7.0
@@ -101,7 +101,7 @@ function build_ode()
101101
@variables u(t)
102102
Dt = Differential(t)
103103
eq = Dt(u) ~ do_something_4(x) + (@__MODULE__).do_something_4(x)
104-
sys = ODESystem([eq], t, [u], [x])
104+
@named sys = ODESystem([eq], t, [u], [x])
105105
fun = ODEFunction(sys, eval_expression=false)
106106
end
107107
function run_test()

test/jumpsystem.jl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ rate₂ = γ*I+t
1010
affect₂ = [I ~ I - 1, R ~ R + 1]
1111
j₁ = ConstantRateJump(rate₁,affect₁)
1212
j₂ = VariableRateJump(rate₂,affect₂)
13-
js = JumpSystem([j₁,j₂], t, [S,I,R], [β,γ])
13+
@named js = JumpSystem([j₁,j₂], t, [S,I,R], [β,γ])
1414
statetoid = Dict(MT.value(state) => i for (i,state) in enumerate(states(js)))
1515
mtjump1 = MT.assemble_crj(js, j₁, statetoid)
1616
mtjump2 = MT.assemble_vrj(js, j₂, statetoid)
@@ -54,7 +54,7 @@ jump2.affect!(integrator)
5454
rate₃ = γ*I
5555
affect₃ = [I ~ I - 1, R ~ R + 1]
5656
j₃ = ConstantRateJump(rate₃,affect₃)
57-
js2 = JumpSystem([j₁,j₃], t, [S,I,R], [β,γ])
57+
@named js2 = JumpSystem([j₁,j₃], t, [S,I,R], [β,γ])
5858
u₀ = [999,1,0]; p = (0.1/1000,0.01); tspan = (0.,250.)
5959
u₀map = [S => 999, I => 1, R => 0]
6060
parammap ==> .1/1000, γ => .01]
@@ -115,14 +115,14 @@ m2 = getmean(jprob,Nsims)
115115
# mass action jump tests for SIR model
116116
maj1 = MassActionJump(2*β/2, [S => 1, I => 1], [S => -1, I => 1])
117117
maj2 = MassActionJump(γ, [I => 1], [I => -1, R => 1])
118-
js3 = JumpSystem([maj1,maj2], t, [S,I,R], [β,γ])
118+
@named js3 = JumpSystem([maj1,maj2], t, [S,I,R], [β,γ])
119119
dprob = DiscreteProblem(js3, u₀map, tspan, parammap)
120120
jprob = JumpProblem(js3, dprob, Direct())
121121
m3 = getmean(jprob,Nsims)
122122
@test abs(m-m3)/m < .01
123123

124124
# maj jump test with various dep graphs
125-
js3b = JumpSystem([maj1,maj2], t, [S,I,R], [β,γ])
125+
@named js3b = JumpSystem([maj1,maj2], t, [S,I,R], [β,γ])
126126
jprobb = JumpProblem(js3b, dprob, NRM())
127127
m4 = getmean(jprobb,Nsims)
128128
@test abs(m-m4)/m < .01
@@ -133,7 +133,7 @@ m4 = getmean(jprobc,Nsims)
133133
# mass action jump tests for other reaction types (zero order, decay)
134134
maj1 = MassActionJump(2.0, [0 => 1], [S => 1])
135135
maj2 = MassActionJump(γ, [S => 1], [S => -1])
136-
js4 = JumpSystem([maj1,maj2], t, [S], [β,γ])
136+
@named js4 = JumpSystem([maj1,maj2], t, [S], [β,γ])
137137
dprob = DiscreteProblem(js4, [S => 999], (0,1000.), [β => 100.=> .01])
138138
jprob = JumpProblem(js4, dprob, Direct())
139139
m4 = getmean(jprob,Nsims)
@@ -142,7 +142,7 @@ m4 = getmean(jprob,Nsims)
142142
# test second order rx runs
143143
maj1 = MassActionJump(2.0, [0 => 1], [S => 1])
144144
maj2 = MassActionJump(γ, [S => 2], [S => -1])
145-
js4 = JumpSystem([maj1,maj2], t, [S], [β,γ])
145+
@named js4 = JumpSystem([maj1,maj2], t, [S], [β,γ])
146146
dprob = DiscreteProblem(js4, [S => 999], (0,1000.), [β => 100.=> .01])
147147
jprob = JumpProblem(js4, dprob, Direct())
148148
sol = solve(jprob, SSAStepper());
@@ -151,15 +151,15 @@ sol = solve(jprob, SSAStepper());
151151
@testset "Combined system name collisions" begin
152152
sys1 = JumpSystem([maj1, maj2], t, [S], [β, γ], name = :sys1)
153153
sys2 = JumpSystem([maj1, maj2], t, [S], [β, γ], name = :sys1)
154-
@test_throws ArgumentError JumpSystem([sys1.γ ~ sys2.γ], t, [], [], systems = [sys1, sys2])
154+
@test_throws ArgumentError JumpSystem([sys1.γ ~ sys2.γ], t, [], [], systems = [sys1, sys2], name=:foo)
155155
end
156156

157157
# test if param mapper is setup correctly for callbacks
158158
@parameters k1 k2 k3
159159
@variables A(t) B(t)
160160
maj1 = MassActionJump(k1*k3, [0 => 1], [A => -1, B => 1])
161161
maj2 = MassActionJump(k2, [B => 1], [A => 1, B => -1])
162-
js5 = JumpSystem([maj1,maj2], t, [A,B], [k1,k2,k3])
162+
@named js5 = JumpSystem([maj1,maj2], t, [A,B], [k1,k2,k3])
163163
p = [k1 => 2.0, k2 => 0.0, k3 => .5]
164164
u₀ = [A => 100, B => 0]
165165
tspan = (0.0,2000.0)

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-
de = ODESystem(eqs)
15+
@named de = ODESystem(eqs)
1616
ff = ODEFunction(de, [x,y,z], [σ,ρ,β], jac=true)
1717

1818
a = @SVector [1.0,2.0,3.0]

test/linearity.jl

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

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

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

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

test/lowering_solving.jl

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

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

1414
eqs2 = [0 ~ x*y - k,
1515
D(D(x)) ~ σ*(y-x),
1616
D(y) ~ x*-z)-y,
1717
D(z) ~ x*y - β*z]
18-
sys2 = ODESystem(eqs2, t, [x, y, z, k], parameters(sys′))
18+
@named sys2 = ODESystem(eqs2, t, [x, y, z, k], parameters(sys′))
1919
sys2 = ode_order_lowering(sys2)
2020
# test equation/varible ordering
2121
ModelingToolkit.calculate_massmatrix(sys2) == Diagonal([1, 1, 1, 1, 0])
@@ -51,7 +51,7 @@ lorenz2 = ODESystem(eqs,name=:lorenz2)
5151
@variables α(t)
5252
@parameters γ
5353
connections = [0 ~ lorenz1.x + lorenz2.y + α*γ]
54-
connected = ODESystem(connections,t,[α],[γ],systems=[lorenz1,lorenz2])
54+
@named connected = ODESystem(connections,t,[α],[γ],systems=[lorenz1,lorenz2])
5555

5656
u0 = [lorenz1.x => 1.0,
5757
lorenz1.y => 0.0,

test/mass_matrix.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ eqs = [D(y[1]) ~ -k[1]*y[1] + k[3]*y[2]*y[3],
88
D(y[2]) ~ k[1]*y[1] - k[3]*y[2]*y[3] - k[2]*y[2]^2,
99
0 ~ y[1] + y[2] + y[3] - 1]
1010

11-
sys = ODESystem(eqs,t,y,k)
11+
@named sys = ODESystem(eqs,t,y,k)
1212
@test_throws ArgumentError ODESystem(eqs,y[1])
1313
M = calculate_massmatrix(sys)
1414
@test M == [1 0 0

test/nonlinearsystem.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ end
2121
eqs = [0 ~ σ*(y-x),
2222
0 ~ x*-z)-y,
2323
0 ~ x*y - β*z]
24-
ns = NonlinearSystem(eqs, [x,y,z], [σ,ρ,β], defaults = Dict(x => 2))
24+
@named ns = NonlinearSystem(eqs, [x,y,z], [σ,ρ,β], defaults = Dict(x => 2))
2525
@test eval(toexpr(ns)) == ns
2626
test_nlsys_inference("standard", ns, (x, y, z), (σ, ρ, β))
2727
@test begin
@@ -39,7 +39,7 @@ end
3939
eqs = [0 ~ σ*(y-x),
4040
y ~ x*-z),
4141
β*z ~ x*y]
42-
ns = NonlinearSystem(eqs, [x,y,z], [σ,ρ,β])
42+
@named ns = NonlinearSystem(eqs, [x,y,z], [σ,ρ,β])
4343
jac = calculate_jacobian(ns)
4444
@testset "nlsys jacobian" begin
4545
@test canonequal(jac[1,1], σ * -1)
@@ -62,7 +62,7 @@ a = y - x
6262
eqs = [0 ~ σ*a,
6363
0 ~ x*-z)-y,
6464
0 ~ x*y - β*z]
65-
ns = NonlinearSystem(eqs, [x,y,z], [σ,ρ,β])
65+
@named ns = NonlinearSystem(eqs, [x,y,z], [σ,ρ,β])
6666
nlsys_func = generate_function(ns, [x,y,z], [σ,ρ,β])
6767
nf = NonlinearFunction(ns)
6868
jac = calculate_jacobian(ns)
@@ -90,7 +90,7 @@ lorenz = name -> NonlinearSystem(eqs1, [x,y,z,u,F], [σ,ρ,β], name=name)
9090
lorenz1 = lorenz(:lorenz1)
9191
@test_throws ArgumentError NonlinearProblem(lorenz1, zeros(5))
9292
lorenz2 = lorenz(:lorenz2)
93-
connected = NonlinearSystem([s ~ a + lorenz1.x
93+
@named connected = NonlinearSystem([s ~ a + lorenz1.x
9494
lorenz2.y ~ s
9595
lorenz1.F ~ lorenz2.u
9696
lorenz2.F ~ lorenz1.u], [s, a], [], systems=[lorenz1,lorenz2])
@@ -116,7 +116,7 @@ sol = solve(prob, Rodas5())
116116
eqs = [0 ~ σ*(y-x),
117117
0 ~ x*-z)-y,
118118
0 ~ x*y - β*z]
119-
ns = NonlinearSystem(eqs, [x,y,z], [σ,ρ,β])
119+
@named ns = NonlinearSystem(eqs, [x,y,z], [σ,ρ,β])
120120
np = NonlinearProblem(ns, [0,0,0], [1,2,3], jac=true, sparse=true)
121121
@test calculate_jacobian(ns, sparse=true) isa SparseMatrixCSC
122122

@@ -132,7 +132,7 @@ np = NonlinearProblem(ns, [0,0,0], [1,2,3], jac=true, sparse=true)
132132
function issue819()
133133
sys1 = makesys(:sys1)
134134
sys2 = makesys(:sys1)
135-
@test_throws ArgumentError NonlinearSystem([sys2.f ~ sys1.x, sys1.f ~ 0], [], [], systems = [sys1, sys2])
135+
@test_throws ArgumentError NonlinearSystem([sys2.f ~ sys1.x, sys1.f ~ 0], [], [], systems = [sys1, sys2], name=:foo)
136136
end
137137
issue819()
138138
end

0 commit comments

Comments
 (0)