Skip to content
SpringDamper.md

SpringDamper

Models a linear 1D rotational spring and damper acting in parallel.

This component represents a parallel combination of a linear rotational spring and a linear rotational damper. It calculates the total torque based on the relative angular displacement and velocity between its mechanical connection flanges. The spring torque (τc) is proportional to the angular displacement from an unstretched reference angle (ϕrel0), defined by the spring constant (c). The damper torque (τd) is proportional to the relative angular velocity (wrel), defined by the damping constant (d). The governing equations are:

τc=c(phirelphirel0)τd=dwrelτ=τc+τd

This component extends from PartialCompliantWithRelativeStates

Usage

SpringDamper(d, c, phi_rel0=0.0)

Parameters:

NameDescriptionUnitsDefault value
dDamping constant of the rotational damperN.m.s/rad
cSpring constant of the rotational springN.m/rad
phi_rel0Unstretched (zero torque) relative angle of the springrad0

Connectors

Variables

NameDescriptionUnits
phi_relRelative rotation angle between spline_b and spline_arad
tauTorque transmitted between the splinesN.m
w_relRelative angular velocity between splinesrad/s
a_relRelative angular acceleration between splinesrad/s2
tau_cSpring torque contributionN.m
tau_dDamper torque contributionN.m

Behavior

phi_rel(t)=spline_b.phi(t)spline_a.phi(t)spline_b.tau(t)=tau(t)spline_a.tau(t)=tau(t)dphi_rel(t)dt=w_rel(t)dw_rel(t)dt=a_rel(t)tau_c(t)=c(phi_rel0+phi_rel(t))tau_d(t)=dw_rel(t)tau(t)=tau_d(t)+tau_c(t)

Source

dyad
# Models a linear 1D rotational spring and damper acting in parallel.
#
# This component represents a parallel combination of a linear rotational spring and a linear rotational damper. It calculates the total torque based on the relative angular displacement and velocity between its mechanical connection flanges.
# The spring torque (\$\tau_c\$) is proportional to the angular displacement from an unstretched reference angle (\$\\phi_{rel0}\$), defined by the spring constant (\$c\$).
# The damper torque (\$\tau_d\$) is proportional to the relative angular velocity (\$w_{rel}\$), defined by the damping constant (\$d\$).
# The governing equations are:
# ```math
# \begin{align*}
# \tau_c &= c (\\phi_{rel} - \\phi_{rel0}) \\
# \tau_d &= d w_{rel} \\
# \tau &= \tau_c + \tau_d
# \end{align*}
# ```
component SpringDamper
  extends PartialCompliantWithRelativeStates
  # Spring torque contribution
  variable tau_c::Torque
  # Damper torque contribution
  variable tau_d::Torque
  # Damping constant of the rotational damper
  parameter d::RotationalDampingConstant
  # Spring constant of the rotational spring
  parameter c::RotationalSpringConstant
  # Unstretched (zero torque) relative angle of the spring
  parameter phi_rel0::Angle = 0.0
relations
  tau_c = c*(phi_rel-phi_rel0)
  tau_d = d*w_rel
  tau = tau_c+tau_d
metadata {"Dyad": {"icons": {"default": "dyad://RotationalComponents/SpringDamper.svg"}}}
end
Flattened Source
dyad
# Models a linear 1D rotational spring and damper acting in parallel.
#
# This component represents a parallel combination of a linear rotational spring and a linear rotational damper. It calculates the total torque based on the relative angular displacement and velocity between its mechanical connection flanges.
# The spring torque (\$\tau_c\$) is proportional to the angular displacement from an unstretched reference angle (\$\\phi_{rel0}\$), defined by the spring constant (\$c\$).
# The damper torque (\$\tau_d\$) is proportional to the relative angular velocity (\$w_{rel}\$), defined by the damping constant (\$d\$).
# The governing equations are:
# ```math
# \begin{align*}
# \tau_c &= c (\\phi_{rel} - \\phi_{rel0}) \\
# \tau_d &= d w_{rel} \\
# \tau &= \tau_c + \tau_d
# \end{align*}
# ```
component SpringDamper
  # First rotational spline interface
  spline_a = Spline() [{"Dyad": {"placement": {"icon": {"x1": -50, "y1": 450, "x2": 50, "y2": 550}}}}]
  # Second rotational spline interface
  spline_b = Spline() [{"Dyad": {"placement": {"icon": {"x1": 950, "y1": 450, "x2": 1050, "y2": 550}}}}]
  # Relative rotation angle between spline_b and spline_a
  variable phi_rel::Angle
  # Torque transmitted between the splines
  variable tau::Torque
  # Relative angular velocity between splines
  variable w_rel::AngularVelocity
  # Relative angular acceleration between splines
  variable a_rel::AngularAcceleration
  # Spring torque contribution
  variable tau_c::Torque
  # Damper torque contribution
  variable tau_d::Torque
  # Damping constant of the rotational damper
  parameter d::RotationalDampingConstant
  # Spring constant of the rotational spring
  parameter c::RotationalSpringConstant
  # Unstretched (zero torque) relative angle of the spring
  parameter phi_rel0::Angle = 0.0
relations
  phi_rel = spline_b.phi-spline_a.phi
  spline_b.tau = tau
  spline_a.tau = -tau
  der(phi_rel) = w_rel
  der(w_rel) = a_rel
  tau_c = c*(phi_rel-phi_rel0)
  tau_d = d*w_rel
  tau = tau_c+tau_d
metadata {"Dyad": {"icons": {"default": "dyad://RotationalComponents/SpringDamper.svg"}}}
end


Test Cases

This is setup code, that must be run before each test case.

julia
using RotationalComponents
using ModelingToolkit, OrdinaryDiffEqDefault
using Plots
using CSV, DataFrames

snapshotsdir = joinpath(dirname(dirname(pathof(RotationalComponents))), "test", "snapshots")
"/home/actions-runner-10/.julia/packages/RotationalComponents/0VPxm/test/snapshots"
  • Examples

  • Experiments

  • Analyses