|
1 | 1 | using ModelingToolkit |
| 2 | +# using ModelingToolkit: t_nounits as t |
2 | 3 | using ModelingToolkitStandardLibrary.Electrical |
3 | 4 | using ModelingToolkitStandardLibrary.Blocks: Constant |
4 | 5 | using ModelingToolkitDesigner |
5 | 6 | using CairoMakie |
6 | 7 | using GLMakie |
7 | 8 |
|
8 | | -@component function PassThru2(; name) |
9 | | - @variables t |
| 9 | +@mtkmodel PassThru2 begin |
10 | 10 |
|
11 | | - systems = @named begin |
| 11 | + @components begin |
12 | 12 | p1 = Pin() |
13 | 13 | p2 = Pin() |
14 | 14 | end |
15 | 15 |
|
16 | | - eqs = [connect(p1, p2)] |
17 | | - |
18 | | - return ODESystem(eqs, t, [], []; name, systems) |
| 16 | + @equations begin |
| 17 | + connect(p1, p2) |
| 18 | + end |
19 | 19 | end |
20 | 20 |
|
21 | | -@component function PassThru3(; name) |
22 | | - @variables t |
| 21 | +@mtkmodel PassThru3 begin |
23 | 22 |
|
24 | | - systems = @named begin |
| 23 | + @components begin |
25 | 24 | p1 = Pin() |
26 | 25 | p2 = Pin() |
27 | 26 | p3 = Pin() |
28 | 27 | end |
29 | 28 |
|
30 | | - eqs = [connect(p1, p2, p3)] |
31 | | - |
32 | | - return ODESystem(eqs, t, [], []; name, systems) |
| 29 | + @equations begin |
| 30 | + connect(p1, p2, p3) |
| 31 | + end |
33 | 32 | end |
34 | 33 |
|
35 | | -@component function Circuit(; name) |
| 34 | +@mtkmodel Circuit begin |
36 | 35 |
|
37 | | - R = 1.0 |
38 | | - C = 1.0 |
39 | | - V = 1.0 |
40 | | - @variables t |
| 36 | + @parameters begin |
| 37 | + R = 1.0 |
| 38 | + C = 1.0 |
| 39 | + V = 1.0 |
| 40 | + end |
41 | 41 |
|
42 | | - systems = @named begin |
| 42 | + @components begin |
43 | 43 | resistor = Resistor(R = R) |
44 | 44 | capacitor = Capacitor(C = C) |
45 | 45 | source = Voltage() |
|
49 | 49 | pt3 = PassThru3() |
50 | 50 | end |
51 | 51 |
|
52 | | - eqs = [ |
| 52 | + @equations begin |
53 | 53 | connect(resistor.p, pt2.p1) |
54 | 54 | connect(source.p, pt2.p2) |
55 | 55 | connect(source.n, pt3.p2) |
56 | 56 | connect(capacitor.n, pt3.p1) |
57 | 57 | connect(resistor.n, capacitor.p) |
58 | 58 | connect(ground.g, pt3.p3) |
59 | 59 | connect(source.V, constant.output) |
60 | | - ] |
61 | | - |
62 | | - # eqs = [connect(constant.output, source.V) |
63 | | - # connect(source.p, resistor.p) |
64 | | - # connect(resistor.n, capacitor.p) |
65 | | - # connect(capacitor.n, source.n, ground.g)] |
| 60 | + end |
66 | 61 |
|
67 | | - ODESystem(eqs, t, [], []; systems, name) |
| 62 | + # @equations begin |
| 63 | + # connect(constant.output, source.V) |
| 64 | + # connect(source.p, resistor.p) |
| 65 | + # connect(resistor.n, capacitor.p) |
| 66 | + # connect(capacitor.n, source.n, ground.g) |
| 67 | + # end |
68 | 68 | end |
69 | 69 |
|
70 | 70 | @named rc = Circuit() |
71 | 71 |
|
72 | | -# using OrdinaryDiffEq |
73 | | -# sys = structural_simplify(rc) |
74 | | -# prob = ODEProblem(sys, Pair[], (0, 10.0)) |
75 | | -# sol = solve(prob, Tsit5()) |
76 | | - |
77 | 72 | path = joinpath(@__DIR__, "design") |
78 | 73 | design = ODESystemDesign(rc, path) |
79 | 74 | GLMakie.set_theme!(Theme(; fontsize = 12)) |
80 | 75 | ModelingToolkitDesigner.view(design) |
81 | 76 |
|
82 | | -# CairoMakie.set_theme!(Theme(;fontsize=12)) |
83 | | -# fig = ModelingToolkitDesigner.view(design, false) |
| 77 | +CairoMakie.set_theme!(Theme(;fontsize=12)) |
| 78 | +fig = ModelingToolkitDesigner.view(design, false) |
| 79 | +save(joinpath(@__DIR__, "electrical.svg"), fig; size=(300,300)) |
84 | 80 | # save(joinpath(@__DIR__, "electrical.svg"), fig; resolution=(300,300)) |
0 commit comments