jaxmat.materials.generalized_standard module#

class GeneralizedStandardMaterial[source]#

Bases: SmallStrainBehavior

Generalized Standard Material (GSM) in small strain formulation.

The GSM framework provides a unified thermodynamic formulation for viscoelastic, viscoplastic, and other dissipative material behaviors. It is characterized by two potentials:

  • A free energy \(\Psi(\beps,\balpha)\) defining the elastic (reversible) response.

  • A dissipation pseudo-potential \(\Phi(\dot{\balpha})\) defining the evolution of the internal variables (irreversible processes).

The state variable evolution is obtained by minimizing the incremental potential:

\[\min_{\Delta \balpha} J(\Delta\balpha ;\beps_{n+1},\balpha_n) = \min_{\Delta \balpha} \Psi(\beps_{n+1}, \balpha_n + \Delta \balpha) + \Delta t \Phi\left(\dfrac{\Delta \balpha}{\Delta t}\right)\]

subject to the current strain \(\beps_{n+1} = \beps_n+\Delta\beps\) and time increment \(\Delta t\).

The minimization is performed numerically using a Newton line-search solver.

Important

This is an abstract behavior which must concretely implement make_internal_state as the structure of internal state variables is not known before hand.

Notes

The stress is automatically computed via

\[\bsig = \dfrac{\partial \Psi}{\partial \beps}\]

References

  • Halphen, B., & Nguyen, Q. S. (1975). Sur les matériaux standard généralisés. Journal de mécanique, 14(1), 39-63.

  • Ortiz, M., & Stainier, L. (1999). The variational formulation of viscoplastic constitutive updates. Computer methods in applied mechanics and engineering, 171(3-4), 419-444.

free_energy: Module#

Module defining the Helmholtz free energy $Psi(beps,balpha)

dissipation_potential: Module#

Module defining the dissipation pseudo-potential \(\Phi(\dot\balpha)\)

minimisation_solver = NewtonTrustRegion(   rtol=1e-06,   atol=1e-06,   norm=<function max_norm>,   descent=NewtonDescent(linear_solver=AutoLinearSolver(well_posed=False)),   search=ClassicalTrustRegion(),   verbose=frozenset() )#

Minimisation solver used to minimize the incremental potential.

abstract make_internal_state()[source]#

Create internal state variables.

incremental_potential(d_isv, args)[source]#

Compute the incremental potential for a given internal variable increment.

Parameters:
  • d_isv (PyTree) – Increment of internal state variables \(\Delta \balpha\).

  • args (tuple) –

    Tuple containing (eps, state, dt):
    • eps : total strain tensor.

    • state : current material state.

    • dt : time increment.

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