Skip to content

Commit 0a007be

Browse files
authored
Merge pull request #1272 from ven-k/discrete_connect_type
Add `connection_type` to `DiscreteSystem`
2 parents 6a3ebfe + 516cbb1 commit 0a007be

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

src/systems/discrete_system/discrete_system.jl

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,17 @@ struct DiscreteSystem <: AbstractTimeDependentSystem
5454
in `DiscreteSystem`.
5555
"""
5656
default_p::Dict
57-
function DiscreteSystem(discreteEqs, iv, dvs, ps, var_to_name, ctrls, observed, name, systems, default_u0, default_p; checks::Bool = true)
57+
"""
58+
type: type of the system
59+
"""
60+
connection_type::Any
61+
function DiscreteSystem(discreteEqs, iv, dvs, ps, var_to_name, ctrls, observed, name, systems, default_u0, default_p, connection_type; checks::Bool = true)
5862
if checks
5963
check_variables(dvs, iv)
6064
check_parameters(ps, iv)
6165
all_dimensionless([dvs;ps;iv;ctrls]) ||check_units(discreteEqs)
6266
end
63-
new(discreteEqs, iv, dvs, ps, var_to_name, ctrls, observed, name, systems, default_u0, default_p)
67+
new(discreteEqs, iv, dvs, ps, var_to_name, ctrls, observed, name, systems, default_u0, default_p, connection_type)
6468
end
6569
end
6670

@@ -78,6 +82,7 @@ function DiscreteSystem(
7882
default_u0=Dict(),
7983
default_p=Dict(),
8084
defaults=_merge(Dict(default_u0), Dict(default_p)),
85+
connection_type=nothing,
8186
kwargs...,
8287
)
8388
name === nothing && throw(ArgumentError("The `name` keyword must be provided. Please consider using the `@named` macro"))
@@ -101,7 +106,7 @@ function DiscreteSystem(
101106
if length(unique(sysnames)) != length(sysnames)
102107
throw(ArgumentError("System names must be unique."))
103108
end
104-
DiscreteSystem(eqs, iv′, dvs′, ps′, var_to_name, ctrl′, observed, name, systems, default_u0, default_p, kwargs...)
109+
DiscreteSystem(eqs, iv′, dvs′, ps′, var_to_name, ctrl′, observed, name, systems, default_u0, default_p, connection_type, kwargs...)
105110
end
106111

107112
"""

test/discretesystem.jl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,3 +90,13 @@ linearized_eqs = [
9090
y(t - 2.0) ~ y(t)
9191
]
9292
@test all(eqs2 .== linearized_eqs)
93+
94+
# Test connection_type
95+
@connector function DiscreteComponent(;name)
96+
@variables v(t) i(t)
97+
DiscreteSystem(Equation[], t, [v, i], [], name=name, defaults=Dict(v=>1.0, i=>1.0))
98+
end
99+
100+
@named d1 = DiscreteComponent()
101+
102+
@test ModelingToolkit.get_connection_type(d1) == DiscreteComponent

0 commit comments

Comments
 (0)