Skip to content

Commit fd869e1

Browse files
fix: propagate iip of parent problem to InitializationProblem
1 parent 35a7659 commit fd869e1

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

src/systems/problem_utils.jl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -867,7 +867,7 @@ denotes whether the `SciMLProblem` being constructed is in implicit DAE form (`D
867867
All other keyword arguments are forwarded to `InitializationProblem`.
868868
"""
869869
function maybe_build_initialization_problem(
870-
sys::AbstractSystem, op::AbstractDict, u0map, pmap, t, defs,
870+
sys::AbstractSystem, iip, op::AbstractDict, u0map, pmap, t, defs,
871871
guesses, missing_unknowns; implicit_dae = false, u0_constructor = identity,
872872
p_constructor = identity, floatT = Float64, initialization_eqs = [],
873873
use_scc = true, kwargs...)
@@ -877,7 +877,7 @@ function maybe_build_initialization_problem(
877877
t = zero(floatT)
878878
end
879879

880-
initializeprob = ModelingToolkit.InitializationProblem{true, SciMLBase.FullSpecialize}(
880+
initializeprob = ModelingToolkit.InitializationProblem{iip}(
881881
sys, t, u0map, pmap; guesses, initialization_eqs,
882882
use_scc, u0_constructor, p_constructor, kwargs...)
883883
if state_values(initializeprob) !== nothing
@@ -1105,7 +1105,8 @@ function process_SciMLProblem(
11051105

11061106
if build_initializeprob
11071107
kws = maybe_build_initialization_problem(
1108-
sys, op, u0map, pmap, t, defs, guesses, missing_unknowns;
1108+
sys, constructor <: SciMLBase.AbstractSciMLFunction{true},
1109+
op, u0map, pmap, t, defs, guesses, missing_unknowns;
11091110
implicit_dae, warn_initialize_determined, initialization_eqs,
11101111
eval_expression, eval_module, fully_determined,
11111112
warn_cyclic_dependency, check_units = check_initialization_units,

test/initializationsystem.jl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1611,3 +1611,16 @@ end
16111611
[g => 1.0]; guesses = [y => 1.0, λ => 1.0])
16121612
@test !ModelingToolkit.is_split(prob.f.initialization_data.initializeprob.f.sys)
16131613
end
1614+
1615+
@testset "`InitializationProblem` retains `iip` of parent" begin
1616+
@parameters g
1617+
@variables x(t) y(t) [state_priority = 10] λ(t)
1618+
eqs = [D(D(x)) ~ λ * x
1619+
D(D(y)) ~ λ * y - g
1620+
x^2 + y^2 ~ 1]
1621+
@mtkbuild pend = ODESystem(eqs, t)
1622+
prob = ODEProblem(pend, SA[x => 1.0, D(x) => 0.0], (0.0, 1.0),
1623+
SA[g => 1.0]; guesses = [y => 1.0, λ => 1.0])
1624+
@test !SciMLBase.isinplace(prob)
1625+
@test !SciMLBase.isinplace(prob.f.initialization_data.initializeprob)
1626+
end

0 commit comments

Comments
 (0)