File tree Expand file tree Collapse file tree 1 file changed +18
-1
lines changed
src/structural_transformation Expand file tree Collapse file tree 1 file changed +18
-1
lines changed Original file line number Diff line number Diff line change @@ -184,6 +184,23 @@ function dummy_derivative_graph!(
184
184
diff_to_eq = invview (eq_to_diff)
185
185
diff_to_var = invview (var_to_diff)
186
186
invgraph = invview (graph)
187
+ extended_sp = let state_priority = state_priority, var_to_diff = var_to_diff,
188
+ diff_to_var = diff_to_var
189
+
190
+ var -> begin
191
+ min_p = max_p = 0.0
192
+ while var_to_diff[var] != = nothing
193
+ var = var_to_diff[var]
194
+ end
195
+ while true
196
+ p = state_priority (var)
197
+ max_p = max (max_p, p)
198
+ min_p = min (min_p, p)
199
+ (var = diff_to_var[var]) === nothing && break
200
+ end
201
+ min_p < 0 ? min_p : max_p
202
+ end
203
+ end
187
204
188
205
var_sccs = find_var_sccs (graph, var_eq_matching)
189
206
eqcolor = falses (nsrcs (graph))
@@ -225,7 +242,7 @@ function dummy_derivative_graph!(
225
242
iszero (nrows) && break
226
243
227
244
if state_priority != = nothing && isfirst
228
- sort! (vars, by = state_priority )
245
+ sort! (vars, by = extended_sp )
229
246
end
230
247
# TODO : making the algorithm more robust
231
248
# 1. If the Jacobian is a integer matrix, use Bareiss to check
You can’t perform that action at this time.
0 commit comments