diff --git a/examples/electrical.jl b/examples/electrical.jl index c2f2b15..163e32b 100644 --- a/examples/electrical.jl +++ b/examples/electrical.jl @@ -1,45 +1,45 @@ using ModelingToolkit +# using ModelingToolkit: t_nounits as t using ModelingToolkitStandardLibrary.Electrical using ModelingToolkitStandardLibrary.Blocks: Constant using ModelingToolkitDesigner using CairoMakie using GLMakie -@component function PassThru2(; name) - @variables t +@mtkmodel PassThru2 begin - systems = @named begin + @components begin p1 = Pin() p2 = Pin() end - eqs = [connect(p1, p2)] - - return ODESystem(eqs, t, [], []; name, systems) + @equations begin + connect(p1, p2) + end end -@component function PassThru3(; name) - @variables t +@mtkmodel PassThru3 begin - systems = @named begin + @components begin p1 = Pin() p2 = Pin() p3 = Pin() end - eqs = [connect(p1, p2, p3)] - - return ODESystem(eqs, t, [], []; name, systems) + @equations begin + connect(p1, p2, p3) + end end -@component function Circuit(; name) +@mtkmodel Circuit begin - R = 1.0 - C = 1.0 - V = 1.0 - @variables t + @parameters begin + R = 1.0 + C = 1.0 + V = 1.0 + end - systems = @named begin + @components begin resistor = Resistor(R = R) capacitor = Capacitor(C = C) source = Voltage() @@ -49,7 +49,7 @@ end pt3 = PassThru3() end - eqs = [ + @equations begin connect(resistor.p, pt2.p1) connect(source.p, pt2.p2) connect(source.n, pt3.p2) @@ -57,28 +57,24 @@ end connect(resistor.n, capacitor.p) connect(ground.g, pt3.p3) connect(source.V, constant.output) - ] - - # eqs = [connect(constant.output, source.V) - # connect(source.p, resistor.p) - # connect(resistor.n, capacitor.p) - # connect(capacitor.n, source.n, ground.g)] + end - ODESystem(eqs, t, [], []; systems, name) + # @equations begin + # connect(constant.output, source.V) + # connect(source.p, resistor.p) + # connect(resistor.n, capacitor.p) + # connect(capacitor.n, source.n, ground.g) + # end end @named rc = Circuit() -# using OrdinaryDiffEq -# sys = structural_simplify(rc) -# prob = ODEProblem(sys, Pair[], (0, 10.0)) -# sol = solve(prob, Tsit5()) - path = joinpath(@__DIR__, "design") design = ODESystemDesign(rc, path) GLMakie.set_theme!(Theme(; fontsize = 12)) ModelingToolkitDesigner.view(design) -# CairoMakie.set_theme!(Theme(;fontsize=12)) -# fig = ModelingToolkitDesigner.view(design, false) +CairoMakie.set_theme!(Theme(;fontsize=12)) +fig = ModelingToolkitDesigner.view(design, false) +save(joinpath(@__DIR__, "electrical.svg"), fig; size=(300,300)) # save(joinpath(@__DIR__, "electrical.svg"), fig; resolution=(300,300)) diff --git a/examples/electrical.svg b/examples/electrical.svg index 270c784..715468f 100644 --- a/examples/electrical.svg +++ b/examples/electrical.svg @@ -1,387 +1,384 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + - - - - - - - - - - + + - - - - - - + + + - - - - + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + - - - + + + - - - + + + + - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + - - + + - - - + + + - - - + + + - - - + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - + + + + - - - + + + - - - + + + - - - + + + + - - + + - - + + - - + + - - + + - - + + - - + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - - + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + - - - + + - - - + + + - - + + + + - - + + - - + + - - + + - - + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + diff --git a/examples/hydraulic.jl b/examples/hydraulic.jl deleted file mode 100644 index 6b46635..0000000 --- a/examples/hydraulic.jl +++ /dev/null @@ -1,43 +0,0 @@ -using ModelingToolkit -using ModelingToolkitDesigner - -import ModelingToolkitStandardLibrary.Hydraulic.IsothermalCompressible as IC -import ModelingToolkitStandardLibrary.Blocks as B - - -@parameters t - -@component function System(; name) - - pars = [] - - systems = @named begin - fluid = IC.HydraulicFluid(; density = 876, bulk_modulus = 1.2e9, viscosity = 0.034) - - stp = B.Step(; height = 10e5, start_time = 0.005) - src = IC.InputSource(; p_int = 0) - vol = IC.FixedVolume(; p_int = 0, vol = 10.0) - res = IC.Tube(5; p_int = 0, area = 0.01, length = 500.0) - end - - eqs = [ - connect(stp.output, src.p) - connect(src.port, res.port_a) - connect(vol.port, res.port_b) - connect(src.port, fluid) - ] - - - ODESystem(eqs, t, [], pars; name, systems) -end - -@named sys = System() - -path = joinpath(@__DIR__, "design") # folder where visualization info is saved and retrieved -design = ODESystemDesign(sys, path); -ModelingToolkitDesigner.view(design) - -# using CairoMakie -# CairoMakie.set_theme!(Theme(;fontsize=12)) -# fig = ModelingToolkitDesigner.view(design, false) -# save(joinpath(@__DIR__, "hydraulic.svg"), fig; resolution=(400,200)) diff --git a/examples/hydraulic.svg b/examples/hydraulic.svg deleted file mode 100644 index a86f3de..0000000 --- a/examples/hydraulic.svg +++ /dev/null @@ -1,349 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/mechanical.jl b/examples/mechanical.jl index 215139c..4afbbd6 100644 --- a/examples/mechanical.jl +++ b/examples/mechanical.jl @@ -4,44 +4,38 @@ using ModelingToolkitDesigner using ModelingToolkitStandardLibrary.Blocks import ModelingToolkitStandardLibrary.Mechanical.Translational as TV -@parameters t -D = Differential(t) +@mtkmodel PassThru3 begin -@component function PassThru3(; name) - @variables t - - systems = @named begin + @components begin p1 = TV.MechanicalPort() p2 = TV.MechanicalPort() p3 = TV.MechanicalPort() end - eqs = [connect(p1, p2, p3)] - - return ODESystem(eqs, t, [], []; name, systems) + @equations begin + connect(p1, p2, p3) + end end -@component function MassSpringDamper(; name) - systems = @named begin - dv = TV.Damper(d = 1, v_a_0 = 1) - sv = TV.Spring(k = 1, v_a_0 = 1, delta_s_0 = 1) - bv = TV.Mass(m = 1, v_0 = 1) +@mtkmodel MassSpringDamper begin + @components begin + dv = TV.Damper(d = 1) + sv = TV.Spring(k = 1) + bv = TV.Mass(m = 1) gv = TV.Fixed() pt1 = PassThru3() pt2 = PassThru3() end - eqs = [ + @equations begin connect(bv.flange, pt2.p2) connect(sv.flange_a, pt2.p1) connect(dv.flange_a, pt2.p3) connect(dv.flange_b, pt1.p3) connect(sv.flange_b, pt1.p1) connect(gv.flange, pt1.p2) - ] - - return ODESystem(eqs, t, [], []; name, systems) + end end @named msd = MassSpringDamper() @@ -50,7 +44,8 @@ path = joinpath(@__DIR__, "design") design = ODESystemDesign(msd, path) ModelingToolkitDesigner.view(design) -# using CairoMakie -# CairoMakie.set_theme!(Theme(;fontsize=12)) -# fig = ModelingToolkitDesigner.view(design, false) +using CairoMakie +CairoMakie.set_theme!(Theme(;fontsize=12)) +fig = ModelingToolkitDesigner.view(design, false) +save(joinpath(@__DIR__, "mechanical.svg"), fig; size=(400,200)) # save(joinpath(@__DIR__, "mechanical.svg"), fig; resolution=(400,200)) diff --git a/examples/mechanical.svg b/examples/mechanical.svg index 5c74911..b085226 100644 --- a/examples/mechanical.svg +++ b/examples/mechanical.svg @@ -1,360 +1,368 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + - - - - - - + + + - - - - - - + + - - - - + + + + + + + + - - - - - - - - - + + + + + - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + - - + + + + - - + + - - - + + + - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + - - + + + + - - + + - - - + + + - - + + + - - + + - - + + - - + + - - + + - - - + + - - + + + + - - + + - - - + + + - - + + + - - + + - - + + - - + + - - + + - - - + + - - + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + +