TRUSS2 — 2-node 3D axial bar ============================ Pure-axial 2-node element. Carries only axial force — no bending, no torsion, no shear. Two end nodes × 3 translational DOFs = 6 DOFs per element. * **Spec:** ``ELEMENTS.TRUSS2`` Kinematics ---------- Linear 1D Lagrange shape functions on the natural coordinate :math:`s \in [-1, +1]`: .. math:: N_1(s) = \tfrac{1 - s}{2}, \qquad N_2(s) = \tfrac{1 + s}{2}. The axial-strain measure :math:`\varepsilon_x = \mathrm{d} u_x / \mathrm{d} x` reduces to the constant :math:`(u_{x,2} - u_{x,1}) / L`. Stiffness --------- Closed-form local stiffness (no quadrature needed): .. math:: \mathbf{K}^{\mathrm{loc}} = \frac{E A}{L} \begin{bmatrix} 1 & -1 \\ -1 & 1 \end{bmatrix}, acting on the local axial DOFs. A direction-cosine 6 × 6 rotation block lifts this into the global 3D frame. Mass ---- Consistent (Cook Table 16.3-1): .. math:: \mathbf{M}^{\mathrm{loc}} = \frac{\rho A L}{6} \begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix}. Lumped: :math:`\rho A L / 2` on each node's axial DOF. Real constants -------------- * ``REAL[0]`` — :math:`A`, cross-sectional area. Verification cross-references ----------------------------- * :ref:`sphx_glr_gallery_elements_link180_example_link180.py` — single-bar tip-displacement under axial load. * :ref:`sphx_glr_gallery_verification_example_verify_axial_rod_nf.py` — fixed-free rod natural frequencies (mixed Dirichlet / Neumann eigenvalue problem). Implementation: :mod:`femorph_solver.elements.truss2`. 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.3 (axial bar), Table 16.3-1 (consistent mass). * Bathe, K.-J. (2014) *Finite Element Procedures*, 2nd ed., §3.4.1 (truss element derivation).