Skip to content

Commit c0ba097

Browse files
committed
Only allocate IncrementalCycleTracker once in tearing
```julia julia> @time sysRed, = structural_simplify(sysEx, (inputs=(), outputs=())); 5.951818 seconds (31.59 M allocations: 2.248 GiB, 10.44% gc time) ```
1 parent 0eec6a0 commit c0ba097

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

src/structural_transformation/bipartite_tearing/modia_tearing.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,8 @@ function tearEquations!(ict::IncrementalCycleTracker, Gsolvable, es::Vector{Int}
4848
return ict
4949
end
5050

51-
function tear_graph_block_modia!(var_eq_matching, vargraph, solvable_graph, eqs, vars,
51+
function tear_graph_block_modia!(var_eq_matching, ict, solvable_graph, eqs, vars,
5252
isder::F) where {F}
53-
ict = IncrementalCycleTracker(vargraph; dir = :in)
5453
tearEquations!(ict, solvable_graph.fadjlist, eqs, vars, isder)
5554
for var in vars
5655
var_eq_matching[var] = ict.graph.matching[var]
@@ -77,6 +76,7 @@ function tear_graph_modia(structure::SystemStructure, isder::F = nothing,
7776
var_eq_matching = complete(maximal_matching(graph, eqfilter, varfilter, U))
7877
var_sccs::Vector{Union{Vector{Int}, Int}} = find_var_sccs(graph, var_eq_matching)
7978
vargraph = DiCMOBiGraph{true}(graph)
79+
ict = IncrementalCycleTracker(vargraph; dir = :in)
8080

8181
ieqs = Int[]
8282
filtered_vars = BitSet()
@@ -90,7 +90,7 @@ function tear_graph_modia(structure::SystemStructure, isder::F = nothing,
9090
end
9191
var_eq_matching[var] = unassigned
9292
end
93-
tear_graph_block_modia!(var_eq_matching, vargraph, solvable_graph, ieqs,
93+
tear_graph_block_modia!(var_eq_matching, ict, solvable_graph, ieqs,
9494
filtered_vars,
9595
isder)
9696

0 commit comments

Comments
 (0)