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 (
Here, c
is the spring constant (stiffness), PartialCompliant
), and
This component extends from PartialCompliant
Usage
Spring(c, s_rel0=0)
Parameters:
Name | Description | Units | Default value |
---|---|---|---|
c | Spring constant, representing the stiffness of the spring. | N/m | |
s_rel0 | Unstretched relative displacement of the spring, where the spring force is zero. | m | 0 |
Connectors
Variables
Name | Description | Units |
---|---|---|
s_rel | Relative distance between flange_b and flange_a | m |
f | Internal force exerted by the compliant connection on flange_b (and -f on flange_a). | N |
Behavior
Source
dyad
# 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
dyad
# 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
This is setup code, that must be run before each test case.
julia
using TranslationalComponents
using ModelingToolkit, OrdinaryDiffEqDefault
using Plots
using CSV, DataFrames
snapshotsdir = joinpath(dirname(dirname(pathof(TranslationalComponents))), "test", "snapshots")
"/home/actions-runner-10/.julia/packages/TranslationalComponents/khJb7/test/snapshots"
Related
Examples
Experiments
Analyses
Tests