File tree 2 files changed +18
-1
lines changed
2 files changed +18
-1
lines changed Original file line number Diff line number Diff line change @@ -165,7 +165,16 @@ function generate_initializesystem(sys::ODESystem;
165
165
[p for p in parameters (sys) if ! haskey (paramsubs, p)]
166
166
)
167
167
168
- eqs_ics = Symbolics. substitute .([eqs_ics; observed (sys)], (paramsubs,))
168
+ # 7) use observed equations for guesses of observed variables if not provided
169
+ obseqs = observed (sys)
170
+ for eq in obseqs
171
+ haskey (defs, eq. lhs) && continue
172
+ any (x -> isequal (default_toterm (x), eq. lhs), keys (defs)) && continue
173
+
174
+ defs[eq. lhs] = eq. rhs
175
+ end
176
+
177
+ eqs_ics = Symbolics. substitute .([eqs_ics; obseqs], (paramsubs,))
169
178
vars = [vars; collect (values (paramsubs))]
170
179
for k in keys (defs)
171
180
defs[k] = substitute (defs[k], paramsubs)
Original file line number Diff line number Diff line change 836
836
integ = init (prob, Rosenbrock23 ())
837
837
@test integ[y] ≈ - 0.5
838
838
end
839
+
840
+ @testset " Use observed equations for guesses of observed variables" begin
841
+ @variables x (t) y (t) [state_priority = 100 ]
842
+ @mtkbuild sys = ODESystem (
843
+ [D (x) ~ x + t, y ~ 2 x + 1 ], t; initialization_eqs = [x^ 3 + y^ 3 ~ 1 ])
844
+ isys = ModelingToolkit. generate_initializesystem (sys)
845
+ @test isequal (defaults (isys)[y], 2 x + 1 )
846
+ end
You can’t perform that action at this time.
0 commit comments