Skip to content
LIBRARY
examples.suspension.SuspensionWithExcitationAndMass.md

examples.suspension.SuspensionWithExcitationAndMass

Quarter-car model: an excited suspension carrying a chassis mass, constrained to move only vertically by the body_upright prismatic joint to the world.

Usage

MultibodyComponents.examples.suspension.SuspensionWithExcitationAndMass(ms=1500 / 4, rod_radius=0.02, dir=ifelse(mirror, -1.0, 1.0), DA=221.43 / 1000, t5=19.84 * π / 180, d_cm=[0, 0.2, 0.2 * sin(t5) * dir], r_cm=0.5 * DA * d_cm / MultibodyComponents.norm_(d_cm))

Parameters:

NameDescriptionUnitsDefault value
mirrorfalse
msMass of the car [kg]kg1500 / 4
rod_radiusRadius of the rods0.02

Behavior

Source

dyad
"""
Quarter-car model: an excited suspension carrying a chassis mass, constrained to
move only vertically by the `body_upright` prismatic joint to the world.
"""
component SuspensionWithExcitationAndMass
  world = MultibodyComponents.World()
  mass = MultibodyComponents.Body(m = ms, r_cm = r_cm)
  excited_suspension = SuspensionWithExcitation(spring = true, mirror = mirror, rod_radius = rod_radius)
  body_upright = MultibodyComponents.Prismatic(n = [0, 1, 0], render = false, statePriority = 1000)
  structural parameter mirror::Boolean = false
  "Mass of the car [kg]"
  parameter ms::Mass = 1500 / 4
  "Radius of the rods"
  parameter rod_radius::Real = 0.02
  final parameter dir::Real = ifelse(mirror, -1.0, 1.0)
  final parameter DA::Real = 221.43 / 1000
  final parameter t5::Real = 19.84 * π / 180
  final parameter d_cm::Real[3] = [0, 0.2, 0.2 * sin(t5) * dir]
  final parameter r_cm::Length[3] = 0.5 * DA * d_cm / MultibodyComponents.norm_(d_cm)
relations
  connect(world.frame_b, body_upright.frame_a)
  connect(body_upright.frame_b, excited_suspension.chassis_frame)
  connect(body_upright.frame_b, mass.frame_a)
metadata {
  "Dyad": {
    "icons": {"default": "dyad://MultibodyComponents/SuspensionWithExcitationAndMass.svg"}
  }
}
end
Flattened Source
dyad
"""
Quarter-car model: an excited suspension carrying a chassis mass, constrained to
move only vertically by the `body_upright` prismatic joint to the world.
"""
component SuspensionWithExcitationAndMass
  world = MultibodyComponents.World()
  mass = MultibodyComponents.Body(m = ms, r_cm = r_cm)
  excited_suspension = SuspensionWithExcitation(spring = true, mirror = mirror, rod_radius = rod_radius)
  body_upright = MultibodyComponents.Prismatic(n = [0, 1, 0], render = false, statePriority = 1000)
  structural parameter mirror::Boolean = false
  "Mass of the car [kg]"
  parameter ms::Mass = 1500 / 4
  "Radius of the rods"
  parameter rod_radius::Real = 0.02
  final parameter dir::Real = ifelse(mirror, -1.0, 1.0)
  final parameter DA::Real = 221.43 / 1000
  final parameter t5::Real = 19.84 * π / 180
  final parameter d_cm::Real[3] = [0, 0.2, 0.2 * sin(t5) * dir]
  final parameter r_cm::Length[3] = 0.5 * DA * d_cm / MultibodyComponents.norm_(d_cm)
relations
  connect(world.frame_b, body_upright.frame_a)
  connect(body_upright.frame_b, excited_suspension.chassis_frame)
  connect(body_upright.frame_b, mass.frame_a)
metadata {
  "Dyad": {
    "icons": {"default": "dyad://MultibodyComponents/SuspensionWithExcitationAndMass.svg"}
  }
}
end


Test Cases

No test cases defined.

  • Examples

  • Experiments

  • Analyses