Rodin/Variational/LinearElasticity.h file

Linear elasticity formulations and integrators.

This header aggregates functionality for linear elasticity problems, which model the deformation of elastic bodies under small strains.

Mathematical Foundation

Linear elasticity is governed by the equilibrium equation:

\[ -\nabla \cdot \boldsymbol{\sigma}(\mathbf{u}) = \mathbf{f} \]

where:

  • $ \mathbf{u} $ is the displacement field
  • $ \boldsymbol{\sigma} $ is the stress tensor
  • $ \mathbf{f} $ is the body force

Constitutive Relations

For isotropic linear elastic materials:

\[ \boldsymbol{\sigma} = \lambda \text{tr}(\boldsymbol{\varepsilon}) \mathbf{I} + 2\mu \boldsymbol{\varepsilon} \]

where:

  • $ \boldsymbol{\varepsilon} = \frac{1}{2}(\nabla \mathbf{u} + \nabla \mathbf{u}^T) $ is the strain tensor
  • $ \lambda, \mu $ are the Lamé parameters

Weak Formulation

Find $ \mathbf{u} \in V $ such that:

\[ \int_\Omega \boldsymbol{\sigma}(\mathbf{u}) : \boldsymbol{\varepsilon}(\mathbf{v}) \, dx = \int_\Omega \mathbf{f} \cdot \mathbf{v} \, dx \]

for all $ \mathbf{v} \in V $ .

Usage Example

// Define vector-valued P1 space (dimension = spatial dimension)
P1 Vh(mesh, mesh.getSpaceDimension());

TrialFunction u(Vh);
TestFunction v(Vh);

// Lamé parameters
Real lambda = 1.0, mu = 1.0;

// Linear elasticity bilinear form
auto a = LinearElasticityIntegral(lambda, mu, u, v);