@@ -157,12 +157,13 @@ function partial_state_selection_graph!(structure::SystemStructure, var_eq_match
157
157
var_eq_matching
158
158
end
159
159
160
- function dummy_derivative_graph! (state:: TransformationState , jac = nothing , ag = nothing ;
160
+ function dummy_derivative_graph! (state:: TransformationState , jac = nothing ,
161
+ (ag, diff_va) = (nothing , nothing );
161
162
kwargs... )
162
163
state. structure. solvable_graph === nothing && find_solvables! (state; kwargs... )
163
- var_eq_matching = complete (pantelides! (state, ag === nothing ? nothing : first (ag) ))
164
+ var_eq_matching = complete (pantelides! (state, ag))
164
165
complete! (state. structure)
165
- dummy_derivative_graph! (state. structure, var_eq_matching, jac, ag )
166
+ dummy_derivative_graph! (state. structure, var_eq_matching, jac, (ag, diff_va) )
166
167
end
167
168
168
169
function compute_diff_level (diff_to_x)
185
186
function dummy_derivative_graph! (structure:: SystemStructure , var_eq_matching, jac,
186
187
(ag, diff_va))
187
188
@unpack eq_to_diff, var_to_diff, graph = structure
188
- display (structure)
189
189
diff_to_eq = invview (eq_to_diff)
190
190
diff_to_var = invview (var_to_diff)
191
191
invgraph = invview (graph)
@@ -197,7 +197,6 @@ function dummy_derivative_graph!(structure::SystemStructure, var_eq_matching, ja
197
197
dummy_derivatives = Int[]
198
198
col_order = Int[]
199
199
nvars = ndsts (graph)
200
- @info " " var_eq_matching
201
200
for vars in var_sccs
202
201
eqs = [var_eq_matching[var] for var in vars if var_eq_matching[var] != = unassigned]
203
202
isempty (eqs) && continue
@@ -249,15 +248,17 @@ function dummy_derivative_graph!(structure::SystemStructure, var_eq_matching, ja
249
248
vars = [diff_to_var[var] for var in vars if diff_to_var[var] != = nothing ]
250
249
end
251
250
end
252
- n_dummys = length (dummy_derivatives)
253
- needed = count (x -> x isa Int, diff_to_eq) - n_dummys
254
- n = 0
255
- for v in diff_va
256
- c, a = ag[v]
257
- n += 1
258
- push! (dummy_derivatives, iszero (c) ? v : a)
259
- needed == n && break
260
- continue
251
+ if diff_va != = nothing
252
+ n_dummys = length (dummy_derivatives)
253
+ needed = count (x -> x isa Int, diff_to_eq) - n_dummys
254
+ n = 0
255
+ for v in diff_va
256
+ c, a = ag[v]
257
+ n += 1
258
+ push! (dummy_derivatives, iszero (c) ? v : a)
259
+ needed == n && break
260
+ continue
261
+ end
261
262
end
262
263
263
264
dummy_derivatives_set = BitSet (dummy_derivatives)
0 commit comments