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`` 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).