MassSpringDamper
IconMassSpringDamper
Usage
MassSpringDamper(m, c, d, g, s0, v0=0, a0=0, theta=0)
Parameters:
Name | Description | Units | Default value |
---|---|---|---|
m | Component mass | kg | |
c | Stiffness of the spring | N/m | |
d | Damping coefficient | s-1 | |
g | Gravity | m/s2 | |
s0 | Initial position | m | |
v0 | Initial velocity | m/s | 0 |
a0 | Initial acceleration | m/s2 | 0 |
theta | Angle of motion with +X axis | rad | 0 |
Connectors
Behavior
\[ \begin{equation} \left[ \begin{array}{c} \mathrm{connect}\left( flange_{m}, mass_{+}flange_{b}, spring_{damper_{+}flange\_a} \right) \\ \mathrm{connect}\left( spring_{damper_{+}flange\_b}, flange_{sd} \right) \\ \mathtt{mass.flange\_a.s}\left( t \right) = - \frac{1}{2} \mathtt{mass.L} + \mathtt{mass.s}\left( t \right) \\ \mathtt{mass.flange\_b.s}\left( t \right) = \frac{1}{2} \mathtt{mass.L} + \mathtt{mass.s}\left( t \right) \\ \mathtt{mass.v}\left( t \right) = \frac{\mathrm{d} \mathtt{mass.s}\left( t \right)}{\mathrm{d}t} \\ \mathtt{mass.a}\left( t \right) = \frac{\mathrm{d} \mathtt{mass.v}\left( t \right)}{\mathrm{d}t} \\ \left( \mathtt{mass.a}\left( t \right) + \mathtt{mass.g} \sin\left( \mathtt{mass.theta} \right) \right) \mathtt{mass.m} = \mathtt{mass.flange\_b.f}\left( t \right) + \mathtt{mass.flange\_a.f}\left( t \right) \\ \mathtt{spring\_damper.s\_rel}\left( t \right) = \mathtt{spring\_damper.flange\_b.s}\left( t \right) - \mathtt{spring\_damper.flange\_a.s}\left( t \right) \\ \mathtt{spring\_damper.v\_rel}\left( t \right) = \frac{\mathrm{d} \mathtt{spring\_damper.s\_rel}\left( t \right)}{\mathrm{d}t} \\ \mathtt{spring\_damper.flange\_b.f}\left( t \right) = \mathtt{spring\_damper.f}\left( t \right) \\ \mathtt{spring\_damper.flange\_a.f}\left( t \right) = - \mathtt{spring\_damper.f}\left( t \right) \\ \mathtt{spring\_damper.f\_c}\left( t \right) = \mathtt{spring\_damper.c} \left( \mathtt{spring\_damper.s\_rel}\left( t \right) - \mathtt{spring\_damper.initial\_stretch}\left( t \right) \right) \\ \frac{\mathrm{d} \mathtt{spring\_damper.initial\_stretch}\left( t \right)}{\mathrm{d}t} = 0 \\ \mathtt{spring\_damper.f\_d}\left( t \right) = \mathtt{spring\_damper.d} \mathtt{spring\_damper.v\_rel}\left( t \right) \\ \mathtt{spring\_damper.f}\left( t \right) = \mathtt{spring\_damper.f\_c}\left( t \right) + \mathtt{spring\_damper.f\_d}\left( t \right) \\ \mathtt{spring\_damper.lossPower}\left( t \right) = \mathtt{spring\_damper.v\_rel}\left( t \right) \mathtt{spring\_damper.f\_d}\left( t \right) \\ \end{array} \right] \end{equation} \]
Source
component MassSpringDamper
mass = TranslationalComponents.Mass(m=m, L=0.0, g=g, theta=theta) [{
"JuliaSim": {"placement": {"icon": {"x1": 200, "y1": 100, "x2": 400, "y2": 300}}}
}]
spring_damper = TranslationalComponents.SpringDamper(d=d, c=c) [{
"JuliaSim": {"placement": {"icon": {"x1": 600, "y1": 400, "x2": 800, "y2": 600}}}
}]
flange_m = Flange() [{
"JuliaSim": {"placement": {"icon": {"x1": -50, "y1": 450, "x2": 50, "y2": 550}}}
}]
flange_sd = Flange() [{
"JuliaSim": {"placement": {"icon": {"x1": 950, "y1": 450, "x2": 1050, "y2": 550}}}
}]
# Component mass
parameter m::JSML.Mass
# Stiffness of the spring
parameter c::TranslationalSpringConstant
# Damping coefficient
parameter d::DampingCoefficient
# Gravity
parameter g::Acceleration
# Initial position
parameter s0::JSML.Position
# Initial velocity
parameter v0::Velocity = 0
# Initial acceleration
parameter a0::Acceleration = 0
# Angle of motion with +X axis
parameter theta::Angle = 0
relations
initial mass.s = s0
initial mass.v = v0
initial mass.a = a0
connect(flange_m, mass.flange_b, spring_damper.flange_a) [{
"JuliaSim": {
"edges": [
{"S": -1, "M": [{"x": 100, "y": 150}], "E": 1},
{"S": -1, "E": 2},
{"S": -1, "E": 3}
],
"junctions": [{"x": 300, "y": 500}]
}
}]
connect(spring_damper.flange_b, flange_sd) [{"JuliaSim": {"edges": [{"S": 2, "E": 1}]}}]
metadata {
"JuliaSim": {
"icons": {"default": "jsml://JuliaSimExampleComponents/mass_spring_damper.svg"}
}
}
end
Flattened Source
component MassSpringDamper mass = TranslationalComponents.Mass(m=m, L=0.0, g=g, theta=theta) [{ "JuliaSim": {"placement": {"icon": {"x1": 200, "y1": 100, "x2": 400, "y2": 300}}} }] spring_damper = TranslationalComponents.SpringDamper(d=d, c=c) [{ "JuliaSim": {"placement": {"icon": {"x1": 600, "y1": 400, "x2": 800, "y2": 600}}} }] flange_m = Flange() [{ "JuliaSim": {"placement": {"icon": {"x1": -50, "y1": 450, "x2": 50, "y2": 550}}} }] flange_sd = Flange() [{ "JuliaSim": {"placement": {"icon": {"x1": 950, "y1": 450, "x2": 1050, "y2": 550}}} }] # Component mass parameter m::JSML.Mass # Stiffness of the spring parameter c::TranslationalSpringConstant # Damping coefficient parameter d::DampingCoefficient # Gravity parameter g::Acceleration # Initial position parameter s0::JSML.Position # Initial velocity parameter v0::Velocity = 0 # Initial acceleration parameter a0::Acceleration = 0 # Angle of motion with +X axis parameter theta::Angle = 0 relations initial mass.s = s0 initial mass.v = v0 initial mass.a = a0 connect(flange_m, mass.flange_b, spring_damper.flange_a) [{ "JuliaSim": { "edges": [ {"S": -1, "M": [{"x": 100, "y": 150}], "E": 1}, {"S": -1, "E": 2}, {"S": -1, "E": 3} ], "junctions": [{"x": 300, "y": 500}] } }] connect(spring_damper.flange_b, flange_sd) [{"JuliaSim": {"edges": [{"S": 2, "E": 1}]}}] metadata { "JuliaSim": { "icons": {"default": "jsml://JuliaSimExampleComponents/mass_spring_damper.svg"} } } end
Test Cases
Related
- Examples
- Experiments
- Analyses