.. _linear_elasticity-elastic2D_axisymmetric: linear_elasticity/elastic2D_axisymmetric.py =========================================== **Description** Axisymmetric Linear Elasticity (2D formulation). This example demonstrates a two-dimensional axisymmetric formulation of the three-dimensional static linear elasticity equations. The formulation is derived under the standard axisymmetry assumptions and is equivalent to the original three-dimensional problem. Three-dimensional linear elasticity ----------------------------------- Let :math:`\Omega_{3D} \subset \mathbb{R}^3` denote an elastic body. The static equilibrium equations read .. math:: \nabla \cdot \boldsymbol{\sigma} + \boldsymbol{b} = 0 \quad \text{in } \Omega_{3D}. In the absence of body forces (:math:`\boldsymbol{b} = 0`), .. math:: \nabla \cdot \boldsymbol{\sigma} = 0. The material is assumed to be linear, isotropic, and homogeneous, with the constitutive relation .. math:: \boldsymbol{\sigma} = 2\mu\,\boldsymbol{\varepsilon}(\boldsymbol{u}) + \lambda\,\mathrm{tr} \bigl(\boldsymbol{\varepsilon}(\boldsymbol{u})\bigr)\mathbf{I}, where the infinitesimal strain tensor is defined as .. math:: \boldsymbol{\varepsilon}(\boldsymbol{u}) = \frac{1}{2}\bigl( \nabla\boldsymbol{u} + (\nabla\boldsymbol{u})^{T} \bigr). Axisymmetric assumptions ------------------------ Cylindrical coordinates :math:`(r, \theta, z)` are introduced. The following assumptions are made: - all fields are independent of :math:`\theta`, - the circumferential displacement vanishes: :math:`u_\theta = 0`. The displacement field therefore reduces to .. math:: \boldsymbol{u}(r, z) = (u_r(r, z),\, 0,\, u_z(r, z)). The computational domain is the meridian cross-section .. math:: \Omega \subset \mathbb{R}^2_{(r, z)}. Axisymmetric strong form ------------------------ Radial equilibrium ~~~~~~~~~~~~~~~~~~ .. math:: \partial_r \sigma_{rr} + \partial_z \sigma_{rz} + \frac{\sigma_{rr} - \sigma_{\theta\theta}}{r} = 0 \quad \text{in } \Omega. Axial equilibrium ~~~~~~~~~~~~~~~~~ .. math:: \partial_r \sigma_{rz} + \partial_z \sigma_{zz} + \frac{\sigma_{rz}}{r} = 0 \quad \text{in } \Omega. Axisymmetric weak formulation ----------------------------- Let :math:`v_r` and :math:`v_z` denote admissible test functions. Assuming zero traction boundary conditions, integration over the circumferential direction yields the axisymmetric volume element .. math:: \mathrm{d}\Omega_{3D} = 2\pi r\,\mathrm{d}\Omega. Radial equilibrium (weak form) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. math:: \int_\Omega \bigl( \sigma_{rr}\,\partial_r v_r + \sigma_{rz}\,\partial_z v_r \bigr)(2\pi r)\,\mathrm{d}\Omega + \int_\Omega \sigma_{\theta\theta}\,v_r\,(2\pi)\,\mathrm{d}\Omega = 0. Axial equilibrium (weak form) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. math:: \int_\Omega \bigl( \sigma_{rz}\,\partial_r v_z + \sigma_{zz}\,\partial_z v_z \bigr)(2\pi r)\,\mathrm{d}\Omega = 0. Stress--strain relations in axisymmetry --------------------------------------- The nonzero stress components in axisymmetry are .. math:: \begin{array}{rcl} \sigma_{rr} &=& 2\mu\,\partial_r u_r + \lambda\left(\partial_r u_r + \frac{u_r}{r} + \partial_z u_z\right), \\ \sigma_{\theta\theta} &=& 2\mu\,\frac{u_r}{r} + \lambda\left(\partial_r u_r + \frac{u_r}{r} + \partial_z u_z\right), \\ \sigma_{zz} &=& 2\mu\,\partial_z u_z + \lambda\left(\partial_r u_r + \frac{u_r}{r} + \partial_z u_z\right), \\ \sigma_{rz} &=& \mu\left(\partial_z u_r + \partial_r u_z\right). \end{array} Compact bilinear form --------------------- Radial test function ~~~~~~~~~~~~~~~~~~~~ .. math:: \begin{array}{l} \displaystyle \int_{\Omega} (\nabla v_r)^{T} K_{rr}(r) (\nabla u_r)\,\mathrm{d}\Omega + \int_{\Omega} (\nabla v_r)^{T} K_{rz}(r) (\nabla u_z)\,\mathrm{d}\Omega \\ \displaystyle - \lambda \int_{\Omega} u_z\,\partial_z v_r\,\mathrm{d}\Omega + \int_{\Omega} \frac{\lambda + 2\mu}{r}\, u_r v_r\,\mathrm{d}\Omega = 0. \end{array} Axial test function ~~~~~~~~~~~~~~~~~~~ .. math:: \begin{array}{l} \displaystyle \int_{\Omega} (\nabla v_z)^{T} K_{zr}(r) (\nabla u_r)\,\mathrm{d}\Omega + \int_{\Omega} (\nabla v_z)^{T} K_{zz}(r) (\nabla u_z)\,\mathrm{d}\Omega\\ \displaystyle + \lambda \int_{\Omega} u_r\,\partial_z v_z\,\mathrm{d}\Omega = 0. \end{array} Axisymmetric material matrices ------------------------------ .. math:: K_{rr}(r) = r \left[ \begin{array}{cc} \lambda + 2\mu & 0 \\ 0 & \mu \end{array} \right], \qquad K_{rz}(r) = r \left[ \begin{array}{cc} 0 & \lambda \\ \mu & 0 \end{array} \right]. .. math:: K_{zr}(r) = r \left[ \begin{array}{cc} 0 & \mu \\ \lambda & 0 \end{array} \right], \qquad K_{zz}(r) = r \left[ \begin{array}{cc} \mu & 0 \\ 0 & \lambda + 2\mu \end{array} \right]. Remark ------ This formulation is mathematically equivalent to the original three-dimensional linear elasticity problem under the stated axisymmetry assumptions. It is directly suitable for two-dimensional finite element discretizations using the axisymmetric weighting. To run the example, execute one of the following commands:: python3 -m sfepy.scripts.simple ./sfepy/examples/linear_elasticity/elastic2D_axisymmetric.py sfepy-run sfepy/examples/linear_elasticity/elastic2D_axisymmetric.py .. image:: /../doc/images/gallery/linear_elasticity-elastic2D_axisymmetric.png :download:`source code ` .. literalinclude:: /../sfepy/examples/linear_elasticity/elastic2D_axisymmetric.py