4141"""
4242$(TYPEDSIGNATURES)
4343
44- Generate `System` of nonlinear equations which initializes a problem from specified initial conditions of an `AbstractTimeDependentSystem `.
44+ Generate `System` of nonlinear equations which initializes a problem from specified initial conditions of a time-dependent `AbstractSystem `.
4545"""
4646function generate_initializesystem_timevarying (sys:: AbstractSystem ;
4747 op = Dict (),
@@ -71,7 +71,6 @@ function generate_initializesystem_timevarying(sys::AbstractSystem;
7171 eqs_ics = Equation[]
7272 defs = copy (defaults (sys)) # copy so we don't modify sys.defaults
7373 additional_guesses = anydict (guesses)
74- additional_initialization_eqs = Vector {Equation} (initialization_eqs)
7574 guesses = merge (get_guesses (sys), additional_guesses)
7675 idxs_diff = isdiffeq .(eqs)
7776
@@ -190,11 +189,13 @@ function generate_initializesystem_timevarying(sys::AbstractSystem;
190189 push! (pars, get_iv (sys))
191190
192191 # 8) use observed equations for guesses of observed variables if not provided
192+ guessed = Set (keys (defs)) # x(t), D(x(t)), ...
193+ guessed = union (guessed, Set (default_toterm .(guessed))) # x(t), D(x(t)), xˍt(t), ...
193194 for eq in trueobs
194- haskey (defs, eq. lhs) && continue
195- any (x -> isequal ( default_toterm (x), eq. lhs), keys (defs)) && continue
196-
197- defs[eq . lhs] = eq . rhs
195+ if ! ( eq. lhs in guessed)
196+ defs[ eq. lhs] = eq . rhs
197+ # push!(guessed, eq.lhs) # should not encounter eq.lhs twice, so don't need to track it
198+ end
198199 end
199200 append! (eqs_ics, trueobs)
200201
216217"""
217218$(TYPEDSIGNATURES)
218219
219- Generate `System` of nonlinear equations which initializes a problem from specified initial conditions of an `AbstractTimeDependentSystem `.
220+ Generate `System` of nonlinear equations which initializes a problem from specified initial conditions of a time-independent `AbstractSystem `.
220221"""
221222function generate_initializesystem_timeindependent (sys:: AbstractSystem ;
222223 op = Dict (),
@@ -228,12 +229,10 @@ function generate_initializesystem_timeindependent(sys::AbstractSystem;
228229 eqs = equations (sys)
229230 trueobs, eqs = unhack_observed (observed (sys), eqs)
230231 vars = unique ([unknowns (sys); getfield .(trueobs, :lhs )])
231- vars_set = Set (vars) # for efficient in-lookup
232232
233233 eqs_ics = Equation[]
234234 defs = copy (defaults (sys)) # copy so we don't modify sys.defaults
235235 additional_guesses = anydict (guesses)
236- additional_initialization_eqs = Vector {Equation} (initialization_eqs)
237236 guesses = merge (get_guesses (sys), additional_guesses)
238237
239238 # PREPROCESSING
0 commit comments