Skip to content

Commit 1611c95

Browse files
refactor: use IRInfo and IRStructure for full_equations
1 parent 1b0aef5 commit 1611c95

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

lib/ModelingToolkitBase/src/systems/abstractsystem.jl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1998,6 +1998,20 @@ equations during `mtkcompile`. These equations matches generated numerical code.
19981998
See also [`equations`](@ref) and [`ModelingToolkitBase.get_eqs`](@ref).
19991999
"""
20002000
function full_equations(sys::AbstractSystem; simplify = false)
2001+
subsys = get_systems(sys)
2002+
# Fast path using `IRInfo`
2003+
if isempty(subsys)
2004+
new_eqs = Equation[]
2005+
eqs = equations(sys)
2006+
sizehint!(new_eqs, length(eqs))
2007+
info = get_ir_info(sys)
2008+
ir = get_irstructure(sys)
2009+
@assert length(info.eqs_idxs) == length(eqs)
2010+
for (eq, rhs_idx) in zip(eqs, info.eqs_idxs)
2011+
push!(new_eqs, eq.lhs ~ ir[rhs_idx])
2012+
end
2013+
return new_eqs
2014+
end
20012015
empty_substitutions(sys) && return equations(sys)
20022016
subs = get_substitutions(sys)
20032017
neweqs = map(equations(sys)) do eq

0 commit comments

Comments
 (0)