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. The finite-element lifecycle is provided by
fedoo.core.mechanical3d.MechanicalUMAT; the scalar accumulated plastic strainPand plastic-strain tensorEPare exposed as labelled components of the privateStatevarray.In a geometrically nonlinear updated-Lagrangian analysis, this law is a corotational extension of the same additive small-strain model. Tensorial history is transported with the objective rotation increment before each return mapping. This makes the response objective under finite rotations, but it is not a multiplicative finite-plasticity model (there is no decomposition
F = Fe @ Fp).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.
Convert a full 3D tangent matrix H in an equivalent behavior in 2D with the plane stress assumption.
Return a dict with all the known ConstitutiveLaw (with a name).
Return the trial material frame in global coordinates.
ElastoPlasticity.get_elastic_matrix([dimension])Return the isotropic elastic matrix in engineering Voigt form.
ElastoPlasticity.get_local_frame([assembly])Return material frames, resolved at
assemblyGauss points.Return a Simcoon rotation for the requested material frame.
Return plastic strain from the most recent integration.
Return plasticity from the most recent integration.
Return stress from the most recent integration.
Return the current tangent, or the elastic tangent initially.
ElastoPlasticity.get_temp_gp(assembly, pb)Return the current temperature field at Gauss points, if any.
ElastoPlasticity.global2local_H(H[, ...])Rotate a global stiffness to material axes using Simcoon.
Express a finite rotation increment in the initial material basis.
Express engineering-strain vector(s) from global to material axes.
Express stress Voigt vector(s) from global to material axes.
Change both axes of 3x3 tensor fields to the initial material basis.
ElastoPlasticity.hardening_function(plasticity)Evaluate the isotropic hardening stress.
Evaluate the derivative of the isotropic hardening stress.
ElastoPlasticity.initialize(assembly, pb)Initialize the constitutive law for the current problem.
ElastoPlasticity.local2global_H(H[, ...])Rotate a material stiffness to global axes using Simcoon.
Express engineering-strain vector(s) from material to global axes.
Express stress Voigt vector(s) from material to global axes.
Reset cached results; assembly history is managed by Fedoo.
ElastoPlasticity.set_density(density)Set the mass density associated with this mechanical material.
Define the isotropic hardening function.
Set a labeled initial state-variable field on an assembly.
ElastoPlasticity.set_local_frame(local_frame)Define the material coordinate frame.
Set the absolute tolerance used by the local return mapping.
ElastoPlasticity.set_start(assembly, pb)Begin a new time iteration.
ElastoPlasticity.to_start(assembly, pb)Restart the current time iteration.
ElastoPlasticity.update(assembly, pb)Update the constitutive law for the current problem state.
ElastoPlasticity.yield_function(stress, ...)Evaluate the von Mises yield function.
Differentiate the yield function with respect to stress.
Name of the constitutive law.
Shear modulus.
Tag set to True once the law is intialized.