Skip to content

Commit 65f007d

Browse files
committed
Fix systems keyword argument handling in System
1 parent 265f9ec commit 65f007d

File tree

4 files changed

+32
-26
lines changed

4 files changed

+32
-26
lines changed

src/systems/abstractsystem.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -505,7 +505,7 @@ function namespace_expr(O, sys, n = nameof(sys))
505505
# metadata from the rescoped variable
506506
rescoped = renamespace(n, O)
507507
similarterm(O, operation(rescoped), renamed,
508-
metadata = metadata(rescoped))::T
508+
metadata = metadata(rescoped))::T
509509
else
510510
similarterm(O, operation(O), renamed, metadata = metadata(O))::T
511511
end

src/systems/systems.jl

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

66
"""

test/dde.jl

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -83,26 +83,30 @@ sys = structural_simplify(sys)
8383
prob_mtk = SDDEProblem(sys, [x(t) => 1.0 + t], tspan; constant_lags = (τ,));
8484
@test_nowarn sol_mtk = solve(prob_mtk, RKMil())
8585

86-
8786
@variables t
8887
D = Differential(t)
8988
@parameters x(..) a
9089

91-
function oscillator(;name, k=1.0, τ=0.01)
90+
function oscillator(; name, k = 1.0, τ = 0.01)
9291
@parameters k=k τ=τ
9392
@variables x(..)=0.1 y(t)=0.1 jcn(t)=0.0 delx(t)
9493
eqs = [D(x(t)) ~ y,
95-
D(y) ~ -k*x(t-τ)+jcn,
96-
delx ~ x(t-τ)]
97-
return System(eqs; name=name)
94+
D(y) ~ -k * x(t - τ) + jcn,
95+
delx ~ x(t - τ)]
96+
return System(eqs; name = name)
9897
end
9998

100-
@named osc1 = oscillator(k=1.0, τ=0.01)
101-
@named osc2 = oscillator(k=2.0, τ=0.04)
99+
systems = @named begin
100+
osc1 = oscillator(k = 1.0, τ = 0.01)
101+
osc2 = oscillator(k = 2.0, τ = 0.04)
102+
end
102103
eqs = [osc1.jcn ~ osc2.delx,
103-
osc2.jcn ~ osc1.delx]
104+
osc2.jcn ~ osc1.delx]
104105
@named coupledOsc = System(eqs, t)
105-
@named coupledOsc = compose(coupledOsc, [osc1, osc2])
106-
sys = structural_simplify(coupledOsc)
107-
@test length(equations(sys)) == 4
108-
@test length(states(sys)) == 4
106+
@named coupledOsc = compose(coupledOsc, systems)
107+
@named coupledOsc2 = System(eqs, t; systems)
108+
for coupledOsc in [coupledOsc, coupledOsc2]
109+
local sys = structural_simplify(coupledOsc)
110+
@test length(equations(sys)) == 4
111+
@test length(states(sys)) == 4
112+
end

test/optimizationsystem.jl

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -207,18 +207,20 @@ end
207207
prob = OptimizationProblem(combinedsys, u0, p, grad = true, hess = true, cons_j = true,
208208
cons_h = true)
209209
@test prob.f.sys === combinedsys
210-
@test_broken SciMLBase.successful_retcode(solve(prob, Ipopt.Optimizer(); print_level = 0))
211-
#=
212-
@test sol.minimum < -1e5
213-
214-
prob = OptimizationProblem(sys2, [x => 0.0, y => 0.0], [a => 1.0, b => 100.0],
215-
grad = true, hess = true, cons_j = true, cons_h = true)
216-
@test prob.f.sys === sys2
217-
sol = solve(prob, IPNewton())
218-
@test sol.minimum < 1.0
219-
sol = solve(prob, Ipopt.Optimizer(); print_level = 0)
220-
@test sol.minimum < 1.0
221-
=#
210+
@test_broken SciMLBase.successful_retcode(solve(prob,
211+
Ipopt.Optimizer();
212+
print_level = 0))
213+
#=
214+
@test sol.minimum < -1e5
215+
216+
prob = OptimizationProblem(sys2, [x => 0.0, y => 0.0], [a => 1.0, b => 100.0],
217+
grad = true, hess = true, cons_j = true, cons_h = true)
218+
@test prob.f.sys === sys2
219+
sol = solve(prob, IPNewton())
220+
@test sol.minimum < 1.0
221+
sol = solve(prob, Ipopt.Optimizer(); print_level = 0)
222+
@test sol.minimum < 1.0
223+
=#
222224
end
223225

224226
@testset "metadata" begin

0 commit comments

Comments
 (0)