Skip to content

Commit 3d82be2

Browse files
fix: fix DEF parameters for split = true, flatten = false systems
1 parent 3a54d9e commit 3d82be2

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

src/systems/abstractsystem.jl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -753,7 +753,9 @@ function complete(sys::AbstractSystem; split = true, flatten = true)
753753
end
754754
if split && has_index_cache(sys)
755755
@set! sys.index_cache = IndexCache(sys)
756-
all_ps = get_ps(sys)
756+
# Ideally we'd do `get_ps` but if `flatten = false`
757+
# we don't get all of them. So we call `parameters`.
758+
all_ps = parameters(sys; initial_parameters = true)
757759
if !isempty(all_ps)
758760
# reorder parameters by portions
759761
ps_split = reorder_parameters(sys, all_ps)

test/split_parameters.jl

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,3 +268,40 @@ end
268268
@test_nowarn sol = solve(prob)
269269
end
270270
end
271+
272+
@testset "" begin
273+
@mtkmodel SubSystem begin
274+
@parameters begin
275+
c = 1
276+
end
277+
@variables begin
278+
x(t)
279+
end
280+
@equations begin
281+
D(x) ~ c * x
282+
end
283+
end
284+
285+
@mtkmodel System begin
286+
@components begin
287+
subsys = SubSystem()
288+
end
289+
@parameters begin
290+
k = 1
291+
end
292+
@variables begin
293+
y(t)
294+
end
295+
@equations begin
296+
D(y) ~ k * y + subsys.x
297+
end
298+
end
299+
300+
@named sys = System()
301+
sysref = complete(sys)
302+
sys2 = complete(sys; split = true, flatten = false)
303+
ps = Set(full_parameters(sys2))
304+
@test sysref.k in ps
305+
@test sysref.subsys.c in ps
306+
@test length(ps) == 2
307+
end

0 commit comments

Comments
 (0)