Rodin/Solid/Linear/P1/LinearElasticityIntegral.h file

P1 specialization of the linear elasticity bilinear form integrator.

This file provides an optimized implementation of the linear elasticity integrator for P1 vector finite element spaces.

Bilinear Form

The integrator assembles the elasticity bilinear form:

\[ a(\mathbf{u}, \mathbf{v}) = \int_\Omega 2\mu \, \boldsymbol{\varepsilon}(\mathbf{u}) : \boldsymbol{\varepsilon}(\mathbf{v}) + \lambda (\nabla \cdot \mathbf{u})(\nabla \cdot \mathbf{v}) \, dx \]

For P1 elements, this uses centroid quadrature (exact for the bilinear form) and exploits the constant gradient property of P1 basis functions.

Usage

P1 Vh(mesh, spaceDim);  // Vector P1 space
TrialFunction u(Vh);
TestFunction v(Vh);

Real mu = 1.0, lambda = 1.0;
Problem problem(u, v);
problem = Solid::Linear::LinearElasticityIntegral(u, v)(lambda, mu);

Namespaces

namespace Rodin
The Rodin library for finite element methods and shape optimization.
namespace Rodin::Variational
Finite element spaces, fields, and variational problems.

Classes

template<class Solution, class LambdaDerived, class MuDerived, class Range, class Mesh>
class Rodin::Variational::LinearElasticityIntegrator<Solution, P1<Range, Mesh>, LambdaDerived, MuDerived>
P1 linear elasticity bilinear form integrator.