@@ -7,135 +7,125 @@ A simple linear resistor model
77
88
99"""
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)
3028end
3129@connector Pin begin
32- v (t)
33- i (t), [connect = Flow]
30+ v (t)
31+ i (t), [connect = Flow]
3432end
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)
5450end
5551
56- @component function Capacitor (; name, C= 1.0 )
52+ @component function Capacitor (; name, C = 1.0 )
5753 systems = @named begin
58- p = Pin ()
59- n = Pin ()
54+ p = Pin ()
55+ n = Pin ()
6056 end
6157 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 ]
6460 end
6561 params = @parameters begin
66- C = C
62+ C = C
6763 end
6864 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
7666 ]
67+ eqs = [v ~ p. v - n. v
68+ i ~ p. i
69+ p. i + n. i ~ 0
70+ C * D (v) ~ i]
7771 return ODESystem (eqs, t, vars, params; systems, name, initialization_eqs)
78- end
72+ end
7973
80- @component function Ground (; name)
74+ @component function Ground (; name)
8175 systems = @named begin
82- g = Pin ()
76+ g = Pin ()
8377 end
8478 eqs = [
85- g. v ~ 0
79+ g. v ~ 0
8680 ]
8781 return ODESystem (eqs, t, [], []; systems, name)
88- end
82+ end
8983
90- @component function Inductor (; name, L= 1.0 )
84+ @component function Inductor (; name, L = 1.0 )
9185 systems = @named begin
92- p = Pin ()
93- n = Pin ()
86+ p = Pin ()
87+ n = Pin ()
9488 end
9589 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 ]
9892 end
9993 params = @parameters begin
100- (L = L)
94+ (L = L)
10195 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]
108100 return ODESystem (eqs, t, vars, params; systems, name)
109- end
101+ end
110102
111103"""
112104This is an RLC model. This should support markdown. That includes
113105HTML as well.
114106"""
115107@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)
132122end
133123""" Run model RLCModel from 0 to 10"""
134124function 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)
139129end
140130@test SciMLBase. successful_retcode (simple ())
141131
0 commit comments