@@ -61,6 +61,12 @@ function generate_initializesystem_timevarying(sys::AbstractSystem;
6161 isempty (trueobs) || filter_delay_equations_variables! (sys, trueobs)
6262 vars = unique ([unknowns (sys); getfield .(trueobs, :lhs )])
6363 vars_set = Set (vars) # for efficient in-lookup
64+ arrvars = Set ()
65+ for var in vars
66+ if iscall (var) && operation (var) === getindex
67+ push! (arrvars, first (arguments (var)))
68+ end
69+ end
6470
6571 eqs_ics = Equation[]
6672 defs = copy (defaults (sys)) # copy so we don't modify sys.defaults
@@ -71,9 +77,13 @@ function generate_initializesystem_timevarying(sys::AbstractSystem;
7177
7278 # PREPROCESSING
7379 op = anydict (op)
80+ if isempty (op)
81+ op = copy (defs)
82+ end
83+ scalarize_vars_in_varmap! (op, arrvars)
7484 u0map = anydict ()
7585 pmap = anydict ()
76- build_operating_point! (sys, op, u0map, pmap, defs , unknowns (sys),
86+ build_operating_point! (sys, op, u0map, pmap, Dict () , unknowns (sys),
7787 parameters (sys; initial_parameters = true ))
7888 for (k, v) in op
7989 if has_parameter_dependency_with_lhs (sys, k) && is_variable_floatingpoint (k)
@@ -144,7 +154,7 @@ function generate_initializesystem_timevarying(sys::AbstractSystem;
144154
145155 # 3) process other variables
146156 for var in vars
147- if var ∈ keys (defs )
157+ if var ∈ keys (op )
148158 push! (eqs_ics, var ~ defs[var])
149159 elseif var ∈ keys (guesses)
150160 push! (defs, var => guesses[var])
@@ -238,7 +248,7 @@ function generate_initializesystem_timeindependent(sys::AbstractSystem;
238248 op = anydict (op)
239249 u0map = anydict ()
240250 pmap = anydict ()
241- build_operating_point! (sys, op, u0map, pmap, defs , unknowns (sys),
251+ build_operating_point! (sys, op, u0map, pmap, Dict () , unknowns (sys),
242252 parameters (sys; initial_parameters = true ))
243253 for (k, v) in op
244254 if has_parameter_dependency_with_lhs (sys, k) && is_variable_floatingpoint (k)
0 commit comments