File tree Expand file tree Collapse file tree 2 files changed +18
-1
lines changed Expand file tree Collapse file tree 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;
165165 [p for p in parameters (sys) if ! haskey (paramsubs, p)]
166166 )
167167
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,))
169178 vars = [vars; collect (values (paramsubs))]
170179 for k in keys (defs)
171180 defs[k] = substitute (defs[k], paramsubs)
Original file line number Diff line number Diff line change 836836 integ = init (prob, Rosenbrock23 ())
837837 @test integ[y] ≈ - 0.5
838838end
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