template<class PassiveLaw, class ActiveLaw = ActiveFiberLaw>
Rodin::Solid::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 $e_c$ .
auto setLocalMaxIterations(size_t n) -> ActiveContraction&
Sets the maximum number of local Newton iterations on $e_c$ .
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.