8
8
9
9
- `g`
10
10
"""
11
- @component function Ground (; name)
12
- @named g = Pin ()
13
- eqs = [g. v ~ 0 ]
14
- ODESystem (eqs, t, [], []; systems = [g], name = name)
11
+ @mtkmodel Ground begin
12
+ @components begin
13
+ g = Pin ()
14
+ end
15
+ @equations begin
16
+ g. v ~ 0
17
+ end
15
18
end
16
19
17
20
"""
@@ -32,18 +35,18 @@ See [OnePort](@ref)
32
35
33
36
- `R`: [`Ohm`] Resistance
34
37
"""
35
- @component function Resistor (; name, R)
36
- @named oneport = OnePort ()
37
- @unpack v, i = oneport
38
- pars = @parameters R = R
39
- eqs = [
40
- v ~ i * R,
41
- ]
42
- extend ( ODESystem (eqs, t, [], pars; name = name), oneport)
38
+ @mtkmodel Resistor begin
39
+ @extend v, i = oneport = OnePort ()
40
+ @parameters begin
41
+ R, [description = " Resistance " ]
42
+ end
43
+ @equations begin
44
+ v ~ i * R
45
+ end
43
46
end
44
47
45
48
"""
46
- Conductor(;name, G)
49
+ Conductor(; name, G)
47
50
48
51
Creates an ideal conductor.
49
52
@@ -60,24 +63,25 @@ See [OnePort](@ref)
60
63
61
64
- `G`: [`S`] Conductance
62
65
"""
63
- @component function Conductor (; name, G)
64
- @named oneport = OnePort ()
65
- @unpack v, i = oneport
66
- pars = @parameters G = G
67
- eqs = [
68
- i ~ v * G,
69
- ]
70
- extend ( ODESystem (eqs, t, [], pars; name = name), oneport)
66
+ @mtkmodel Conductor begin
67
+ @extend v, i = oneport = OnePort ()
68
+ @parameters begin
69
+ G, [description = " Conductance " ]
70
+ end
71
+ @equations begin
72
+ i ~ v * G
73
+ end
71
74
end
72
75
73
76
"""
74
- Capacitor(; name, C)
77
+ Capacitor(; name, C, v )
75
78
76
79
Creates an ideal capacitor.
80
+ Initial voltage of capacitor can be set with `v` ([`V`])
77
81
78
82
# States:
79
83
80
- - `v(t)`: [`V`] The voltage across the capacitor, given by `D(v) ~ p.i / C`
84
+ See [OnePort](@ref)
81
85
82
86
# Connectors:
83
87
@@ -87,22 +91,25 @@ Creates an ideal capacitor.
87
91
# Parameters:
88
92
89
93
- `C`: [`F`] Capacitance
90
- - `v_start`: [`V`] Initial voltage of capacitor
91
- """
92
- @component function Capacitor (; name, C, v_start = 0.0 )
93
- @named oneport = OnePort (; v_start = v_start)
94
- @unpack v, i = oneport
95
- pars = @parameters C = C
96
- eqs = [
97
- D (v) ~ i / C,
98
- ]
99
- extend (ODESystem (eqs, t, [], pars; name = name), oneport)
94
+ """
95
+ @mtkmodel Capacitor begin
96
+ @parameters begin
97
+ C, [description = " Capacitance" ]
98
+ end
99
+ @variables begin
100
+ v
101
+ end
102
+ @extend v, i = oneport = OnePort (; v = v)
103
+ @equations begin
104
+ D (v) ~ i / C
105
+ end
100
106
end
101
107
102
108
"""
103
- Inductor(; name, L)
109
+ Inductor(; name, L, i )
104
110
105
111
Creates an ideal Inductor.
112
+ Initial current through inductor can be set with `i` ([`A`]).
106
113
107
114
# States:
108
115
@@ -116,16 +123,18 @@ See [OnePort](@ref)
116
123
# Parameters:
117
124
118
125
- `L`: [`H`] Inductance
119
- - `i_start`: [`A`] Initial current through inductor
120
- """
121
- @component function Inductor (; name, L, i_start = 0.0 )
122
- @named oneport = OnePort (; i_start = i_start)
123
- @unpack v, i = oneport
124
- pars = @parameters L = L
125
- eqs = [
126
- D (i) ~ 1 / L * v,
127
- ]
128
- extend (ODESystem (eqs, t, [], pars; name = name), oneport)
126
+ """
127
+ @mtkmodel Inductor begin
128
+ @parameters begin
129
+ L, [description = " Inductance" ]
130
+ end
131
+ @variables begin
132
+ i
133
+ end
134
+ @extend v, i = oneport = OnePort (; i = i)
135
+ @equations begin
136
+ D (i) ~ 1 / L * v
137
+ end
129
138
end
130
139
131
140
"""
@@ -146,13 +155,12 @@ See [TwoPort](@ref)
146
155
- `n1` Negative pin (left port)
147
156
- `n2` Negative pin (right port)
148
157
"""
149
- @component function IdealOpAmp (; name)
150
- @named twoport = TwoPort ()
151
- @unpack v1, v2, i1, i2 = twoport
152
-
153
- eqs = [v1 ~ 0
154
- i1 ~ 0 ]
155
- extend (ODESystem (eqs, t, [], [], name = name), twoport)
158
+ @mtkmodel IdealOpAmp begin
159
+ @extend v1, v2, i1, i2 = twoport = TwoPort ()
160
+ @equations begin
161
+ v1 ~ 0
162
+ i1 ~ 0
163
+ end
156
164
end
157
165
158
166
"""
@@ -169,15 +177,15 @@ See [OnePort](@ref)
169
177
- `p` Positive pin
170
178
- `n` Negative pin
171
179
"""
172
- @component function Short (; name)
173
- @named oneport = OnePort ()
174
- @unpack v, i = oneport
175
- eqs = [ v ~ 0 ]
176
- extend ( ODESystem (eqs, t, [], []; name = name), oneport)
180
+ @mtkmodel Short begin
181
+ @extend v, i = oneport = OnePort ()
182
+ @equations begin
183
+ v ~ 0
184
+ end
177
185
end
178
186
179
187
"""
180
- HeatingResistor(;name, R_ref= 1.0, T_ref= 300.15, alpha= 0)
188
+ HeatingResistor(; name, R_ref = 1.0, T_ref = 300.15, alpha = 0)
181
189
182
190
Temperature dependent electrical resistor
183
191
@@ -195,25 +203,29 @@ Temperature dependent electrical resistor
195
203
196
204
- `R_ref`: [`Ω`] Reference resistance
197
205
- `T_ref`: [K] Reference temperature
206
+ - `alpha`: [K⁻¹] Temperature coefficient of resistance
198
207
"""
199
- @component function HeatingResistor (; name, R_ref = 1.0 , T_ref = 300.15 , alpha = 0 )
200
- @named oneport = OnePort ()
201
- @unpack v, i = oneport
202
- @named heat_port = HeatPort ()
203
- pars = @parameters begin
204
- R_ref = R_ref
205
- T_ref = T_ref
206
- alpha = alpha
207
- end
208
- @variables R (t) = R_ref
209
- eqs = [R ~ R_ref * (1 + alpha * (heat_port. T - T_ref))
208
+ @mtkmodel HeatingResistor begin
209
+ @extend v, i = oneport = OnePort ()
210
+ @components begin
211
+ heat_port = HeatPort ()
212
+ end
213
+ @parameters begin
214
+ R_ref = 1.0 , [description = " Reference resistance" ]
215
+ T_ref = 300.15 , [description = " Reference temperature" ]
216
+ alpha = 0 , [description = " Temperature coefficient of resistance" ]
217
+ end
218
+ @variables begin
219
+ R (t) = R_ref
220
+ end
221
+ @equations begin
222
+ R ~ R_ref * (1 + alpha * (heat_port. T - T_ref))
210
223
heat_port. Q_flow ~ - v * i # -LossPower
211
- v ~ i * R]
212
- extend ( ODESystem (eqs, t, [R], pars; name = name, systems = [heat_port]), oneport)
224
+ v ~ i * R
225
+ end
213
226
end
214
-
215
227
"""
216
- EMF(;name, k)
228
+ EMF(; name, k)
217
229
218
230
Electromotoric force (electric/mechanic transformer)
219
231
@@ -235,19 +247,29 @@ Electromotoric force (electric/mechanic transformer)
235
247
236
248
- `k`: [`N⋅m/A`] Transformation coefficient
237
249
"""
238
- @component function EMF (; name, k)
239
- @named p = Pin ()
240
- @named n = Pin ()
241
- @named flange = Flange ()
242
- @named support = Support ()
243
- @parameters k = k
244
- @variables v (t)= 0.0 i (t)= 0.0 phi (t)= 0.0 w (t)= 0.0
245
- eqs = [v ~ p. v - n. v
250
+ @mtkmodel EMF begin
251
+ @components begin
252
+ p = Pin ()
253
+ n = Pin ()
254
+ flange = Flange ()
255
+ support = Support ()
256
+ end
257
+ @parameters begin
258
+ k, [description = " Transformation coefficient" ]
259
+ end
260
+ @variables begin
261
+ v (t) = 0.0
262
+ i (t) = 0.0
263
+ phi (t) = 0.0
264
+ w (t) = 0.0
265
+ end
266
+ @equations begin
267
+ v ~ p. v - n. v
246
268
0 ~ p. i + n. i
247
269
i ~ p. i
248
270
phi ~ flange. phi - support. phi
249
271
D (phi) ~ w
250
272
k * w ~ v
251
- flange. tau ~ - k * i]
252
- ODESystem (eqs, t, [v, i, phi, w], [k]; name = name, systems = [p, n, flange, support])
273
+ flange. tau ~ - k * i
274
+ end
253
275
end
0 commit comments