Skip to content

Commit 0162555

Browse files
committed
Respect solvability options
1 parent 80785c5 commit 0162555

File tree

3 files changed

+8
-7
lines changed

3 files changed

+8
-7
lines changed

src/structural_transformation/utils.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ function find_solvables!(state::TearingState; kwargs...)
231231
return nothing
232232
end
233233

234-
function linear_subsys_adjmat!(state::TransformationState)
234+
function linear_subsys_adjmat!(state::TransformationState; kwargs...)
235235
graph = state.structure.graph
236236
if state.structure.solvable_graph === nothing
237237
state.structure.solvable_graph = BipartiteGraph(nsrcs(graph), ndsts(graph))
@@ -243,7 +243,7 @@ function linear_subsys_adjmat!(state::TransformationState)
243243
coeffs = Int[]
244244
to_rm = Int[]
245245
for i in eachindex(eqs)
246-
all_int_vars, rhs = find_eq_solvables!(state, i, to_rm, coeffs)
246+
all_int_vars, rhs = find_eq_solvables!(state, i, to_rm, coeffs; kwargs...)
247247

248248
# Check if all states in the equation is both linear and homogeneous,
249249
# i.e. it is in the form of

src/systems/abstractsystem.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1035,7 +1035,7 @@ function structural_simplify(sys::AbstractSystem, io = nothing; simplify = false
10351035
has_io = io !== nothing
10361036
has_io && markio!(state, io...)
10371037
state, input_idxs = inputs_to_parameters!(state, io)
1038-
sys, ag = alias_elimination!(state)
1038+
sys, ag = alias_elimination!(state; kwargs...)
10391039
#ag = AliasGraph(length(ag))
10401040
# TODO: avoid construct `TearingState` again.
10411041
#state = TearingState(sys)

src/systems/alias_elimination.jl

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ using Graphs.Experimental.Traversals
44

55
const KEEP = typemin(Int)
66

7-
function alias_eliminate_graph!(state::TransformationState)
8-
mm = linear_subsys_adjmat!(state)
7+
function alias_eliminate_graph!(state::TransformationState; kwargs...)
8+
mm = linear_subsys_adjmat!(state; kwargs...)
99
if size(mm, 1) == 0
1010
ag = AliasGraph(ndsts(state.structure.graph))
1111
return ag, mm, ag, mm, BitSet() # No linear subsystems
@@ -48,11 +48,12 @@ function extreme_var(var_to_diff, v, level = nothing, ::Val{descend} = Val(true)
4848
end
4949

5050
alias_elimination(sys) = alias_elimination!(TearingState(sys))[1]
51-
function alias_elimination!(state::TearingState)
51+
function alias_elimination!(state::TearingState; kwargs...)
5252
sys = state.sys
5353
complete!(state.structure)
5454
graph_orig = copy(state.structure.graph)
55-
ag, mm, complete_ag, complete_mm, updated_diff_vars = alias_eliminate_graph!(state)
55+
ag, mm, complete_ag, complete_mm, updated_diff_vars = alias_eliminate_graph!(state;
56+
kwargs...)
5657
isempty(ag) && return sys, ag
5758

5859
fullvars = state.fullvars

0 commit comments

Comments
 (0)