Skip to content

Commit 15fb729

Browse files
committed
update symbolic parameters testcases
1 parent cf12de8 commit 15fb729

File tree

2 files changed

+18
-10
lines changed

2 files changed

+18
-10
lines changed

src/systems/abstractsystem.jl

+1-1
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ namespace_parameters(sys::AbstractSystem) = parameters(sys, parameters(sys))
208208

209209
function namespace_default_u0(sys)
210210
d_u0 = default_u0(sys)
211-
Dict(states(sys, k) => d_u0[k] for k in keys(d_u0))
211+
Dict(states(sys, k) => namespace_expr(d_u0[k], nameof(sys), independent_variable(sys)) for k in keys(d_u0))
212212
end
213213

214214
function namespace_default_p(sys)

test/symbolic_parameters.jl

+17-9
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ using ModelingToolkit
22
using NonlinearSolve
33
using Test
44

5-
@variables x y z
5+
@variables x y z u
66
@parameters σ ρ β
77

88
eqs = [0 ~ σ*(y-x),
@@ -14,22 +14,30 @@ par = [
1414
ρ => 0.1+σ,
1515
β => ρ*1.1
1616
]
17-
ns = NonlinearSystem(eqs, [x,y,z],[σ,ρ,β], name=:ns, default_p=par)
17+
u0 = [
18+
x => u,
19+
y => u,
20+
z => u,
21+
]
22+
ns = NonlinearSystem(eqs, [x,y,z],[σ,ρ,β], name=:ns, default_p=par, default_u0=u0)
1823
ModelingToolkit.default_p(ns)
1924
resolved = ModelingToolkit.varmap_to_vars(Dict(), parameters(ns), defaults=ModelingToolkit.default_p(ns))
2025
@test resolved == [1, 0.1+1, (0.1+1)*1.1]
2126

22-
prob = NonlinearProblem(ns, ones(3), Pair[])
27+
prob = NonlinearProblem(ns, [u=>1.0], Pair[])
2328
@show sol = solve(prob,NewtonRaphson())
2429

2530
@variables a
2631
@parameters b
27-
top = NonlinearSystem([0 ~ -a + ns.x+1], [a], [b], systems=[ns], name=:top)
28-
flat = flatten(top)
29-
flat.b = ns.σ*0.5
32+
top = NonlinearSystem([0 ~ -a + ns.x+b], [a], [b], systems=[ns], name=:top)
33+
top.b = ns.σ*0.5
34+
35+
res = ModelingToolkit.varmap_to_vars(Dict(), parameters(top), defaults=ModelingToolkit.default_p(top))
36+
@test res == [0.5, 1, 0.1+1, (0.1+1)*1.1]
3037

31-
flatres = ModelingToolkit.varmap_to_vars(Dict(), parameters(flat), defaults=ModelingToolkit.default_p(flat))
32-
@test flatres == [0.5, 1, 0.1+1, (0.1+1)*1.1]
38+
prob = NonlinearProblem(top, [states(ns, u)=>1.0, a=>1.0], Pair[])
39+
@show sol = solve(prob,NewtonRaphson())
3340

34-
prob = NonlinearProblem(flat, ones(4), Pair[])
41+
# test NullParameters+defaults
42+
prob = NonlinearProblem(top, [states(ns, u)=>1.0, a=>1.0])
3543
@show sol = solve(prob,NewtonRaphson())

0 commit comments

Comments
 (0)