Thick-walled cylinder under internal pressure (Lamé) ====================================================== One of the oldest pressure-vessel benchmarks in solid mechanics. A long cylinder with inner radius :math:`a`, outer radius :math:`b`, subjected to internal pressure :math:`p_i` (no external pressure) develops radial and hoop stress fields that Lamé derived analytically in 1852. Under the plane-strain assumption (``ε_z = 0`` — long cylinder with ends restrained): .. math:: \sigma_r(r) &= \frac{p_i a^{2}}{b^{2} - a^{2}} \Bigl(1 - \frac{b^{2}}{r^{2}}\Bigr), \\ \sigma_\theta(r) &= \frac{p_i a^{2}}{b^{2} - a^{2}} \Bigl(1 + \frac{b^{2}}{r^{2}}\Bigr), \\ u_r(r) &= \frac{p_i\,a^{2}\,r}{E(b^{2}-a^{2})} \Bigl[(1 - \nu - 2\nu^{2}) + \frac{b^{2}(1+\nu)}{r^{2}}\Bigr]. Radial displacement peaks at the inner surface; hoop stress also peaks there. :math:`\sigma_r(a) = -p_i` exactly (the applied pressure, with compression sign convention). Problem ------- .. list-table:: :header-rows: 1 :widths: 30 70 * - Parameter - Value * - Inner radius ``a`` - 0.01 m (10 mm) * - Outer radius ``b`` - 0.02 m (20 mm) * - Axial slab thickness - 0.001 m (plane-strain model) * - Young's modulus ``E`` - 210 GPa * - Poisson's ratio ``ν`` - 0.30 * - Internal pressure ``p_i`` - 100 MPa * - Expected ``u_r(a)`` - 9.08 × 10⁻⁶ m * - Expected ``σ_θ(a)`` - 166.7 MPa (tensile) * - Expected ``σ_θ(b)`` - 66.7 MPa (tensile) femorph-solver result --------------------- Ran by :file:`tests/validation/test_lame_cylinder.py` on a mapped quarter-annulus hex mesh (``SOLID185`` kernel). Plane strain is enforced by pinning ``UZ = 0`` on every node of the thin slab; symmetry BCs on the cut x-axis / y-axis planes restore the full annulus. The internal pressure is lumped onto the inner-surface nodes via trapezoid arc-length weighting, with local nodal accumulation before calling ``Model.apply_force`` (the ``_f_impl`` path assigns rather than accumulates). .. list-table:: :header-rows: 1 :widths: 15 15 15 20 15 20 * - Refinement - Mesh (n_θ × n_r) - ``u_r(a)`` - Δ - ``σ_θ(a)`` - Δ * - Coarse - 16 × 4 - 9.038 × 10⁻⁶ m - −0.45 % - 186.0 MPa - +11.58 % * - Medium - 32 × 8 - 9.069 × 10⁻⁶ m - −0.12 % - 177.6 MPa - +6.57 % * - Reference - 64 × 16 - 9.077 × 10⁻⁶ m - −0.03 % - 172.5 MPa - +3.51 % Radial displacement converges to under 0.05 %. The hoop-stress concentration at ``r = a`` is harder to resolve on a coarse mesh — the ``1/r²`` gradient is steep near the inner surface — but refines to ~3.5 % at the reference mesh, well inside the 8 % engineering tolerance. Cross-references ---------------- .. list-table:: :header-rows: 1 :widths: 35 30 35 * - Source - Reported ``σ_θ(a)`` (MPa) - Problem ID / location * - Closed form (Lamé 1852) - 166.67 - Timoshenko & Goodier 1970 §33 * - Timoshenko & Goodier (1970) - 166.67 - *Theory of Elasticity* §33 * - femorph-solver (refined) - 172.5 - :file:`test_lame_cylinder.py` * - MAPDL Verification Manual - ≈ 166.7 - VM-25 *Stresses in a long cylinder under internal pressure* * - Abaqus Verification Manual - ≈ 166.7 - AVM 1.1.14 thick-walled cylinder family Source ------ Problem class: :class:`femorph_solver.validation.problems.LameCylinder`. Backing regression test: :file:`tests/validation/test_lame_cylinder.py` — convergence study across three mesh refinements asserting all three published quantities (``u_r(a)``, ``σ_θ(a)``, ``σ_θ(b)``) pass their tolerances and that ``u_r`` converges monotonically.