@@ -48,9 +48,9 @@ function tearEquations!(ict::IncrementalCycleTracker, Gsolvable, es::Vector{Int}
48
48
return ict
49
49
end
50
50
51
- function tear_graph_block_modia! (var_eq_matching, graph , solvable_graph, eqs, vars,
51
+ function tear_graph_block_modia! (var_eq_matching, vargraph , solvable_graph, eqs, vars,
52
52
isder:: F ) where {F}
53
- ict = IncrementalCycleTracker (DiCMOBiGraph {true} (graph) ; dir = :in )
53
+ ict = IncrementalCycleTracker (vargraph ; dir = :in )
54
54
tearEquations! (ict, solvable_graph. fadjlist, eqs, vars, isder)
55
55
for var in vars
56
56
var_eq_matching[var] = ict. graph. matching[var]
@@ -76,6 +76,7 @@ function tear_graph_modia(structure::SystemStructure, isder::F = nothing,
76
76
@unpack graph, solvable_graph = structure
77
77
var_eq_matching = complete (maximal_matching (graph, eqfilter, varfilter, U))
78
78
var_sccs:: Vector{Union{Vector{Int}, Int}} = find_var_sccs (graph, var_eq_matching)
79
+ vargraph = DiCMOBiGraph {true} (graph)
79
80
80
81
ieqs = Int[]
81
82
filtered_vars = BitSet ()
@@ -89,8 +90,15 @@ function tear_graph_modia(structure::SystemStructure, isder::F = nothing,
89
90
end
90
91
var_eq_matching[var] = unassigned
91
92
end
92
- tear_graph_block_modia! (var_eq_matching, graph, solvable_graph, ieqs, filtered_vars,
93
+ tear_graph_block_modia! (var_eq_matching, vargraph, solvable_graph, ieqs,
94
+ filtered_vars,
93
95
isder)
96
+
97
+ # clear cache
98
+ vargraph. ne = 0
99
+ for var in vars
100
+ vargraph. matching[var] = unassigned
101
+ end
94
102
empty! (ieqs)
95
103
empty! (filtered_vars)
96
104
end
0 commit comments