LIBRARY
PlanarMechanics.examples.PendulumTest
A free swinging pendulum.
Usage
MultibodyComponents.PlanarMechanics.examples.PendulumTest()
Behavior
julia
using MultibodyComponents #hide
using ModelingToolkit #hide
@named sys = MultibodyComponents.PlanarMechanics.examples.PendulumTest() #hide
full_equations(sys) #hide<< @example-block not executed in draft mode >>Source
dyad
"A free swinging pendulum."
example component PendulumTest
world = MultibodyComponents.PlanarMechanics.World() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 30, "y1": 240, "x2": 230, "y2": 440, "rot": 0}
},
"tags": []
}
}
revolute = MultibodyComponents.PlanarMechanics.Revolute() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 290, "y1": 240, "x2": 490, "y2": 440, "rot": 0}
},
"tags": []
}
}
rod = MultibodyComponents.PlanarMechanics.FixedTranslation(r = [1.0, 0.0]) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 550, "y1": 240, "x2": 750, "y2": 440, "rot": 0}
},
"tags": []
}
}
body = MultibodyComponents.PlanarMechanics.Body(m = 1.0, I = 0.1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 810, "y1": 240, "x2": 1010, "y2": 440, "rot": 0}
},
"tags": []
}
}
relations
initial revolute.phi = 0.0
initial revolute.w = 0.0
connect(world.frame_b, revolute.frame_a) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(revolute.frame_b, rod.frame_a) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(rod.frame_b, body.frame_a) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
metadata {"Dyad": {"tests": {"case1": {"stop": 3}}}}
endFlattened Source
dyad
"A free swinging pendulum."
example component PendulumTest
world = MultibodyComponents.PlanarMechanics.World() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 30, "y1": 240, "x2": 230, "y2": 440, "rot": 0}
},
"tags": []
}
}
revolute = MultibodyComponents.PlanarMechanics.Revolute() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 290, "y1": 240, "x2": 490, "y2": 440, "rot": 0}
},
"tags": []
}
}
rod = MultibodyComponents.PlanarMechanics.FixedTranslation(r = [1.0, 0.0]) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 550, "y1": 240, "x2": 750, "y2": 440, "rot": 0}
},
"tags": []
}
}
body = MultibodyComponents.PlanarMechanics.Body(m = 1.0, I = 0.1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 810, "y1": 240, "x2": 1010, "y2": 440, "rot": 0}
},
"tags": []
}
}
relations
initial revolute.phi = 0.0
initial revolute.w = 0.0
connect(world.frame_b, revolute.frame_a) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(revolute.frame_b, rod.frame_a) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(rod.frame_b, body.frame_a) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
metadata {"Dyad": {"tests": {"case1": {"stop": 3}}}}
endTest Cases
julia
using MultibodyComponents
using DyadInterface: TransientAnalysis, rebuild_sol, ODEAlg
using ModelingToolkit: toggle_namespacing, get_initial_conditions, @named
using CSV, DataFrames, Plots
snapshotsdir = joinpath(dirname(dirname(pathof(MultibodyComponents))), "test", "snapshots")<< @setup-block not executed in draft mode >>Test Case case1
julia
@named model_case1 = MultibodyComponents.PlanarMechanics.examples.PendulumTest()
model_case1 = toggle_namespacing(model_case1, false)
model_case1 = toggle_namespacing(model_case1, true)
result_case1 = TransientAnalysis(; model = model_case1, alg = ODEAlg.Auto(), start = 0e+0, stop = 3e+0, abstol=1e-6, reltol=1e-6)
sol_case1 = rebuild_sol(result_case1)<< @setup-block not executed in draft mode >>Related
Examples
Experiments
Analyses