$(instance)MassSpringDamper Icon

MassSpringDamper

Usage

MassSpringDamper(m, c, d, g, s0, v0=0, a0=0, theta=0)

Parameters:

NameDescriptionUnitsDefault value
mComponent masskg
cStiffness of the springN/m
dDamping coefficients-1
gGravitym/s2
s0Initial positionm
v0Initial velocitym/s0
a0Initial accelerationm/s20
thetaAngle of motion with +X axisrad0

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

  • Examples
  • Experiments
  • Analyses