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 @@ -160,7 +160,16 @@ function generate_initializesystem(sys::ODESystem;
160160 [p for p in parameters (sys) if ! haskey (paramsubs, p)]
161161 )
162162
163- eqs_ics = Symbolics. substitute .([eqs_ics; observed (sys)], (paramsubs,))
163+ # 7) use observed equations for guesses of observed variables if not provided
164+ obseqs = observed (sys)
165+ for eq in obseqs
166+ haskey (defs, eq. lhs) && continue
167+ any (x -> isequal (default_toterm (x), eq. lhs), keys (defs)) && continue
168+
169+ defs[eq. lhs] = eq. rhs
170+ end
171+
172+ eqs_ics = Symbolics. substitute .([eqs_ics; obseqs], (paramsubs,))
164173 vars = [vars; collect (values (paramsubs))]
165174 for k in keys (defs)
166175 defs[k] = substitute (defs[k], paramsubs)
Original file line number Diff line number Diff line change 815815 prob2 = @test_nowarn remake (prob; u0 = [y => 0.5 ])
816816 @test is_variable (prob. f. initializeprob, p)
817817end
818+
819+ @testset " Use observed equations for guesses of observed variables" begin
820+ @variables x (t) y (t) [state_priority = 100 ]
821+ @mtkbuild sys = ODESystem (
822+ [D (x) ~ x + t, y ~ 2 x + 1 ], t; initialization_eqs = [x^ 3 + y^ 3 ~ 1 ])
823+ isys = ModelingToolkit. generate_initializesystem (sys)
824+ @test isequal (defaults (isys)[y], 2 x + 1 )
825+ end
You can’t perform that action at this time.
0 commit comments