Skip to content

Commit 176834a

Browse files
committed
move rc_model from components to use in print_tree safetestset
1 parent 2d2f083 commit 176834a

File tree

4 files changed

+86
-81
lines changed

4 files changed

+86
-81
lines changed

test/components.jl

Lines changed: 1 addition & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -1,86 +1,8 @@
11
using Test
22
using ModelingToolkit, OrdinaryDiffEq
33

4-
# Basic electric components
5-
const t = Sym{ModelingToolkit.Parameter{Real}}(:t)
6-
function Pin(;name)
7-
@variables v(t) i(t)
8-
ODESystem(Equation[], t, [v, i], [], name=name, defaults=[v=>1.0, i=>1.0])
9-
end
4+
include("rc_model.jl")
105

11-
function Ground(name)
12-
@named g = Pin()
13-
eqs = [g.v ~ 0]
14-
ODESystem(eqs, t, [], [], systems=[g], name=name)
15-
end
16-
17-
function ConstantVoltage(name; V = 1.0)
18-
val = V
19-
@named p = Pin()
20-
@named n = Pin()
21-
@parameters V
22-
eqs = [
23-
V ~ p.v - n.v
24-
0 ~ p.i + n.i
25-
]
26-
ODESystem(eqs, t, [], [V], systems=[p, n], defaults=Dict(V => val), name=name)
27-
end
28-
29-
function Resistor(name; R = 1.0)
30-
val = R
31-
@named p = Pin()
32-
@named n = Pin()
33-
@variables v(t)
34-
@parameters R
35-
eqs = [
36-
v ~ p.v - n.v
37-
0 ~ p.i + n.i
38-
v ~ p.i * R
39-
]
40-
ODESystem(eqs, t, [v], [R], systems=[p, n], defaults=Dict(R => val), name=name)
41-
end
42-
43-
function Capacitor(name; C = 1.0)
44-
val = C
45-
@named p = Pin()
46-
@named n = Pin()
47-
@variables v(t)
48-
@parameters C
49-
D = Differential(t)
50-
eqs = [
51-
v ~ p.v - n.v
52-
0 ~ p.i + n.i
53-
D(v) ~ p.i / C
54-
]
55-
ODESystem(eqs, t, [v], [C], systems=[p, n], defaults=Dict(C => val), name=name)
56-
end
57-
58-
R = 1.0
59-
C = 1.0
60-
V = 1.0
61-
resistor = Resistor(:resistor, R=R)
62-
capacitor = Capacitor(:capacitor, C=C)
63-
source = ConstantVoltage(:source, V=V)
64-
ground = Ground(:ground)
65-
66-
function connect(ps...)
67-
eqs = [
68-
0 ~ sum(p->p.i, ps) # KCL
69-
]
70-
# KVL
71-
for i in 1:length(ps)-1
72-
push!(eqs, ps[i].v ~ ps[i+1].v)
73-
end
74-
75-
return eqs
76-
end
77-
rc_eqs = [
78-
connect(source.p, resistor.p)
79-
connect(resistor.n, capacitor.p)
80-
connect(capacitor.n, source.n, ground.g)
81-
]
82-
83-
rc_model = ODESystem(rc_eqs, t, systems=[resistor, capacitor, source, ground], name=:rc)
846
sys = structural_simplify(rc_model)
857
@test !isempty(ModelingToolkit.defaults(sys))
868
u0 = [

test/print_tree.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using ModelingToolkit, AbstractTrees, Test
22

3-
include("components.jl")
3+
include("rc_model.jl")
44

55
io = IOBuffer()
66
print_tree(io, rc_model)

test/rc_model.jl

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
using Test
2+
using ModelingToolkit, OrdinaryDiffEq
3+
4+
# Basic electric components
5+
const t = Sym{ModelingToolkit.Parameter{Real}}(:t)
6+
function Pin(;name)
7+
@variables v(t) i(t)
8+
ODESystem(Equation[], t, [v, i], [], name=name, defaults=[v=>1.0, i=>1.0])
9+
end
10+
11+
function Ground(name)
12+
@named g = Pin()
13+
eqs = [g.v ~ 0]
14+
ODESystem(eqs, t, [], [], systems=[g], name=name)
15+
end
16+
17+
function ConstantVoltage(name; V = 1.0)
18+
val = V
19+
@named p = Pin()
20+
@named n = Pin()
21+
@parameters V
22+
eqs = [
23+
V ~ p.v - n.v
24+
0 ~ p.i + n.i
25+
]
26+
ODESystem(eqs, t, [], [V], systems=[p, n], defaults=Dict(V => val), name=name)
27+
end
28+
29+
function Resistor(name; R = 1.0)
30+
val = R
31+
@named p = Pin()
32+
@named n = Pin()
33+
@variables v(t)
34+
@parameters R
35+
eqs = [
36+
v ~ p.v - n.v
37+
0 ~ p.i + n.i
38+
v ~ p.i * R
39+
]
40+
ODESystem(eqs, t, [v], [R], systems=[p, n], defaults=Dict(R => val), name=name)
41+
end
42+
43+
function Capacitor(name; C = 1.0)
44+
val = C
45+
@named p = Pin()
46+
@named n = Pin()
47+
@variables v(t)
48+
@parameters C
49+
D = Differential(t)
50+
eqs = [
51+
v ~ p.v - n.v
52+
0 ~ p.i + n.i
53+
D(v) ~ p.i / C
54+
]
55+
ODESystem(eqs, t, [v], [C], systems=[p, n], defaults=Dict(C => val), name=name)
56+
end
57+
58+
R = 1.0
59+
C = 1.0
60+
V = 1.0
61+
resistor = Resistor(:resistor, R=R)
62+
capacitor = Capacitor(:capacitor, C=C)
63+
source = ConstantVoltage(:source, V=V)
64+
ground = Ground(:ground)
65+
66+
function connect(ps...)
67+
eqs = [
68+
0 ~ sum(p->p.i, ps) # KCL
69+
]
70+
# KVL
71+
for i in 1:length(ps)-1
72+
push!(eqs, ps[i].v ~ ps[i+1].v)
73+
end
74+
75+
return eqs
76+
end
77+
rc_eqs = [
78+
connect(source.p, resistor.p)
79+
connect(resistor.n, capacitor.p)
80+
connect(capacitor.n, source.n, ground.g)
81+
]
82+
83+
rc_model = ODESystem(rc_eqs, t, systems=[resistor, capacitor, source, ground], name=:rc)

test/runtests.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,4 @@ println("Last test requires gcc available in the path!")
3535
@safetestset "Latexify recipes Test" begin include("latexify.jl") end
3636
@safetestset "StructuralTransformations" begin include("structural_transformation/runtests.jl") end
3737
@testset "Serialization" begin include("serialization.jl") end
38-
@testset "print_tree" begin include("print_tree.jl") end
38+
@safetestset "print_tree" begin include("print_tree.jl") end

0 commit comments

Comments
 (0)