jaxmat.materials.elastoplasticity module#

class InternalState[source]#

Bases: AbstractState

Internal state for hardening plasticity (vonMisesIsotropicHardening, GeneralIsotropicHardening).

p: Array = 0.0#

Cumulated plastic strain

epsp: SymmetricTensor2#

Plastic strain tensor

class vonMisesIsotropicHardening[source]#

Bases: SmallStrainBehavior

Small-strain rate-independent elastoplastic constitutive model with isotropic hardening and J2 (von Mises) plastic surface. The model assumes isotropic elasticity.

Return-mapping only requires solving a scalar non-linear equation in terms of \(p\).

elasticity: LinearElasticIsotropic#

Linear isotropic elasticity defined by Young modulus and Poisson ratio.

yield_stress: Module#

Isotropic hardening law controlling the evolution of the yield surface size.

plastic_surface: AbstractPlasticSurface = vonMises()#

von Mises plastic surface.

internal: AbstractState = InternalState(p=f64[], epsp=SymmetricTensor2(dim=3, rank=2, _tensor=f64[3,3]))#

Internal variables state.

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 GeneralIsotropicHardening[source]#

Bases: SmallStrainBehavior

Small-strain rate-independent elastoplastic constitutive model with isotropic hardening and generic plastic surface. The model does not assume isotropic elasticity.

Return-mapping requires solving a non-linear system in terms of \(p\) and \(\bepsp\).

elasticity: AbstractLinearElastic#

Linear elastic model.

yield_stress: Module#

Isotropic hardening law controlling the evolution of the yield surface size.

plastic_surface: AbstractPlasticSurface#

Generic plastic surface.

internal: AbstractVar[AbstractState] = InternalState(p=f64[], epsp=SymmetricTensor2(dim=3, rank=2, _tensor=f64[3,3]))#

Internal variables state.

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 GeneralHardeningInternalState[source]#

Bases: AbstractState

Internal state for the GeneralHardening model.

p: float = 0.0#

Cumulated plastic strain

epsp: SymmetricTensor2#

Plastic strain tensor

alpha: SymmetricTensor2#

Kinematic hardening variables \(\balpha_i\).

nvar: int = 1#

Number of kinematic hardening variables.

class GeneralHardening[source]#

Bases: SmallStrainBehavior

Small-strain rate-independent elastoplastic constitutive model with general combined isotropic and kinematic hardening and generic plastic surface. The model accounts for a single plastic surface but several kinematic hardening variables.

Return-mapping requires solving a non-linear system in terms of \(p\), \(\bepsp\) and the \(\balpha_i\).

elasticity: AbstractLinearElastic#

Linear elastic model.

yield_stress: float#

Initial yield stress.

plastic_surface: AbstractPlasticSurface#

Generic plastic surface.

combined_hardening: Module#

Combined hardening module representing a hardening potential \(\psi_\textrm{h}(\balpha,p)\). Should provide two methods:

  • combined_hardening.dalpha(alpha, p) returning \(\dfrac{\partial \psi_\textrm{h}}{\partial \balpha}(\balpha,p)\)

  • combined_hardening.dp(alpha, p) returning \(\dfrac{\partial \psi_\textrm{h}}{\partial p}(\balpha,p)\)

nvar: int = 1#
internal: AbstractState#

Internal variables state.

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.).