Cantilever beam — tip deflection + rotation under pure tip moment ==================================================================== Complement to the :doc:`tip-shear cantilever `. A clamped slender cantilever of length :math:`L` carrying a pure moment :math:`M` at its free end deflects and rotates at the tip by .. math:: \delta = \frac{M L^{2}}{2 E I}, \qquad \theta = \frac{M L}{E I}. Because the moment produces uniform curvature along the span (pure bending, zero shear), both quantities fall directly out of :math:`EI\,w'' = M` integrated twice. This is the cleanest calibration problem for bending in a solid-element formulation: there's no shear-locking pathology to tangle with, so any divergence from the closed form points straight at the constitutive or geometric representation of bending. Problem ------- .. list-table:: :header-rows: 1 :widths: 30 70 * - Parameter - Value * - Length ``L`` - 1.0 m * - Cross-section - 0.05 m × 0.05 m (square) * - Young's modulus ``E`` - 200 GPa * - Poisson's ratio ``ν`` - 0.30 * - Tip moment ``M`` - 50 N·m (about the horizontal neutral axis) * - Expected tip deflection ``δ`` - ``M L² / (2 E I) = 2.40 × 10⁻⁴ m`` * - Expected tip rotation ``θ`` - ``M L / (E I) = 4.80 × 10⁻⁴ rad`` where ``I = b h³ / 12 = (0.05)⁴ / 12 = 5.208 × 10⁻⁷ m⁴`` for the square section. Analytical reference -------------------- For a prismatic cantilever the Euler–Bernoulli equation (Timoshenko, *Strength of Materials Part I*, §5.4):: EI · d²w/dx² = M(x) with ``M(x) = M = const`` and the clamped BCs ``w(0) = w'(0) = 0`` integrates to ``w(x) = M x² / (2EI)`` and ``w'(x) = M x / (EI)``. Substituting ``x = L`` gives the closed forms above. femorph-solver result --------------------- Ran by :file:`tests/validation/test_cantilever_moment.py` on an SOLID185 enhanced-strain hex mesh (``KEYOPT(2) = 3``, Simo-Rifai EAS). The moment is applied as a linearly-varying axial traction on the tip face — the discrete equivalent of a pure couple on an orthogonal cross-section: .. math:: f_x^{(i)} = -k \, (z_i - z_\text{mid}), \quad k = \frac{M}{\sum_i (z_i - z_\text{mid})^2}. Integrating the tractions recovers ``M`` exactly on any structured tip-face node set. .. list-table:: :header-rows: 1 :widths: 25 20 25 25 * - Discretisation - Mesh (``nx × ny × nz``) - ``δ`` (m) - Error vs Euler–Bernoulli * - Coarse - 10 × 3 × 3 - see test - < 5 % * - Medium - 20 × 3 × 3 - see test - ~1 % * - Reference - 40 × 3 × 3 - 2.389 × 10⁻⁴ - 0.44 % * - Refined - 80 × 3 × 3 - see test - < 0.2 % Tip rotation tracks the same convergence (~0.3 % at the reference mesh, monotonically tighter with refinement). Cross-references ---------------- Short, factual problem-ID citations only — no vendor content vendored or redistributed. .. list-table:: :header-rows: 1 :widths: 35 30 35 * - Source - Reported ``δ`` (m) - Problem ID / location * - Closed form (Euler–Bernoulli) - 2.400 × 10⁻⁴ - Timoshenko *SoM Part I* §5.4 * - Gere & Goodno (2018) §9.3 - 2.400 × 10⁻⁴ - Tip-couple table entry * - femorph-solver (reference mesh) - 2.389 × 10⁻⁴ - :file:`test_cantilever_moment.py` * - MAPDL Verification Manual - 2.40 × 10⁻⁴ - VM-2 *Beam stresses and deflections* * - Abaqus Verification Manual - 2.40 × 10⁻⁴ - AVM 1.5.x cantilever-with-end-moment family All references agree at three significant figures; femorph-solver lands inside 0.5 % of every one. Source ------ Problem class: :class:`femorph_solver.validation.problems.CantileverTipMoment`. Backing regression test: :file:`tests/validation/test_cantilever_moment.py` — four-mesh convergence sweep, asserts both quantities pass the published tolerance on the finest mesh and that the net axial force on the tip face integrates to zero (pure-moment sanity check).