Skip to content

Commit eaadd31

Browse files
fix: fix DEF parameters for split = true, flatten = false systems
1 parent a553fd1 commit eaadd31

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

src/systems/abstractsystem.jl

+3-1
Original file line numberDiff line numberDiff line change
@@ -769,7 +769,9 @@ function complete(sys::AbstractSystem; split = true, flatten = true)
769769
end
770770
if split && has_index_cache(sys)
771771
@set! sys.index_cache = IndexCache(sys)
772-
all_ps = get_ps(sys)
772+
# Ideally we'd do `get_ps` but if `flatten = false`
773+
# we don't get all of them. So we call `parameters`.
774+
all_ps = parameters(sys; initial_parameters = true)
773775
if !isempty(all_ps)
774776
# reorder parameters by portions
775777
ps_split = reorder_parameters(sys, all_ps)

test/split_parameters.jl

+37
Original file line numberDiff line numberDiff line change
@@ -275,3 +275,40 @@ end
275275
@test_nowarn sol = solve(prob)
276276
end
277277
end
278+
279+
@testset "" begin
280+
@mtkmodel SubSystem begin
281+
@parameters begin
282+
c = 1
283+
end
284+
@variables begin
285+
x(t)
286+
end
287+
@equations begin
288+
D(x) ~ c * x
289+
end
290+
end
291+
292+
@mtkmodel System begin
293+
@components begin
294+
subsys = SubSystem()
295+
end
296+
@parameters begin
297+
k = 1
298+
end
299+
@variables begin
300+
y(t)
301+
end
302+
@equations begin
303+
D(y) ~ k * y + subsys.x
304+
end
305+
end
306+
307+
@named sys = System()
308+
sysref = complete(sys)
309+
sys2 = complete(sys; split = true, flatten = false)
310+
ps = Set(full_parameters(sys2))
311+
@test sysref.k in ps
312+
@test sysref.subsys.c in ps
313+
@test length(ps) == 2
314+
end

0 commit comments

Comments
 (0)