Skip to content

Commit 355baea

Browse files
committed
Also forward guesses in extend(), in case initialization equations are nonlinear
1 parent bb40ca8 commit 355baea

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

src/systems/abstractsystem.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2528,18 +2528,19 @@ function extend(sys::AbstractSystem, basesys::AbstractSystem; name::Symbol = nam
25282528
cevs = union(get_continuous_events(basesys), get_continuous_events(sys))
25292529
devs = union(get_discrete_events(basesys), get_discrete_events(sys))
25302530
defs = merge(get_defaults(basesys), get_defaults(sys)) # prefer `sys`
2531+
guesses = merge(get_guesses(basesys), get_guesses(sys)) # prefer `sys`
25312532
ieqs = union(get_initialization_eqs(basesys), get_initialization_eqs(sys))
25322533
syss = union(get_systems(basesys), get_systems(sys))
25332534

25342535
if length(ivs) == 0
25352536
T(eqs, sts, ps, observed = obs, defaults = defs, name = name, systems = syss,
25362537
continuous_events = cevs, discrete_events = devs, gui_metadata = gui_metadata,
2537-
parameter_dependencies = dep_ps, initialization_eqs = ieqs)
2538+
parameter_dependencies = dep_ps, initialization_eqs = ieqs, guesses = guesses)
25382539
elseif length(ivs) == 1
25392540
T(eqs, ivs[1], sts, ps, observed = obs, defaults = defs, name = name,
25402541
systems = syss, continuous_events = cevs, discrete_events = devs,
25412542
gui_metadata = gui_metadata, parameter_dependencies = dep_ps,
2542-
initialization_eqs = ieqs)
2543+
initialization_eqs = ieqs, guesses = guesses)
25432544
end
25442545
end
25452546

test/initializationsystem.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -448,10 +448,11 @@ unsimp = generate_initializesystem(pend; u0map = [x => 1], initialization_eqs =
448448
sys = structural_simplify(unsimp; fully_determined = false)
449449
@test length(equations(sys)) == 3
450450

451-
# Extend two systems with initialization equations
451+
# Extend two systems with initialization equations and guesses
452452
# https://github.com/SciML/ModelingToolkit.jl/issues/2845
453453
@variables x(t) y(t)
454454
@named sysx = ODESystem([D(x) ~ 0], t; initialization_eqs = [x ~ 1])
455-
@named sysy = ODESystem([D(y) ~ 0], t; initialization_eqs = [y ~ 2])
455+
@named sysy = ODESystem([D(y) ~ 0], t; initialization_eqs = [y^2 ~ 2], guesses = [y => 1])
456456
sys = extend(sysx, sysy)
457457
@test length(equations(generate_initializesystem(sys))) == 2
458+
@test length(ModelingToolkit.guesses(sys)) == 1

0 commit comments

Comments
 (0)