Skip to content

Commit 13ab6d9

Browse files
Merge pull request #2574 from SciML/fixedpoint_sub_diff
Handle derivatives of observed variables
2 parents 043abf3 + 307b52d commit 13ab6d9

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

src/systems/nonlinear/initializesystem.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ function generate_initializesystem(sys::ODESystem;
2020

2121
eqs_diff = eqs[idxs_diff]
2222
diffmap = Dict(getfield.(eqs_diff, :lhs) .=> getfield.(eqs_diff, :rhs))
23+
observed_diffmap = Dict(Differential(get_iv(sys)).(getfield.((observed(sys)), :lhs)) .=>
24+
Differential(get_iv(sys)).(getfield.((observed(sys)), :rhs)))
2325

2426
full_states = unique([sts; getfield.((observed(sys)), :lhs)])
2527
set_full_states = Set(full_states)
@@ -36,7 +38,9 @@ function generate_initializesystem(sys::ODESystem;
3638
filtered_u0 = Pair[]
3739
for x in u0map
3840
y = get(schedule.dummy_sub, x[1], x[1])
41+
y = ModelingToolkit.fixpoint_sub(y, observed_diffmap)
3942
y = get(diffmap, y, y)
43+
4044
if y isa Symbolics.Arr
4145
_y = collect(y)
4246

0 commit comments

Comments
 (0)