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.

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 $e_c$ .

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 $e_c$ .

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.