@@ -4,8 +4,8 @@ using ModelingToolkit, OrdinaryDiffEq
4
4
# Basic electric components
5
5
@parameters t
6
6
@connector function Pin (;name)
7
- @variables v (t) i (t)
8
- ODESystem (Equation[], t, [v, i], [], name= name, defaults = [v => 1.0 , i => 1.0 ] )
7
+ sts = @variables v (t)= 1.0 i (t)= 1.0
8
+ ODESystem (Equation[], t, sts, [], name= name)
9
9
end
10
10
11
11
@namespace function ModelingToolkit. connect (:: Type{Pin} , ps... )
27
27
end
28
28
29
29
@namespace function ConstantVoltage (;name, V = 1.0 )
30
- val = V
31
30
@named p = Pin ()
32
31
@named n = Pin ()
33
- @parameters V
32
+ ps = @parameters V = V
34
33
eqs = [
35
34
V ~ p. v - n. v
36
35
0 ~ p. i + n. i
37
36
]
38
- ODESystem (eqs, t, [], [V] , systems= [p, n], defaults = Dict (V => val) , name= name)
37
+ ODESystem (eqs, t, [], ps , systems= [p, n], name= name)
39
38
end
40
39
41
40
@namespace function Resistor (;name, R = 1.0 )
42
- val = R
43
41
@named p = Pin ()
44
42
@named n = Pin ()
45
- @variables v (t)
46
- @parameters R
43
+ sts = @variables v (t)
44
+ ps = @parameters R = R
47
45
eqs = [
48
46
v ~ p. v - n. v
49
47
0 ~ p. i + n. i
50
48
v ~ p. i * R
51
49
]
52
- ODESystem (eqs, t, [v], [R] , systems= [p, n], defaults = Dict (R => val) , name= name)
50
+ ODESystem (eqs, t, sts, ps , systems= [p, n], name= name)
53
51
end
54
52
55
53
@namespace function Capacitor (;name, C = 1.0 )
56
- val = C
57
54
@named p = Pin ()
58
55
@named n = Pin ()
59
- @variables v (t)
60
- @parameters C
56
+ sts = @variables v (t)
57
+ ps = @parameters C = C
61
58
D = Differential (t)
62
59
eqs = [
63
60
v ~ p. v - n. v
64
61
0 ~ p. i + n. i
65
62
D (v) ~ p. i / C
66
63
]
67
- ODESystem (eqs, t, [v], [C] , systems= [p, n], defaults = Dict (C => val) , name= name)
64
+ ODESystem (eqs, t, sts, ps , systems= [p, n], name= name)
68
65
end
69
66
70
67
@namespace function Inductor (; name, L = 1.0 )
71
- val = L
72
68
@named p = Pin ()
73
69
@named n = Pin ()
74
- @variables v (t) i (t)
75
- @parameters L
70
+ sts = @variables v (t) i (t)
71
+ ps = @parameters L = L
76
72
D = Differential (t)
77
73
eqs = [
78
74
v ~ p. v - n. v
79
75
0 ~ p. i + n. i
80
76
i ~ p. i
81
77
D (i) ~ v / L
82
78
]
83
- ODESystem (eqs, t, [v, i], [L], systems= [p, n], defaults = Dict (L => val) , name= name)
79
+ ODESystem (eqs, t, sts, ps, systems= [p, n], name= name)
84
80
end
0 commit comments