$(instance)Spring Icon

Spring

Linear 1D translational spring relating force to displacement via Hooke's Law.

This component represents a one-dimensional translational mechanical spring. It models the linear relationship between the force ($f$) exerted by the spring and its deformation ($s_{rel}$) relative to an unstretched length ($s_{rel0}$). The governing equation is Hooke's Law:

\[f = c \cdot (s_{rel} - s_{rel0})\]

Here, c is the spring constant (stiffness), $s_{rel}$ is the current relative displacement between the spring's two connection flanges (typically inherited from PartialCompliant), and $s_{rel0}$ is the relative displacement at which the spring exerts no force.

PartialCompliant

Usage

Spring(c, s_rel0=0)

Parameters:

NameDescriptionUnitsDefault value
cSpring constant, representing the stiffness of the spring.N/m
s_rel0Unstretched relative displacement of the spring, where the spring force is zero.m0

Connectors

  • flange_a - This connector represents a mechanical flange with position and force as the potential and flow variables, respectively. (Flange)
  • flange_b - This connector represents a mechanical flange with position and force as the potential and flow variables, respectively. (Flange)

Variables

NameDescriptionUnits
s_relRelative distance between flange_b and flange_am
fInternal force exerted by the compliant connection on flangeb (and -f on flangea).N

Behavior

\[ \begin{align} \mathtt{s\_rel}\left( t \right) &= \mathtt{flange\_b.s}\left( t \right) - \mathtt{flange\_a.s}\left( t \right) \\ \mathtt{flange\_b.f}\left( t \right) &= f\left( t \right) \\ \mathtt{flange\_a.f}\left( t \right) &= - f\left( t \right) \\ f\left( t \right) &= c \left( - \mathtt{s\_rel0} + \mathtt{s\_rel}\left( t \right) \right) \end{align} \]

Source

# Linear 1D translational spring relating force to displacement via Hooke's Law.
#
# This component represents a one-dimensional translational mechanical spring.
# It models the linear relationship between the force ($f$) exerted by the
# spring and its deformation ($s_{rel}$) relative to an unstretched length ($s_{rel0}$).
# The governing equation is Hooke's Law:
# ```math
# f = c \cdot (s_{rel} - s_{rel0})
# ```
# Here, `c` is the spring constant (stiffness), $s_{rel}$ is the current
# relative displacement between the spring's two connection flanges (typically
# inherited from `PartialCompliant`), and $s_{rel0}$ is the relative displacement
# at which the spring exerts no force.
component Spring
  extends PartialCompliant
  # Spring constant, representing the stiffness of the spring.
  parameter c::TranslationalSpringConstant
  # Unstretched relative displacement of the spring, where the spring force is zero.
  parameter s_rel0::Distance = 0
relations
  f = c*(s_rel-s_rel0)
metadata {"Dyad": {"icons": {"default": "dyad://TranslationalComponents/Spring.svg"}}}
end
Flattened Source
# Linear 1D translational spring relating force to displacement via Hooke's Law.
#
# This component represents a one-dimensional translational mechanical spring.
# It models the linear relationship between the force ($f$) exerted by the
# spring and its deformation ($s_{rel}$) relative to an unstretched length ($s_{rel0}$).
# The governing equation is Hooke's Law:
# ```math
# f = c \cdot (s_{rel} - s_{rel0})
# ```
# Here, `c` is the spring constant (stiffness), $s_{rel}$ is the current
# relative displacement between the spring's two connection flanges (typically
# inherited from `PartialCompliant`), and $s_{rel0}$ is the relative displacement
# at which the spring exerts no force.
component Spring
  # Port representing the first translational 1D shaft flange.
  flange_a = Flange() [{"Dyad": {"placement": {"icon": {"x1": -50, "y1": 450, "x2": 50, "y2": 550}}}}]
  # Port representing the second translational 1D shaft flange.
  flange_b = Flange() [{"Dyad": {"placement": {"icon": {"x1": 950, "y1": 450, "x2": 1050, "y2": 550}}}}]
  # Relative distance between `flange_b` and `flange_a`
  variable s_rel::Distance
  # Internal force exerted by the compliant connection on flange_b (and -f on flange_a).
  variable f::Dyad.Force
  # Spring constant, representing the stiffness of the spring.
  parameter c::TranslationalSpringConstant
  # Unstretched relative displacement of the spring, where the spring force is zero.
  parameter s_rel0::Distance = 0
relations
  s_rel = flange_b.s-flange_a.s
  flange_b.f = f
  flange_a.f = -f
  f = c*(s_rel-s_rel0)
metadata {"Dyad": {"icons": {"default": "dyad://TranslationalComponents/Spring.svg"}}}
end


Test Cases

No test cases defined.