Rodin/Solid/Integrators/InternalVirtualWorkTangent.h file

Tangent integrators for the internal virtual work in hyperelastic formulations (pure displacement and mixed displacement-pressure), written in terms of the first Piola-Kirchhoff stress.

Pure displacement block:

\[ D(\delta W^{\text{int}})[\Delta\mathbf{u}, \mathbf{v}] = \int_{\Omega_0} D\mathbf{P}[\nabla_0 \Delta\mathbf{u}] : \nabla_0 \mathbf{v} \, dX \]

Mixed u-p formulation with $ \mathbf{P} = \mathbf{P}_{\text{iso}} + p\,J\,\mathbf{F}^{-T} $ . Each block of the Newton matrix

\[ \begin{pmatrix} K_{uu} & K_{up} \\ K_{pu} & 0 \end{pmatrix} \]

is a separate integrator bound to its own (trial, test) pair, so that the blockwise Problem assembly routes it to the correct rows and columns:

  • $ K_{uu} $ : InternalVirtualWorkTangent(law, u, v, displacement, pressure)
  • $ K_{up} $ : InternalVirtualWorkTangentUP(p, v, displacement)
  • $ K_{pu} $ : InternalVirtualWorkTangentPU(u, q, displacement)

Namespaces

namespace Rodin
The Rodin library for finite element methods and shape optimization.
namespace Rodin::Solid
Hyperelastic solid mechanics module for large-deformation problems.

Classes

template<class LawDerived, class TrialFunctionType, class TestFunctionType, class DisplacementType>
class Rodin::Solid::InternalVirtualWorkTangent<LawDerived, TrialFunctionType, TestFunctionType, DisplacementType>
Displacement tangent (pure displacement formulation).
template<class LawDerived, class TrialFunctionType, class TestFunctionType, class DisplacementType, class PressureType>
class Rodin::Solid::InternalVirtualWorkTangent<LawDerived, TrialFunctionType, TestFunctionType, DisplacementType, PressureType>
Displacement-displacement block $ K_{uu} $ of the mixed u-p formulation. Bound to the (u, v) pair.
template<class TrialPressFunctionType, class TestFunctionType, class DisplacementType>
class Rodin::Solid::InternalVirtualWorkTangentUP
Displacement-pressure coupling block $ K_{up} $ . Bound to the (p, v) pair: columns are pressure DOFs, rows are displacement test DOFs.
template<class TrialFunctionType, class TestPressFunctionType, class DisplacementType>
class Rodin::Solid::InternalVirtualWorkTangentPU
Pressure-displacement coupling block $ K_{pu} $ (linearized incompressibility constraint). Bound to the (u, q) pair: columns are displacement DOFs, rows are pressure test DOFs.