1
1
"""
2
- HeatCapacitor(; name, C, T_start= 273.15 + 20)
2
+ HeatCapacitor(; name, C, T = 273.15 + 20)
3
3
4
4
Lumped thermal element storing heat
5
5
6
6
# States:
7
7
8
- - `T`: [`K`] Temperature of element
8
+ - `T`: [`K`] Temperature of element. It accepts an initial value, which defaults to 273.15 + 20.
9
9
- `der_T`: [`K/s`] Time derivative of temperature
10
10
11
11
# Connectors:
@@ -15,25 +15,28 @@ Lumped thermal element storing heat
15
15
# Parameters:
16
16
17
17
- `C`: [`J/K`] Heat capacity of element (= cp*m)
18
- - `T_start`: [`K`] Initial temperature of element
19
18
"""
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
25
28
der_T (t) = 0.0
26
29
end
27
30
28
- D = Differential (t)
29
- eqs = [ T ~ port. T
31
+ @equations begin
32
+ T ~ port. T
30
33
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
33
36
end
34
37
35
38
"""
36
- ThermalConductor(;name, G)
39
+ ThermalConductor(; name, G)
37
40
38
41
Lumped thermal element transporting heat without storing it.
39
42
@@ -50,14 +53,14 @@ see [`Element1D`](@ref)
50
53
51
54
- `G`: [`W/K`] Constant thermal conductance of material
52
55
"""
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
61
64
end
62
65
63
66
"""
@@ -79,15 +82,14 @@ Lumped thermal element transporting heat without storing it.
79
82
80
83
- `R`: [`K/W`] Constant thermal resistance of material
81
84
"""
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
91
93
end
92
94
93
95
"""
@@ -109,14 +111,14 @@ Lumped thermal element for heat convection.
109
111
110
112
- `G`: [W/K] Convective thermal conductance
111
113
"""
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
120
122
end
121
123
122
124
"""
@@ -126,7 +128,7 @@ Lumped thermal element for heat convection.
126
128
127
129
# States:
128
130
129
- - `dT`: [`K`] Temperature difference across the component `solid.T` - `fluid.T`
131
+ - `dT`: [`K`] Temperature difference across the component `solid.T` - `fluid.T`
130
132
- `Q_flow`: [`W`] Heat flow rate from `solid` -> `fluid`
131
133
132
134
# Connectors:
@@ -138,14 +140,14 @@ Lumped thermal element for heat convection.
138
140
139
141
- `R`: [`K/W`] Constant thermal resistance of material
140
142
"""
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
149
151
end
150
152
151
153
"""
@@ -167,22 +169,22 @@ Lumped thermal element for radiation heat transfer.
167
169
168
170
- `G`: [m^2] Net radiation conductance between two surfaces # Stefan-Boltzmann constant TODO: extract into physical constants module or use existing one
169
171
"""
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
182
184
end
183
185
184
186
"""
185
- ThermalCollector(; name, m= 1)
187
+ ThermalCollector(; name, m = 1)
186
188
187
189
Collects `m` heat flows
188
190
0 commit comments