template<class PassiveLaw, class ActiveLaw = ActiveFiberLaw>
ActiveContraction class final
Adds active fiber stress to a passive law.
The passive law can be any Rodin hyperelastic law. The active contribution is aligned with Tags::FiberDirection and uses Tags::ActiveExtension; if dynamic tags are present (TimeStep, PreviousActiveExtension, PreviousActiveGamma, PreviousActiveBeta, ElectricalActivation), the condensed dynamic tangent is used.
Base classes
-
template<class Derived>class HyperElasticLaw<ActiveContraction<PassiveLaw, ActiveFiberLaw>>
- CRTP base class for hyperelastic constitutive laws.
Public types
- struct Cache
- Cached passive and active quantities at a quadrature point.
Constructors, destructors, conversion operators
- ActiveContraction(const PassiveLaw& passiveLaw, const ActiveLaw& activeLaw = ActiveLaw())
- Constructs the coupled active contraction law.
Public functions
- auto setLocalTolerance(Real tol) -> ActiveContraction&
- Sets the convergence tolerance for the per-quadrature-point local Newton solve on .
- auto setLocalMaxIterations(size_t n) -> ActiveContraction&
- Sets the maximum number of local Newton iterations on .
- auto getPassiveLaw() const -> const PassiveLaw&
- Returns the passive hyperelastic law.
- auto getActiveLaw() const -> const ActiveLaw&
- Returns the active fiber law.
- void setCache(Cache& cache, const ConstitutivePoint& cp) const
- Populates cached passive and active quantities.
- auto getStrainEnergyDensity(const Cache& cache, const ConstitutivePoint& cp) const -> Real
- Returns the sum of passive and active strain-energy densities.
-
void getFirstPiolaKirchhoffStress(Math::
SpatialMatrix<Real>& P, const Cache& cache, const ConstitutivePoint& cp) const - Adds the active contribution to the first Piola-Kirchhoff stress.
-
void getMaterialTangent(Math::
SpatialMatrix<Real>& dP, const Cache& cache, const ConstitutivePoint& cp, const Math:: SpatialMatrix<Real>& dF) const - Adds the active contribution to the material tangent action.
Function documentation
template<class PassiveLaw, class ActiveLaw>
Rodin:: Solid:: ActiveContraction<PassiveLaw, ActiveLaw>:: ActiveContraction(const PassiveLaw& passiveLaw,
const ActiveLaw& activeLaw = ActiveLaw())
Constructs the coupled active contraction law.
| Parameters | |
|---|---|
| passiveLaw | Passive constitutive law. |
| activeLaw | Active constitutive law. |
template<class PassiveLaw, class ActiveLaw>
ActiveContraction& Rodin:: Solid:: ActiveContraction<PassiveLaw, ActiveLaw>:: setLocalTolerance(Real tol)
Sets the convergence tolerance for the per-quadrature-point local Newton solve on .
| Parameters | |
|---|---|
| tol | Convergence tolerance. |
| Returns | Reference to this object after the operation. |
template<class PassiveLaw, class ActiveLaw>
ActiveContraction& Rodin:: Solid:: ActiveContraction<PassiveLaw, ActiveLaw>:: setLocalMaxIterations(size_t n)
Sets the maximum number of local Newton iterations on .
| Parameters | |
|---|---|
| n | Number of entries. |
| Returns | Reference to this object after the operation. |
template<class PassiveLaw, class ActiveLaw>
const PassiveLaw& Rodin:: Solid:: ActiveContraction<PassiveLaw, ActiveLaw>:: getPassiveLaw() const
Returns the passive hyperelastic law.
| Returns | The passive hyperelastic law. |
|---|
template<class PassiveLaw, class ActiveLaw>
const ActiveLaw& Rodin:: Solid:: ActiveContraction<PassiveLaw, ActiveLaw>:: getActiveLaw() const
Returns the active fiber law.
| Returns | The active fiber law. |
|---|
template<class PassiveLaw, class ActiveLaw>
void Rodin:: Solid:: ActiveContraction<PassiveLaw, ActiveLaw>:: setCache(Cache& cache,
const ConstitutivePoint& cp) const
Populates cached passive and active quantities.
| Parameters | |
|---|---|
| cache | Storage for the constitutive invariant cache. |
| cp | Constitutive evaluation point. |
template<class PassiveLaw, class ActiveLaw>
Real Rodin:: Solid:: ActiveContraction<PassiveLaw, ActiveLaw>:: getStrainEnergyDensity(const Cache& cache,
const ConstitutivePoint& cp) const
Returns the sum of passive and active strain-energy densities.
| Parameters | |
|---|---|
| cache | Constitutive invariant cache populated by setCache(). |
| cp | Constitutive evaluation point. |
| Returns | The sum of passive and active strain-energy densities. |
template<class PassiveLaw, class ActiveLaw>
void Rodin:: Solid:: ActiveContraction<PassiveLaw, ActiveLaw>:: getFirstPiolaKirchhoffStress(Math:: SpatialMatrix<Real>& P,
const Cache& cache,
const ConstitutivePoint& cp) const
Adds the active contribution to the first Piola-Kirchhoff stress.
| Parameters | |
|---|---|
| P | Storage for the first Piola-Kirchhoff stress. |
| cache | Constitutive invariant cache populated by setCache(). |
| cp | Constitutive evaluation point. |
template<class PassiveLaw, class ActiveLaw>
void Rodin:: Solid:: ActiveContraction<PassiveLaw, ActiveLaw>:: getMaterialTangent(Math:: SpatialMatrix<Real>& dP,
const Cache& cache,
const ConstitutivePoint& cp,
const Math:: SpatialMatrix<Real>& dF) const
Adds the active contribution to the material tangent action.
| Parameters | |
|---|---|
| dP | Storage for the resulting stress increment. |
| cache | Constitutive invariant cache populated by setCache(). |
| cp | Constitutive evaluation point. |
| dF | Increment of the deformation gradient. |