@@ -7,135 +7,125 @@ A simple linear resistor model
7
7
8
8

9
9
"""
10
- @component function Resistor (; name, R= 1.0 )
11
- systems = @named begin
12
- p = Pin ()
13
- n = Pin ()
14
- end
15
- vars = @variables begin
16
- v (t), [guess= 0.0 ]
17
- i (t), [guess= 0.0 ]
18
- end
19
- params = @parameters begin
20
- R = R, [description = " Resistance of this Resistor" ]
21
- end
22
- eqs = [
23
- v ~ p. v - n. v
24
- i ~ p. i
25
- p. i + n. i ~ 0
26
- # Ohm's Law
27
- v ~ i * R
28
- ]
29
- return ODESystem (eqs, t, vars, params; systems, name)
10
+ @component function Resistor (; name, R = 1.0 )
11
+ systems = @named begin
12
+ p = Pin ()
13
+ n = Pin ()
14
+ end
15
+ vars = @variables begin
16
+ v (t), [guess = 0.0 ]
17
+ i (t), [guess = 0.0 ]
18
+ end
19
+ params = @parameters begin
20
+ R = R, [description = " Resistance of this Resistor" ]
21
+ end
22
+ eqs = [v ~ p. v - n. v
23
+ i ~ p. i
24
+ p. i + n. i ~ 0
25
+ # Ohm's Law
26
+ v ~ i * R]
27
+ return ODESystem (eqs, t, vars, params; systems, name)
30
28
end
31
29
@connector Pin begin
32
- v (t)
33
- i (t), [connect = Flow]
30
+ v (t)
31
+ i (t), [connect = Flow]
34
32
end
35
- @component function ConstantVoltage (; name, V= 1.0 )
36
- systems = @named begin
37
- p = Pin ()
38
- n = Pin ()
39
- end
40
- vars = @variables begin
41
- v (t), [guess= 0.0 ]
42
- i (t), [guess= 0.0 ]
43
- end
44
- params = @parameters begin
45
- V = 10
46
- end
47
- eqs = [
48
- v ~ p. v - n. v
49
- i ~ p. i
50
- p. i + n. i ~ 0
51
- v ~ V
52
- ]
53
- return ODESystem (eqs, t, vars, params; systems, name)
33
+ @component function ConstantVoltage (; name, V = 1.0 )
34
+ systems = @named begin
35
+ p = Pin ()
36
+ n = Pin ()
37
+ end
38
+ vars = @variables begin
39
+ v (t), [guess = 0.0 ]
40
+ i (t), [guess = 0.0 ]
41
+ end
42
+ params = @parameters begin
43
+ V = 10
44
+ end
45
+ eqs = [v ~ p. v - n. v
46
+ i ~ p. i
47
+ p. i + n. i ~ 0
48
+ v ~ V]
49
+ return ODESystem (eqs, t, vars, params; systems, name)
54
50
end
55
51
56
- @component function Capacitor (; name, C= 1.0 )
52
+ @component function Capacitor (; name, C = 1.0 )
57
53
systems = @named begin
58
- p = Pin ()
59
- n = Pin ()
54
+ p = Pin ()
55
+ n = Pin ()
60
56
end
61
57
vars = @variables begin
62
- v (t), [guess= 0.0 ]
63
- i (t), [guess= 0.0 ]
58
+ v (t), [guess = 0.0 ]
59
+ i (t), [guess = 0.0 ]
64
60
end
65
61
params = @parameters begin
66
- C = C
62
+ C = C
67
63
end
68
64
initialization_eqs = [
69
- v ~ 0
70
- ]
71
- eqs = [
72
- v ~ p. v - n. v
73
- i ~ p. i
74
- p. i + n. i ~ 0
75
- C * D (v) ~ i
65
+ v ~ 0
76
66
]
67
+ eqs = [v ~ p. v - n. v
68
+ i ~ p. i
69
+ p. i + n. i ~ 0
70
+ C * D (v) ~ i]
77
71
return ODESystem (eqs, t, vars, params; systems, name, initialization_eqs)
78
- end
72
+ end
79
73
80
- @component function Ground (; name)
74
+ @component function Ground (; name)
81
75
systems = @named begin
82
- g = Pin ()
76
+ g = Pin ()
83
77
end
84
78
eqs = [
85
- g. v ~ 0
79
+ g. v ~ 0
86
80
]
87
81
return ODESystem (eqs, t, [], []; systems, name)
88
- end
82
+ end
89
83
90
- @component function Inductor (; name, L= 1.0 )
84
+ @component function Inductor (; name, L = 1.0 )
91
85
systems = @named begin
92
- p = Pin ()
93
- n = Pin ()
86
+ p = Pin ()
87
+ n = Pin ()
94
88
end
95
89
vars = @variables begin
96
- v (t), [guess = 0.0 ]
97
- i (t), [guess = 0.0 ]
90
+ v (t), [guess = 0.0 ]
91
+ i (t), [guess = 0.0 ]
98
92
end
99
93
params = @parameters begin
100
- (L = L)
94
+ (L = L)
101
95
end
102
- eqs = [
103
- v ~ p. v - n. v
104
- i ~ p. i
105
- p. i + n. i ~ 0
106
- L * D (i) ~ v
107
- ]
96
+ eqs = [v ~ p. v - n. v
97
+ i ~ p. i
98
+ p. i + n. i ~ 0
99
+ L * D (i) ~ v]
108
100
return ODESystem (eqs, t, vars, params; systems, name)
109
- end
101
+ end
110
102
111
103
"""
112
104
This is an RLC model. This should support markdown. That includes
113
105
HTML as well.
114
106
"""
115
107
@component function RLCModel (; name)
116
- systems = @named begin
117
- resistor = Resistor (R= 100 )
118
- capacitor = Capacitor (C= 0.001 )
119
- inductor = Inductor (L= 1 )
120
- source = ConstantVoltage (V= 30 )
121
- ground = Ground ()
122
- end
123
- initialization_eqs = [
124
- inductor. i ~ 0
125
- ]
126
- eqs = [
127
- connect (source. p, inductor. n)
128
- connect (inductor. p, resistor. p, capacitor. p)
129
- connect (resistor. n, ground. g, capacitor. n, source. n)
130
- ]
131
- return ODESystem (eqs, t, [], []; systems, name, initialization_eqs)
108
+ systems = @named begin
109
+ resistor = Resistor (R = 100 )
110
+ capacitor = Capacitor (C = 0.001 )
111
+ inductor = Inductor (L = 1 )
112
+ source = ConstantVoltage (V = 30 )
113
+ ground = Ground ()
114
+ end
115
+ initialization_eqs = [
116
+ inductor. i ~ 0
117
+ ]
118
+ eqs = [connect (source. p, inductor. n)
119
+ connect (inductor. p, resistor. p, capacitor. p)
120
+ connect (resistor. n, ground. g, capacitor. n, source. n)]
121
+ return ODESystem (eqs, t, [], []; systems, name, initialization_eqs)
132
122
end
133
123
""" Run model RLCModel from 0 to 10"""
134
124
function simple ()
135
- @mtkbuild model = RLCModel ()
136
- u0 = []
137
- prob = ODEProblem (model, u0, (0.0 , 10.0 ))
138
- sol = solve (prob)
125
+ @mtkbuild model = RLCModel ()
126
+ u0 = []
127
+ prob = ODEProblem (model, u0, (0.0 , 10.0 ))
128
+ sol = solve (prob)
139
129
end
140
130
@test SciMLBase. successful_retcode (simple ())
141
131
0 commit comments