@@ -18,30 +18,57 @@ node.
1818end
1919
2020"""
21- Resistor(; name, R)
21+ Resistor(; name, R = 1.0, T_ref = 300.15, alpha = 0, T_dep = false )
2222
23- Creates an ideal Resistor following Ohm's Law .
23+ Generic resistor with optional temperature dependency .
2424
2525# States:
2626
27- See [OnePort](@ref)
27+ - See [OnePort](@ref)
28+ - `R(t)`: [`Ω`] Resistance (temperature dependent if `T_dep = true`)
2829
2930# Connectors:
3031
3132 - `p` Positive pin
3233 - `n` Negative pin
34+ - `heat_port` [HeatPort](@ref) (only if `T_dep = true`) Heat port to model the temperature dependency
3335
3436# Parameters:
3537
36- - `R`: [`Ohm`] Resistance
38+ - `R`: [`Ω`] Reference resistance
39+ - `T_ref`: [K] Reference temperature
40+ - `alpha`: [K⁻¹] Temperature coefficient of resistance
41+ - `T_dep`: [bool] Temperature dependency
3742"""
3843@mtkmodel Resistor begin
3944 @extend v, i = oneport = OnePort ()
45+
46+ @structural_parameters begin
47+ T_dep = false
48+ end
49+
4050 @parameters begin
41- R, [description = " Resistance" ]
51+ R = 1.0 , [description = " Reference resistance" ]
52+ T_ref = 300.15 , [description = " Reference temperature" ]
53+ alpha = 0.0 , [description = " Temperature coefficient of resistance" ]
4254 end
43- @equations begin
44- v ~ i * R
55+
56+ if T_dep
57+ @components begin
58+ heat_port = HeatPort ()
59+ end
60+ @variables begin
61+ R_T (t), [description = " Temperature-dependent resistance" ]
62+ end
63+ @equations begin
64+ R_T ~ R * (1 + alpha * (heat_port. T - T_ref)) # Temperature-dependent resistance
65+ heat_port. Q_flow ~ - v * i # -LossPower
66+ v ~ i * R_T # Ohm's Law
67+ end
68+ else
69+ @equations begin
70+ v ~ i * R # Ohm's Law for constant resistance
71+ end
4572 end
4673end
4774
@@ -178,47 +205,6 @@ See [OnePort](@ref)
178205 end
179206end
180207
181- """
182- HeatingResistor(; name, R_ref = 1.0, T_ref = 300.15, alpha = 0)
183-
184- Temperature dependent electrical resistor
185-
186- # States
187-
188- - See [OnePort](@ref)
189- - `R(t)`: [`Ohm`] Temperature dependent resistance `R ~ R_ref*(1 + alpha*(heat_port.T(t) - T_ref))`
190-
191- # Connectors
192-
193- - `p` Positive pin
194- - `n` Negative pin
195-
196- # Parameters:
197-
198- - `R_ref`: [`Ω`] Reference resistance
199- - `T_ref`: [K] Reference temperature
200- - `alpha`: [K⁻¹] Temperature coefficient of resistance
201- """
202- @mtkmodel HeatingResistor begin
203- @extend v, i = oneport = OnePort ()
204- @components begin
205- heat_port = HeatPort ()
206- end
207- @parameters begin
208- R_ref = 1.0 , [description = " Reference resistance" ]
209- T_ref = 300.15 , [description = " Reference temperature" ]
210- alpha = 0 , [description = " Temperature coefficient of resistance" ]
211- end
212- @variables begin
213- R (t), [guess = R_ref]
214- end
215- @equations begin
216- R ~ R_ref * (1 + alpha * (heat_port. T - T_ref))
217- heat_port. Q_flow ~ - v * i # -LossPower
218- v ~ i * R
219- end
220- end
221-
222208"""
223209 EMF(; name, k)
224210
@@ -264,9 +250,9 @@ Electromotoric force (electric/mechanic transformer)
264250end
265251
266252"""
267- Diode(; name, Is = 1e-6, n = 1, T = 300.15)
253+ Diode(; name, Is = 1e-6, n = 1, T = 300.15, T_dep = false )
268254
269- Ideal diode based on the Shockley diode equation .
255+ Generic diode with optional temperature dependency .
270256
271257# States
272258
@@ -276,70 +262,48 @@ Ideal diode based on the Shockley diode equation.
276262
277263 - `p` Positive pin
278264 - `n` Negative pin
265+ - `port` [HeatPort](@ref) (only if `T_dep = true`) Heat port to model variable temperature dependency
279266
280- # Parameters
281-
267+ # Parameters:
268+
282269 - `Is`: [`A`] Saturation current
283270 - `n`: Ideality factor
284- - `T`: [K] Ambient temperature
271+ - `T`: [K] Constant ambient temperature - only used if T_dep=false
272+ - `T_dep`: [bool] Temperature dependency
285273"""
286274@mtkmodel Diode begin
287275 @constants begin
288276 k = 1.380649e-23 # Boltzmann constant (J/K)
289277 q = 1.602176634e-19 # Elementary charge (C)
290278 end
291279 @extend v, i = oneport = OnePort (; v = 0.0 )
292- @parameters begin
293- Is = 1e-6 , [description = " Saturation current (A)" ]
294- n = 1 , [description = " Ideality factor" ]
295- T = 300.15 , [description = " Ambient temperature" ]
296- end
297- @equations begin
298- i ~ Is * (exp (v * q / (n * k * T)) - 1 )
299- end
300- end
301-
302- """
303- HeatingDiode(; name, Is = 1e-6, n = 1)
304280
305- Temperature dependent diode based on the Shockley diode equation.
306-
307- # States
308-
309- - See [OnePort](@ref)
310-
311- # Connectors
312-
313- - `p` Positive pin
314- - `n` Negative pin
315- - `port` [HeatPort](@ref) Heat port to model the temperature dependency
316-
317- # Parameters:
318-
319- - `Is`: [`A`] Saturation current
320- - `n`: Ideality factor
321- """
322- @mtkmodel HeatingDiode begin
323- begin
324- k = 1.380649e-23 # Boltzmann constant (J/K)
325- q = 1.602176634e-19 # Elementary charge (C)
281+ @structural_parameters begin
282+ T_dep = false
326283 end
327284
328- @extend v, i = oneport = OnePort (; v = 0.0 )
329- @components begin
330- port = HeatPort ()
331- end
332285 @parameters begin
333286 Is = 1e-6 , [description = " Saturation current (A)" ]
334287 n = 1 , [description = " Ideality factor" ]
288+ T = 300.15 , [description = " Ambient temperature" ]
335289 end
336- @variables begin
337- Vt (t), [description = " Thermal voltage" ]
338- end
339- @equations begin
340- Vt ~ k * port. T / q # Thermal voltage equation
341- i ~ Is * (exp (v / (n * Vt)) - 1 ) # Shockley diode equation
342- port. Q_flow ~ - v * i # -LossPower
290+
291+ if T_dep
292+ @components begin
293+ port = HeatPort ()
294+ end
295+ @variables begin
296+ Vt (t), [description = " Thermal voltage" ]
297+ end
298+ @equations begin
299+ Vt ~ k * port. T / q # Thermal voltage equation
300+ i ~ Is * (exp (v / (n * Vt)) - 1 ) # Shockley diode equation with temperature dependence
301+ port. Q_flow ~ - v * i # -LossPower
302+ end
303+ else
304+ @equations begin
305+ i ~ Is * (exp (v * q / (n * k * T)) - 1 ) # Shockley diode equation
306+ end
343307 end
344308end
345309
0 commit comments