SPRING — 2-node longitudinal spring =================================== A linear longitudinal spring of stiffness :math:`k` connecting two nodes. Two end nodes × 3 translational DOFs = 6 DOFs per element. No mass contribution. * **Spec:** ``ELEMENTS.SPRING`` .. raw:: html Verified vs analytical series-spring + spring-mass natural frequency Cross-vendor mapping -------------------- ========================== ============================== ============================================ Solver Element name Notes ========================== ============================== ============================================ femorph-solver ``ELEMENTS.SPRING`` linear axial spring; stiffness-only ANSYS Mechanical APDL ``COMBIN14`` longitudinal spring-damper (no damper here) NX / MSC Nastran ``CELAS1`` / ``CELAS2`` PELAS property carries stiffness; CELAS2 inline Abaqus ``SPRING1`` / ``SPRING2`` SPRING2 = two-node axial (matches our case) LS-DYNA ``ELEMENT_DISCRETE`` DRO=0 (translational discrete element) ========================== ============================== ============================================ Restrictions ------------ Use a different element when: * **Rotational / torsional stiffness** is needed — SPRING here carries only translational stiffness; the rotational analogue isn't shipped yet (use a stiff BEAM2 segment as a workaround). * **Damping** is required for transient / harmonic analysis — SPRING is stiffness-only; Rayleigh damping at the model level is the current path. Stiffness --------- The local 2 × 2 axial stiffness: .. math:: \mathbf{K}^{\mathrm{loc}} = k\, \begin{bmatrix} 1 & -1 \\ -1 & 1 \end{bmatrix}, rotated into the global 6 × 6 by a direction-cosine block. The spring carries **only** the axial component along the node-to-node direction; transverse motion is unconstrained (zero stiffness, zero coupling). When a single SPRING element is the only member at a free node, the solver's zero-pivot guard pins the free transverse DOFs automatically. Mass ---- None. SPRING is a stiffness-only kernel — every entry in :math:`\mathbf{M}^{\mathrm{loc}}` is zero. Real constants -------------- * ``REAL[0]`` — :math:`k`, axial stiffness in N / m. Verification cross-references ----------------------------- * :ref:`sphx_glr_gallery_elements_combin14_example_combin14.py` — series of two springs vs analytical equivalent stiffness :math:`k_{\mathrm{eq}} = k_1 k_2 / (k_1 + k_2)`. * :ref:`sphx_glr_gallery_elements_mass21_example_mass21.py` — single-DOF spring-mass system, :math:`f = (1/2\pi)\sqrt{k/m}`. Implementation: :mod:`femorph_solver.elements.spring`. References ---------- * Cook, R. D., Malkus, D. S., Plesha, M. E., Witt, R. J. (2002) *Concepts and Applications of Finite Element Analysis*, 4th ed., Wiley, §2.2 (spring element). * Bathe, K.-J. (2014) *Finite Element Procedures*, 2nd ed., §3.4.1 (extension to springs).