@@ -104,16 +104,21 @@ function gen_nlsolve!(is_not_prepended_assignment, eqs, vars, u0map::AbstractDic
104
104
105
105
# Compute necessary assignments for the nlsolve expr
106
106
init_assignments = [var2assignment[p] for p in paramset if haskey (var2assignment, p)]
107
- tmp = [init_assignments]
108
- # `deps[init_assignments]` gives the dependency of `init_assignments`
109
- while true
110
- next_assignments = reduce (vcat, deps[init_assignments])
111
- isempty (next_assignments) && break
112
- init_assignments = next_assignments
113
- push! (tmp, init_assignments)
107
+ if isempty (init_assignments)
108
+ needed_assignments_idxs = Int[]
109
+ needed_assignments = similar (assignments, 0 )
110
+ else
111
+ tmp = [init_assignments]
112
+ # `deps[init_assignments]` gives the dependency of `init_assignments`
113
+ while true
114
+ next_assignments = reduce (vcat, deps[init_assignments])
115
+ isempty (next_assignments) && break
116
+ init_assignments = next_assignments
117
+ push! (tmp, init_assignments)
118
+ end
119
+ needed_assignments_idxs = reduce (vcat, unique (reverse (tmp)))
120
+ needed_assignments = assignments[needed_assignments_idxs]
114
121
end
115
- needed_assignments_idxs = reduce (vcat, unique (reverse (tmp)))
116
- needed_assignments = assignments[needed_assignments_idxs]
117
122
118
123
# Compute `params`. They are like enclosed variables
119
124
rhsvars = [ModelingToolkit. vars (r. rhs) for r in needed_assignments]
0 commit comments