Skip to content

Commit 1c92215

Browse files
authored
Give PDESystem a systems field (#1588)
1 parent 490dc28 commit 1c92215

File tree

2 files changed

+25
-19
lines changed

2 files changed

+25
-19
lines changed

src/systems/pde/pdesystem.jl

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -57,32 +57,37 @@ struct PDESystem <: ModelingToolkit.AbstractMultivariateSystem
5757
"""
5858
connector_type::Any
5959
"""
60+
systems: The internal systems. These are required to have unique names.
61+
"""
62+
systems::Vector
63+
"""
6064
name: the name of the system
6165
"""
6266
name::Symbol
6367
@add_kwonly function PDESystem(eqs, bcs, domain, ivs, dvs,
64-
ps=SciMLBase.NullParameters();
65-
defaults=Dict(),
66-
connector_type = nothing,
67-
checks::Bool = true,
68-
name
69-
)
68+
ps=SciMLBase.NullParameters();
69+
defaults=Dict(),
70+
systems=[],
71+
connector_type=nothing,
72+
checks::Bool=true,
73+
name
74+
)
7075
if checks
71-
all_dimensionless([dvs;ivs;ps]) ||check_units(eqs)
76+
all_dimensionless([dvs; ivs; ps]) || check_units(eqs)
7277
end
7378
eqs = eqs isa Vector ? eqs : [eqs]
74-
new(eqs, bcs, domain, ivs, dvs, ps, defaults, connector_type, name)
79+
new(eqs, bcs, domain, ivs, dvs, ps, defaults, connector_type, systems, name)
7580
end
7681
end
7782

7883
function Base.getproperty(x::PDESystem, sym::Symbol)
7984
if sym == :indvars
8085
return getfield(x, :ivs)
81-
Base.depwarn("`sys.indvars` is deprecated, please use `get_ivs(sys)`", :getproperty,force=true)
86+
Base.depwarn("`sys.indvars` is deprecated, please use `get_ivs(sys)`", :getproperty, force=true)
8287

8388
elseif sym == :depvars
8489
return getfield(x, :dvs)
85-
Base.depwarn("`sys.depvars` is deprecated, please use `get_dvs(sys)`", :getproperty,force=true)
90+
Base.depwarn("`sys.depvars` is deprecated, please use `get_dvs(sys)`", :getproperty, force=true)
8691

8792
else
8893
return getfield(x, sym)
@@ -91,13 +96,13 @@ end
9196

9297
Base.summary(prob::PDESystem) = string(nameof(typeof(prob)))
9398
function Base.show(io::IO, ::MIME"text/plain", sys::PDESystem)
94-
println(io,summary(sys))
95-
println(io,"Equations: ", get_eqs(sys))
96-
println(io,"Boundary Conditions: ", get_bcs(sys))
97-
println(io,"Domain: ", get_domain(sys))
98-
println(io,"Dependent Variables: ", get_dvs(sys))
99-
println(io,"Independent Variables: ", get_ivs(sys))
100-
println(io,"Parameters: ", get_ps(sys))
101-
print(io,"Default Parameter Values", get_defaults(sys))
99+
println(io, summary(sys))
100+
println(io, "Equations: ", get_eqs(sys))
101+
println(io, "Boundary Conditions: ", get_bcs(sys))
102+
println(io, "Domain: ", get_domain(sys))
103+
println(io, "Dependent Variables: ", get_dvs(sys))
104+
println(io, "Independent Variables: ", get_ivs(sys))
105+
println(io, "Parameters: ", get_ps(sys))
106+
print(io, "Default Parameter Values", get_defaults(sys))
102107
return nothing
103108
end

test/pde.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,6 @@ domains = [t ∈ (0.0,1.0),
1313
x (0.0,1.0)]
1414

1515
@named pdesys = PDESystem(eq,bcs,domains,[t,x],[u])
16+
@show pdesys
1617

17-
@test all(isequal.(independent_variables(pdesys), [t,x]))
18+
@test all(isequal.(independent_variables(pdesys), [t,x]))

0 commit comments

Comments
 (0)