KASKADE 7 development version
|
General base class for variational functionals defined in terms of hyperelastic stored energies. More...
#include <elastoVariationalFunctionals.hh>
General base class for variational functionals defined in terms of hyperelastic stored energies.
This defines the interface for stored energies working on displacement derivatives \( W = W(u_x) \). The interface is intended to be used for defining the domain cache of variational functionals.
The class has as a member an object of the hyperelastic energy defining the stored energy \( W(E) \) depending on the Green-Lagrange strain tensor.
HyperelasticEnergy | the hyperelastic energy class |
StrainTensor | the strain tensor class, usually one of GreenLagrangeTensor or LinearizedGreenLagrangeTensor |
Example for linear elastomechanics of steel:
Definition at line 43 of file elastoVariationalFunctionals.hh.
Public Types | |
using | Scalar = typename HyperelasticEnergy::Scalar |
using | Tensor = Dune::FieldMatrix< Scalar, dim, dim > |
Public Member Functions | |
template<typename... Args> | |
HyperelasticVariationalFunctional (Args &&... args) | |
Constructor. More... | |
HyperelasticVariationalFunctional (HyperelasticEnergy const &energy_, StrainTensor const &strain_) | |
Constructor. More... | |
void | setLinearizationPoint (Tensor const &du0) |
Defines the displacement derivative around which to linearize. More... | |
Scalar | d0 () const |
Computes the hyperelastic stored energy density. More... | |
Dune::FieldVector< Scalar, dim > | d1 (VariationalArg< Scalar, dim > const &arg) const |
Computes the directional derivative of the hyperelastic stored energy density. More... | |
Tensor | d2 (VariationalArg< Scalar, dim > const &arg1, VariationalArg< Scalar, dim > const &arg2) const |
Computes the second directional derivative of the hyperelastic stored energy density. More... | |
HyperelasticEnergy & | getHyperelasticEnergy () |
Provides access to the stored energy density. More... | |
HyperelasticEnergy const & | getHyperelasticEnergy () const |
getHyperelasticEnergy provides read access to the stored energy density. More... | |
Tensor const & | getDu () const |
getDu provides read access to the current displacement derivative. More... | |
StrainTensor const & | getStrain () const |
getStrain provides read access to the current strain tensor. More... | |
Tensor | stress () const |
Returns the 2nd Piola-Kirchhoff stress tensor \( S = \frac{\partial W}{\partial E} \) corresponding to the current displacement derivative. More... | |
Tensor | cauchyStress () const |
Returns the Cauchy stress tensor \( \sigma = \frac{1}{J} F S F^T \) corresponding to the current displacement derivative. More... | |
Static Public Attributes | |
static int const | dim = HyperelasticEnergy::dim |
Protected Attributes | |
Tensor | du |
HyperelasticEnergy | energy |
StrainTensor | strain |
using Kaskade::Elastomechanics::HyperelasticVariationalFunctional< HyperelasticEnergy, StrainTensor >::Scalar = typename HyperelasticEnergy::Scalar |
Definition at line 46 of file elastoVariationalFunctionals.hh.
using Kaskade::Elastomechanics::HyperelasticVariationalFunctional< HyperelasticEnergy, StrainTensor >::Tensor = Dune::FieldMatrix<Scalar,dim,dim> |
Definition at line 48 of file elastoVariationalFunctionals.hh.
|
inline |
Constructor.
The constructor arguments are forwarded to the hyperelastic stored energy constructor. The strain tensor is default initialized.
Definition at line 57 of file elastoVariationalFunctionals.hh.
|
inline |
Constructor.
energy | a hyperelastic energy functional, will be copied to an internal energy member variable |
strain | a strain tensor functional, will be copied to an internal strain variable |
Definition at line 67 of file elastoVariationalFunctionals.hh.
|
inline |
Returns the Cauchy stress tensor \( \sigma = \frac{1}{J} F S F^T \) corresponding to the current displacement derivative.
Here, \( S \) is the second Piola-Kirchhoff stress tensor and \( F = I + u_x \) the deformation derivative.
The Cauchy stress \( \sigma \), also known as "true" stress, describes the tractions in the deformed coordinates, and therefore the "true" force density on a (cutting) surface.
Definition at line 207 of file elastoVariationalFunctionals.hh.
|
inline |
Computes the hyperelastic stored energy density.
Definition at line 91 of file elastoVariationalFunctionals.hh.
|
inline |
Computes the directional derivative of the hyperelastic stored energy density.
Definition at line 99 of file elastoVariationalFunctionals.hh.
|
inline |
Computes the second directional derivative of the hyperelastic stored energy density.
For scalar functions \( \phi, \psi \), the values and derivatives at a certain point are provided in arg1 and arg 2, this computes the \( d\times d \) matrix \( A \) with \( A_{ij} = \epsilon((u_i)_x)^T \mathcal{C} \epsilon((v_j)_x) \), where \( u_i = \phi e_i, v_j = \psi e_j \) and \( e_k \) is the \( k \)-th unit vector.
This is exactly what is to be returned from the d2 method of a a variational functional's domain cache implementing the Lame-Navier equations.
Definition at line 127 of file elastoVariationalFunctionals.hh.
|
inline |
getDu provides read access to the current displacement derivative.
Definition at line 177 of file elastoVariationalFunctionals.hh.
Referenced by Kaskade::Elastomechanics::FirstPiolaKirchhoffStress< HyperelasticEnergy, StrainTensor >::deformationDerivative().
|
inline |
Provides access to the stored energy density.
The stored energy function has the linearization (and evaluation) point given by the latest call to the setLinearizationPoint() method.
Definition at line 161 of file elastoVariationalFunctionals.hh.
Referenced by Kaskade::Elastomechanics::FirstPiolaKirchhoffStress< HyperelasticEnergy, StrainTensor >::energyD2De().
|
inline |
getHyperelasticEnergy provides read access to the stored energy density.
Definition at line 169 of file elastoVariationalFunctionals.hh.
|
inline |
getStrain provides read access to the current strain tensor.
Definition at line 185 of file elastoVariationalFunctionals.hh.
Referenced by Kaskade::Elastomechanics::FirstPiolaKirchhoffStress< HyperelasticEnergy, StrainTensor >::d2(), and Kaskade::Elastomechanics::FirstPiolaKirchhoffStress< HyperelasticEnergy, StrainTensor >::spkStressD1().
|
inline |
Defines the displacement derivative around which to linearize.
This method shall be called when the evaluation of a stored energy and its derivatives is intended for a different displacement derivative, in particular in the "evaluateAt" method of a domain cache.
du0 | the current displacement derivative \( u_x \) |
Definition at line 81 of file elastoVariationalFunctionals.hh.
|
inline |
Returns the 2nd Piola-Kirchhoff stress tensor \( S = \frac{\partial W}{\partial E} \) corresponding to the current displacement derivative.
This is the stress in the reference (material) coordinates, and does not provide the actual force density in the deformed configuration. See cauchyStress.
Definition at line 197 of file elastoVariationalFunctionals.hh.
Referenced by Kaskade::Elastomechanics::HyperelasticVariationalFunctional< HyperelasticEnergy, StrainTensor >::cauchyStress(), Kaskade::Elastomechanics::FirstPiolaKirchhoffStress< HyperelasticEnergy, StrainTensor >::d0(), and Kaskade::Elastomechanics::FirstPiolaKirchhoffStress< HyperelasticEnergy, StrainTensor >::d1().
|
static |
Definition at line 47 of file elastoVariationalFunctionals.hh.
Referenced by Kaskade::Elastomechanics::HyperelasticVariationalFunctional< HyperelasticEnergy, StrainTensor >::cauchyStress(), Kaskade::Elastomechanics::HyperelasticVariationalFunctional< HyperelasticEnergy, StrainTensor >::d1(), and Kaskade::Elastomechanics::HyperelasticVariationalFunctional< HyperelasticEnergy, StrainTensor >::d2().
|
protected |
Definition at line 217 of file elastoVariationalFunctionals.hh.
Referenced by Kaskade::Elastomechanics::HyperelasticVariationalFunctional< HyperelasticEnergy, StrainTensor >::cauchyStress(), Kaskade::Elastomechanics::HyperelasticVariationalFunctional< HyperelasticEnergy, StrainTensor >::getDu(), and Kaskade::Elastomechanics::HyperelasticVariationalFunctional< HyperelasticEnergy, StrainTensor >::setLinearizationPoint().
|
protected |
Definition at line 218 of file elastoVariationalFunctionals.hh.
Referenced by Kaskade::Elastomechanics::HyperelasticVariationalFunctional< HyperelasticEnergy, StrainTensor >::d0(), Kaskade::Elastomechanics::HyperelasticVariationalFunctional< HyperelasticEnergy, StrainTensor >::d1(), Kaskade::Elastomechanics::HyperelasticVariationalFunctional< HyperelasticEnergy, StrainTensor >::d2(), Kaskade::Elastomechanics::HyperelasticVariationalFunctional< HyperelasticEnergy, StrainTensor >::getHyperelasticEnergy(), Kaskade::Elastomechanics::HyperelasticVariationalFunctional< HyperelasticEnergy, StrainTensor >::setLinearizationPoint(), and Kaskade::Elastomechanics::HyperelasticVariationalFunctional< HyperelasticEnergy, StrainTensor >::stress().
|
protected |
Definition at line 219 of file elastoVariationalFunctionals.hh.
Referenced by Kaskade::Elastomechanics::HyperelasticVariationalFunctional< HyperelasticEnergy, StrainTensor >::d1(), Kaskade::Elastomechanics::HyperelasticVariationalFunctional< HyperelasticEnergy, StrainTensor >::d2(), Kaskade::Elastomechanics::HyperelasticVariationalFunctional< HyperelasticEnergy, StrainTensor >::getStrain(), and Kaskade::Elastomechanics::HyperelasticVariationalFunctional< HyperelasticEnergy, StrainTensor >::setLinearizationPoint().