Skip to content

Commit e21e57e

Browse files
committed
Add irreducible property for variables
1 parent 65b819a commit e21e57e

File tree

5 files changed

+9
-6
lines changed

5 files changed

+9
-6
lines changed

src/ModelingToolkit.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ export ControlSystem
176176
export alias_elimination, flatten
177177
export connect, @connector, Connection, Flow, Stream, instream
178178
export isinput, isoutput, getbounds, hasbounds, isdisturbance, istunable, getdist, hasdist,
179-
tunable_parameters
179+
tunable_parameters, isirreducible
180180
export ode_order_lowering, dae_order_lowering, liouville_transform
181181
export runge_kutta_discretize
182182
export PDESystem

src/structural_transformation/StructuralTransformations.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ using ModelingToolkit
1313
using ModelingToolkit: ODESystem, AbstractSystem, var_from_nested_derivative, Differential,
1414
states, equations, vars, Symbolic, diff2term, value,
1515
operation, arguments, Sym, Term, simplify, solve_for,
16-
isdiffeq, isdifferential, isinput,
16+
isdiffeq, isdifferential, isirreducible,
1717
empty_substitutions, get_substitutions,
1818
get_tearing_state, get_iv, independent_variables,
1919
has_tearing_state, defaults, InvalidSystemException,

src/structural_transformation/utils.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ function find_eq_solvables!(state::TearingState, ieq; may_be_zero = false,
170170
to_rm = Int[]
171171
for j in 𝑠neighbors(graph, ieq)
172172
var = fullvars[j]
173-
#isinput(var) && continue
173+
isirreducible(var) && continue
174174
a, b, islinear = linear_expansion(term, var)
175175
a = unwrap(a)
176176
islinear || continue

src/systems/systemstructure.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ using ..ModelingToolkit
88
import ..ModelingToolkit: isdiffeq, var_from_nested_derivative, vars!, flatten,
99
value, InvalidSystemException, isdifferential, _iszero,
1010
isparameter,
11-
independent_variables, isinput, SparseMatrixCLIL, AbstractSystem,
12-
equations
11+
independent_variables, SparseMatrixCLIL, AbstractSystem,
12+
equations, isirreducible
1313
using ..BipartiteGraphs
1414
import ..BipartiteGraphs: invview, complete
1515
using Graphs
@@ -358,7 +358,7 @@ function linear_subsys_adjmat(state::TransformationState)
358358
var = fullvars[j]
359359
a, b, islinear = linear_expansion(term, var)
360360
a = unwrap(a)
361-
if islinear && !(a isa Symbolic) && a isa Number && !isinput(var)
361+
if islinear && !(a isa Symbolic) && a isa Number && !isirreducible(var)
362362
if a == 1 || a == -1
363363
a = convert(Integer, a)
364364
linear_term += a * var

src/variables.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ struct VariableNoiseType end
44
struct VariableDescriptionType end
55
struct VariableInput end
66
struct VariableOutput end
7+
struct VariableIrreducible end
78
Symbolics.option_to_metadata_type(::Val{:unit}) = VariableUnit
89
Symbolics.option_to_metadata_type(::Val{:connect}) = VariableConnectType
910
Symbolics.option_to_metadata_type(::Val{:noise}) = VariableNoiseType
1011
Symbolics.option_to_metadata_type(::Val{:description}) = VariableDescriptionType
1112
Symbolics.option_to_metadata_type(::Val{:input}) = VariableInput
1213
Symbolics.option_to_metadata_type(::Val{:output}) = VariableOutput
14+
Symbolics.option_to_metadata_type(::Val{:irreducible}) = VariableIrreducible
1315

1416
abstract type AbstractConnectType end
1517
struct Equality <: AbstractConnectType end # Equality connection
@@ -25,6 +27,7 @@ end
2527

2628
isinput(x) = isvarkind(VariableInput, x)
2729
isoutput(x) = isvarkind(VariableOutput, x)
30+
isirreducible(x) = isvarkind(VariableIrreducible, x) || isinput(x)
2831

2932
"""
3033
$(SIGNATURES)

0 commit comments

Comments
 (0)