Skip to content

Commit 436aa6f

Browse files
committed
detect input variables after conversion to parameters
1 parent 5af1717 commit 436aa6f

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

src/inputoutput.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ using Symbolics: get_variables
55
Return all variables that mare marked as inputs. See also [`unbound_inputs`](@ref)
66
See also [`bound_inputs`](@ref), [`unbound_inputs`](@ref)
77
"""
8-
inputs(sys) = filter(isinput, states(sys))
8+
inputs(sys) = [filter(isinput, states(sys)); filter(isinput, parameters(sys))]
99

1010
"""
1111
outputs(sys)
@@ -18,6 +18,7 @@ function outputs(sys)
1818
rhss = [eq.rhs for eq in o]
1919
lhss = [eq.lhs for eq in o]
2020
unique([filter(isoutput, states(sys))
21+
filter(isoutput, parameters(sys))
2122
filter(x -> x isa Term && isoutput(x), rhss) # observed can return equations with complicated expressions, we are only looking for single Terms
2223
filter(x -> x isa Term && isoutput(x), lhss)])
2324
end

test/input_output_handling.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@ D = Differential(tv)
3131
@test !is_bound(sys2, sys.u)
3232
@test !is_bound(sys2, sys2.sys.u)
3333

34+
# simplification turns input variables into parameters
35+
ssys = structural_simplify(sys)
36+
@test ModelingToolkit.isparameter(unbound_inputs(ssys)[])
37+
@test !is_bound(ssys, u)
38+
@test u Set(unbound_inputs(ssys))
39+
3440
fsys2 = flatten(sys2)
3541
@test is_bound(fsys2, sys.x)
3642
@test !is_bound(fsys2, sys.u)

0 commit comments

Comments
 (0)