.. _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 </../sfepy/examples/linear_elasticity/elastic2D_axisymmetric.py>`

.. literalinclude:: /../sfepy/examples/linear_elasticity/elastic2D_axisymmetric.py

