Skip to content

Commit 3152721

Browse files
Merge pull request #25 from JuliaComputing/as/rm-unused-variables
fix: remove bindings, initial conditions for unused variables
2 parents 65a1c61 + a80c86a commit 3152721

2 files changed

Lines changed: 17 additions & 1 deletion

File tree

lib/ModelingToolkitTearing/src/reassemble.jl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -551,7 +551,6 @@ function get_linear_scc_linsol(state::TearingState, alg_eqs::Vector{Int},
551551
for (varidx, var) in enumerate(vars)
552552
a, resid, islinear = Symbolics.linear_expansion(resid, var)
553553
islinear || return nothing
554-
@assert islinear
555554
A[eqidx, varidx] = a
556555
end
557556
# `-` is important! `b` is on the other side of the equality.

lib/ModelingToolkitTearing/src/tearingstate.jl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,24 @@ function TearingState(sys::System, source_info::Union{Nothing, MTKBase.EquationS
287287
# build incidence graph
288288
graph = build_incidence_graph(length(fullvars), symbolic_incidence, var2idx)
289289

290+
# Identify unknowns that do not appear in any equations and are thus not present in
291+
# `fullvars`. The bindings and initial conditions for these variables should be removed.
292+
for v in fullvars
293+
delete!(dvs, v)
294+
arr, _ = MTKBase.split_indexed_var(v)
295+
delete!(dvs, arr)
296+
end
297+
new_binds = copy(parent(bindings(sys)))
298+
new_ics = copy(initial_conditions(sys))
299+
for var in dvs
300+
arr, _ = MTKBase.split_indexed_var(var)
301+
delete!(new_binds, arr)
302+
delete!(new_ics, arr)
303+
end
304+
290305
@set! sys.eqs = eqs
306+
@set! sys.bindings = new_binds
307+
@set! sys.initial_conditions = new_ics
291308

292309
eq_to_diff = StateSelection.DiffGraph(nsrcs(graph))
293310

0 commit comments

Comments
 (0)