jaxmat.materials.viscoelasticity module#

class SLSState[source]#

Bases: AbstractState

Internal state for the StandardLinearSolid behavior.

epsv: SymmetricTensor2#

Viscous strain \(\beps^\text{v}\).

class StandardLinearSolid[source]#

Bases: SmallStrainBehavior

Standard Linear Solid (Zener) viscoelastic model in Maxwell representation.

The model consists of two parallel branches:

  • A purely elastic branch with stiffness elasticity.

  • A Maxwell branch containing in series:

    • An elastic component with stiffness maxwell_stiffness.

    • A viscous component with viscosity maxwell_viscosity.

The total stress is given by the sum of the elastic branch and Maxwell branch stresses. The model captures both instantaneous and time-dependent (viscoelastic) responses.

Notes

The Maxwell branch defines a relaxation time \(\tau = \eta / E_1\), where \(\eta\) is the viscosity and \(E_1\) is the Maxwell spring modulus.

elasticity: AbstractLinearElastic#

Elastic model for the purely elastic branch.

maxwell_stiffness: AbstractLinearElastic#

Elastic model representing the spring in the Maxwell branch.

maxwell_viscosity: float#

Viscosity \(\eta\) of the dashpot in the Maxwell branch.

internal: AbstractState = SLSState(epsv=SymmetricTensor2(dim=3, rank=2, _tensor=f64[3,3]))#

Internal state containing the viscous strain.

constitutive_update(eps, state, dt)[source]#

Perform the constitutive update for a given small strain increment for a small-strain behavior.

This abstract method defines the interface for advancing the material state over a time increment based on the provided strain tensor. Implementations should return the updated stress tensor and internal variables, along with any auxiliary information required for consistent tangent computation or subsequent analysis.

Parameters:
  • eps (array_like) – Small strain tensor at the current integration point.

  • state (PyTree) – PyTree containing the current state variables (stress, strain and internal) of the material.

  • dt (float) – Time increment over which the update is performed.

Returns:

  • stress (array_like) – Updated Cauchy stress tensor.

  • new_state (PyTree) – Updated state variables after the constitutive update.

Notes

This method should be implemented by subclasses defining specific constitutive behaviors (elastic, plastic, viscoplastic, etc.).

class GeneralizedMaxwellState[source]#

Bases: AbstractState

Internal state for the GeneralizedMaxwell viscoelastic model.

Stores the internal viscous strains and stresses for each Maxwell branch.

epsv: SymmetricTensor2#

Viscous strains \(\beps^\text{v}_i\) for each Maxwell branch.

sigv: SymmetricTensor2#

Viscoelastic stresses \(\bsig^\text{v}_i\) for each Maxwell branch.

Nbranch: int = 1#

Number of Maxwell branches.

class GeneralizedMaxwell[source]#

Bases: SmallStrainBehavior

Generalized Maxwell viscoelastic model (N-branch).

Represents the stress relaxation behavior of viscoelastic materials using a series of Maxwell elements (spring + dashpot), each with its own relaxation time \(\tau_i\).

The model can be seen as a Prony series representation of stress relaxation.

Notes

The total stress is computed as:

\[\bsig = \bsig_\infty + \sum_{i=1}^N \bsig^\text{v}_i\]

where in each viscous branch evolves as:

\[\begin{split}\begin{align*} \bsig^\text{v}_i &= \CC_i:(\beps-\beps^\text{v}_i)\\ \dot\beps^\text{v}_i &= \dfrac{1}{\tau_i}(\beps-\beps^\text{v}_i) \end{align*} \end{split}\]

elasticity: AbstractLinearElastic#

Elastic model of the equilibrium (instantaneous) branch.

viscous_branches: AbstractLinearElastic#

Elastic stiffness models for the Maxwell branches.

relaxation_times: Array#

Array of relaxation times \((\tau_i)\) for the Maxwell branches.

internal: GeneralizedMaxwellState#

Internal state containing viscous strains and stresses.

constitutive_update(eps, state, dt)[source]#

Perform the constitutive update for a given small strain increment for a small-strain behavior.

This abstract method defines the interface for advancing the material state over a time increment based on the provided strain tensor. Implementations should return the updated stress tensor and internal variables, along with any auxiliary information required for consistent tangent computation or subsequent analysis.

Parameters:
  • eps (array_like) – Small strain tensor at the current integration point.

  • state (PyTree) – PyTree containing the current state variables (stress, strain and internal) of the material.

  • dt (float) – Time increment over which the update is performed.

Returns:

  • stress (array_like) – Updated Cauchy stress tensor.

  • new_state (PyTree) – Updated state variables after the constitutive update.

Notes

This method should be implemented by subclasses defining specific constitutive behaviors (elastic, plastic, viscoplastic, etc.).