jaxmat.materials.hyperelasticity module#

class HyperelasticPotential[source]#

Bases: Module

HyperelasticPotential()

PK1(F)[source]#
PK2(F)[source]#
Cauchy(F)[source]#
class Hyperelasticity[source]#

Bases: FiniteStrainBehavior

Hyperelasticity(potential: jaxmat.materials.hyperelasticity.HyperelasticPotential)

potential: HyperelasticPotential#
internal: eqx.AbstractVar[AbstractState] = None#

Internal variables state.

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

Perform the constitutive update for a given deformation gradient increment for a finite-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:
  • F (array_like) – Deformation gradient 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:

  • PK1 (array_like) – Updated first Piola-Kirchhoff 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 VolumetricPart[source]#

Bases: Module

VolumetricPart(beta: float = 2.0)

beta: float = 2.0#
class SquaredVolumetric[source]#

Bases: Module

SquaredVolumetric()

class CompressibleNeoHookean[source]#

Bases: HyperelasticPotential

CompressibleNeoHookean(mu: float, kappa: float, volumetric: equinox._module.Module = VolumetricPart())

mu: float#
kappa: float#
volumetric(J): Module = VolumetricPart()#
class CompressibleMooneyRivlin[source]#

Bases: HyperelasticPotential

CompressibleMooneyRivlin(c1: float, c2: float, kappa: float, volumetric: equinox._module.Module = VolumetricPart())

c1: float#
c2: float#
kappa: float#
volumetric(J): Module = VolumetricPart()#
class CompressibleGhentMooneyRivlin[source]#

Bases: HyperelasticPotential

CompressibleGhentMooneyRivlin(c1: float, c2: float, Jm: float, kappa: float, volumetric: equinox._module.Module = VolumetricPart())

c1: float#
c2: float#
Jm: float#
kappa: float#
volumetric(J): Module = VolumetricPart()#
class CompressibleOgden[source]#

Bases: HyperelasticPotential

CompressibleOgden(mu: jax.Array, alpha: jax.Array, kappa: float, volumetric: equinox._module.Module = VolumetricPart())

mu: Array#
alpha: Array#
kappa: float#
volumetric(J): Module = VolumetricPart()#
W_lamb(lambCb)[source]#