Skip to content

Commit 09f282e

Browse files
committed
Handle the trivial case of dependency chasing
1 parent 6e98586 commit 09f282e

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

src/structural_transformation/codegen.jl

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -104,16 +104,21 @@ function gen_nlsolve!(is_not_prepended_assignment, eqs, vars, u0map::AbstractDic
104104

105105
# Compute necessary assignments for the nlsolve expr
106106
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]
114121
end
115-
needed_assignments_idxs = reduce(vcat, unique(reverse(tmp)))
116-
needed_assignments = assignments[needed_assignments_idxs]
117122

118123
# Compute `params`. They are like enclosed variables
119124
rhsvars = [ModelingToolkit.vars(r.rhs) for r in needed_assignments]

0 commit comments

Comments
 (0)