version 3.11-dev
Loading...
Searching...
No Matches
Dumux::HyperelasticLocalResidual< TypeTag > Class Template Reference

Local residual of the hyperelastic model. More...

#include <dumux/solidmechanics/hyperelastic/localresidual.hh>

Inheritance diagram for Dumux::HyperelasticLocalResidual< TypeTag >:

Description

template<class TypeTag>
class Dumux::HyperelasticLocalResidual< TypeTag >

Balance of momentum in the reference configuration,

\[ \varrho_0 \ddot{\mathbf{u}} - \nabla \cdot \mathbf{P} = \mathbf{f}, \]

with the first Piola-Kirchhoff stress \( \mathbf{P} \) and the body force \( \mathbf{f} \). Degrees of freedom with a control volume are tested with its indicator function, all others with their basis function.

The problem provides

  • the stress, as firstPiolaKirchhoffStressTensor(F, elemDisc, ipData) or firstPiolaKirchhoffStressTensor(F),
  • the body force as source(elemDisc, elemVars, ipData),
  • and the boundary terms as boundaryFlux(elemDisc, elemVars, ipData), which enters the residual as \( \int \mathbf{g} \cdot \mathbf{w} \), i.e. \( \mathbf{g} = -\mathbf{P}\mathbf{N} \) for a prescribed traction \( \mathbf{P}\mathbf{N} \).

For dynamics, the problem additionally provides the acceleration and velocity of a local dof, acceleration(elemDisc, elemVars, localDof) and velocity(elemDisc, elemVars, localDof), as functions of its current displacement (for instance from Experimental::NewmarkBeta), and the density solidDensity(elemDisc, ipData). The residual is then assembled as a stationary one. With a velocity, the stress is requested as firstPiolaKirchhoffStressTensor(F, dF/dt, elemDisc, ipData), which allows rate-dependent laws. Degrees of freedom with a control volume use the acceleration of the degree of freedom (lumped mass), all others the interpolated acceleration at the element quadrature points (consistent mass).

Public Types

using ElementResidualVector = typename ParentType::ElementResidualVector

Public Member Functions

template<class SubControlVolume>
NumEqVector storageIntegral (const ElementDiscretization &, const ElementVariables &, const SubControlVolume &, bool) const
template<class SubControlVolume>
NumEqVector sourceIntegral (const ElementDiscretization &elemDisc, const ElementVariables &elemVars, const SubControlVolume &scv) const
 Body force minus inertia (lumped) over a control volume.
template<class SubControlVolumeFace>
NumEqVector fluxIntegral (const ElementDiscretization &elemDisc, const ElementVariables &elemVars, const SubControlVolumeFace &scvf) const
 Stress flux \( -\int \mathbf{P}\mathbf{N} \) over a control volume face.
void addToElementFluxAndSourceResidual (ElementResidualVector &residual, const Problem &problem, const Element &element, const ElementDiscretization &elemDisc, const ElementVariables &elemVars) const
 Galerkin terms \( \int \mathbf{P} : \nabla \mathbf{w} + (\varrho_0 \ddot{\mathbf{u}} - \mathbf{f}) \cdot \mathbf{w} \) of the dofs without control volume.

Member Typedef Documentation

◆ ElementResidualVector

template<class TypeTag>
using Dumux::HyperelasticLocalResidual< TypeTag >::ElementResidualVector = typename ParentType::ElementResidualVector

Member Function Documentation

◆ addToElementFluxAndSourceResidual()

template<class TypeTag>
void Dumux::HyperelasticLocalResidual< TypeTag >::addToElementFluxAndSourceResidual ( ElementResidualVector & residual,
const Problem & problem,
const Element & element,
const ElementDiscretization & elemDisc,
const ElementVariables & elemVars ) const
inline

◆ fluxIntegral()

template<class TypeTag>
template<class SubControlVolumeFace>
NumEqVector Dumux::HyperelasticLocalResidual< TypeTag >::fluxIntegral ( const ElementDiscretization & elemDisc,
const ElementVariables & elemVars,
const SubControlVolumeFace & scvf ) const
inline

◆ sourceIntegral()

template<class TypeTag>
template<class SubControlVolume>
NumEqVector Dumux::HyperelasticLocalResidual< TypeTag >::sourceIntegral ( const ElementDiscretization & elemDisc,
const ElementVariables & elemVars,
const SubControlVolume & scv ) const
inline

◆ storageIntegral()

template<class TypeTag>
template<class SubControlVolume>
NumEqVector Dumux::HyperelasticLocalResidual< TypeTag >::storageIntegral ( const ElementDiscretization & ,
const ElementVariables & ,
const SubControlVolume & ,
bool  ) const
inline

The documentation for this class was generated from the following file: