11"""
2- HeatCapacitor(; name, C, T_start= 273.15 + 20)
2+ HeatCapacitor(; name, C, T = 273.15 + 20)
33
44Lumped thermal element storing heat
55
66# States:
77
8- - `T`: [`K`] Temperature of element
8+ - `T`: [`K`] Temperature of element. It accepts an initial value, which defaults to 0.0.
99 - `der_T`: [`K/s`] Time derivative of temperature
1010
1111# Connectors:
@@ -15,25 +15,28 @@ Lumped thermal element storing heat
1515# Parameters:
1616
1717 - `C`: [`J/K`] Heat capacity of element (= cp*m)
18- - `T_start`: [`K`] Initial temperature of element
1918"""
20- @component function HeatCapacitor (; name, C, T_start = 273.15 + 20 )
21- @named port = HeatPort ()
22- @parameters C = C
23- sts = @variables begin
24- T (t) = T_start
19+ @mtkmodel HeatCapacitor begin
20+ @components begin
21+ port = HeatPort ()
22+ end
23+ @parameters begin
24+ C, [description = " Heat capacity of element" ]
25+ end
26+ @variables begin
27+ T (t) = 273.15 + 20
2528 der_T (t) = 0.0
2629 end
2730
28- D = Differential (t)
29- eqs = [ T ~ port. T
31+ @equations begin
32+ T ~ port. T
3033 der_T ~ port. Q_flow / C
31- D (T) ~ der_T]
32- ODESystem (eqs, t, sts, [C]; systems = [port], name = name)
34+ D (T) ~ der_T
35+ end
3336end
3437
3538"""
36- ThermalConductor(;name, G)
39+ ThermalConductor(; name, G)
3740
3841Lumped thermal element transporting heat without storing it.
3942
@@ -50,14 +53,14 @@ see [`Element1D`](@ref)
5053
5154 - `G`: [`W/K`] Constant thermal conductance of material
5255"""
53- @component function ThermalConductor (; name, G)
54- @named element1d = Element1D ()
55- @unpack Q_flow, dT = element1d
56- pars = @parameters G = G
57- eqs = [
58- Q_flow ~ G * dT,
59- ]
60- extend ( ODESystem (eqs, t, [], pars; name = name), element1d)
56+ @mtkmodel ThermalConductor begin
57+ @extend Q_flow, dT = element1d = Element1D ()
58+ @parameters begin
59+ G
60+ end
61+ @equations begin
62+ Q_flow ~ G * dT
63+ end
6164end
6265
6366"""
@@ -79,15 +82,14 @@ Lumped thermal element transporting heat without storing it.
7982
8083 - `R`: [`K/W`] Constant thermal resistance of material
8184"""
82- @component function ThermalResistor (; name, R)
83- @named element1d = Element1D ()
84- @unpack Q_flow, dT = element1d
85- pars = @parameters R = R
86- eqs = [
87- dT ~ R * Q_flow,
88- ]
89-
90- extend (ODESystem (eqs, t, [], pars; name = name), element1d)
85+ @mtkmodel ThermalResistor begin
86+ @extend Q_flow, dT = element1d = Element1D ()
87+ @parameters begin
88+ R
89+ end
90+ @equations begin
91+ dT ~ R * Q_flow
92+ end
9193end
9294
9395"""
@@ -109,14 +111,14 @@ Lumped thermal element for heat convection.
109111
110112 - `G`: [W/K] Convective thermal conductance
111113"""
112- @component function ConvectiveConductor (; name, G)
113- @named convective_element1d = ConvectiveElement1D ()
114- @unpack Q_flow, dT = convective_element1d
115- @parameters G = G
116- eqs = [
117- Q_flow ~ G * dT,
118- ]
119- extend ( ODESystem (eqs, t, [], [G]; name = name), convective_element1d)
114+ @mtkmodel ConvectiveConductor begin
115+ @extend Q_flow, dT = convective_element1d = ConvectiveElement1D ()
116+ @parameters begin
117+ G
118+ end
119+ @equations begin
120+ Q_flow ~ G * dT
121+ end
120122end
121123
122124"""
@@ -138,14 +140,14 @@ Lumped thermal element for heat convection.
138140
139141 - `R`: [`K/W`] Constant thermal resistance of material
140142"""
141- @component function ConvectiveResistor (; name, R)
142- @named convective_element1d = ConvectiveElement1D ()
143- @unpack Q_flow, dT = convective_element1d
144- @parameters R = R
145- eqs = [
146- dT ~ R * Q_flow,
147- ]
148- extend ( ODESystem (eqs, t, [], [R]; name = name), convective_element1d)
143+ @mtkmodel ConvectiveResistor begin
144+ @extend Q_flow, dT = convective_element1d = ConvectiveElement1D ()
145+ @parameters begin
146+ R
147+ end
148+ @equations begin
149+ dT ~ R * Q_flow
150+ end
149151end
150152
151153"""
@@ -167,22 +169,22 @@ Lumped thermal element for radiation heat transfer.
167169
168170 - `G`: [m^2] Net radiation conductance between two surfaces # Stefan-Boltzmann constant TODO: extract into physical constants module or use existing one
169171"""
170- @component function BodyRadiation (; name, G)
171- sigma = 5.6703744191844294e-8 # Stefan-Boltzmann constant TODO : extract into physical constants module or use existing one
172-
173- @named element1d = Element1D ()
174- @unpack Q_flow, dT = element1d
175- @unpack port_a, port_b = element1d
176- pars = @parameters G = G
177- eqs = [
178- Q_flow ~ G * sigma * (port_a . T ^ 4 - port_b . T ^ 4 ),
179- ]
180-
181- extend ( ODESystem (eqs, t, [], pars; name = name), element1d)
172+ @mtkmodel BodyRadiation begin
173+ begin
174+ sigma = 5.6703744191844294e-8 # Stefan-Boltzmann constant TODO : extract into physical constants module or use existing one
175+ end
176+
177+ @extend Q_flow, dT, port_a, port_b = element1d = Element1D ()
178+ @parameters begin
179+ G
180+ end
181+ @equations begin
182+ Q_flow ~ G * sigma * (port_a . T ^ 4 - port_b . T ^ 4 )
183+ end
182184end
183185
184186"""
185- ThermalCollector(; name, m= 1)
187+ ThermalCollector(; name, m = 1)
186188
187189Collects `m` heat flows
188190
0 commit comments