fedoo.constitutivelaw.ElastoPlasticity

class ElastoPlasticity(young_modulus, poisson_ratio, yield_stress, name='')

Elasto-plastic constitutive law with isotropic hardening.

The stress integration uses a vectorized radial-return algorithm for the von Mises yield criterion. In a finite-strain updated-Lagrangian analysis, the law operates on the corotated strain increment prepared by fedoo.weakform.StressEquilibrium.

The returned elastoplastic tangent is the continuum tangent evaluated at the updated stress. It is not the algorithmically consistent tangent of the discrete radial-return integration. Consequently, global Newton convergence is not guaranteed to be quadratic for finite plastic increments or non-proportional loading paths.

Warning

This Python implementation is intended only for pedagogical use and as a readable reference implementation. For computational analyses, prefer fedoo.constitutivelaw.Simcoon, which provides optimized constitutive updates and algorithmically consistent tangent options.

Parameters:
  • young_modulus (float) – Young modulus.

  • poisson_ratio (float) – Poisson ratio.

  • yield_stress (float) – Initial yield stress.

  • name (str, optional) – Name of the constitutive law.

__init__(young_modulus, poisson_ratio, yield_stress, name='')

Methods

ElastoPlasticity.compute_stress(total_strain)

Integrate a material-point state without an assembly.

ElastoPlasticity.get_H_plane_stress(H)

Convert a full 3D tangent matrix H in an equivalent behavior in 2D with the plane stress assumption.

ElastoPlasticity.get_all()

Return a dict with all the known ConstitutiveLaw (with a name).

ElastoPlasticity.get_elastic_matrix([dimension])

Return the isotropic elastic matrix in engineering Voigt form.

ElastoPlasticity.get_plastic_strain()

Return plastic strain from the most recent integration.

ElastoPlasticity.get_plasticity()

Return plasticity from the most recent integration.

ElastoPlasticity.get_stress()

Return stress from the most recent integration.

ElastoPlasticity.get_tangent_matrix([...])

Return the current tangent, or the elastic tangent initially.

ElastoPlasticity.hardening_function(plasticity)

Evaluate the isotropic hardening stress.

ElastoPlasticity.hardening_function_derivative(...)

Evaluate the derivative of the isotropic hardening stress.

ElastoPlasticity.initialize(assembly, pb)

Initialize finite-element state variables.

ElastoPlasticity.local2global_H(H)

Rotate stiffness matrix from local material frame to global frame.

ElastoPlasticity.reset()

Reset cached results; assembly history is managed by Fedoo.

ElastoPlasticity.set_density(density)

Set the mass density associated with this mechanical material.

ElastoPlasticity.set_hardening_function(...)

Define the isotropic hardening function.

ElastoPlasticity.set_return_mapping_tolerance(...)

Set the absolute tolerance used by the local return mapping.

ElastoPlasticity.set_start(assembly, pb)

Commit the converged state and prepare the elastic predictor.

ElastoPlasticity.to_start(assembly, pb)

Restart the current time iteration.

ElastoPlasticity.update(assembly, pb)

Update stress, plastic state, and tangent for the current iterate.

ElastoPlasticity.yield_function(stress, ...)

Evaluate the von Mises yield function.

ElastoPlasticity.yield_function_derivative(stress)

Differentiate the yield function with respect to stress.

ElastoPlasticity.name

Name of the constitutive law.

ElastoPlasticity.shear_modulus

Shear modulus.

ElastoPlasticity.is_initialized

Tag set to True once the law is intialized.