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 strain P and plastic-strain tensor EP are exposed as labelled components of the private Statev array.

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.

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_current_local_frame([...])

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 assembly Gauss points.

ElastoPlasticity.get_local_rotation([...])

Return a Simcoon rotation for the requested material frame.

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

ElastoPlasticity.global2local_rotation_increment(DR)

Express a finite rotation increment in the initial material basis.

ElastoPlasticity.global2local_strain(strain)

Express engineering-strain vector(s) from global to material axes.

ElastoPlasticity.global2local_stress(stress)

Express stress Voigt vector(s) from global to material axes.

ElastoPlasticity.global2local_tensor(tensor)

Change both axes of 3x3 tensor fields to the initial material basis.

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 the constitutive law for the current problem.

ElastoPlasticity.local2global_H(H[, ...])

Rotate a material stiffness to global axes using Simcoon.

ElastoPlasticity.local2global_strain(strain)

Express engineering-strain vector(s) from material to global axes.

ElastoPlasticity.local2global_stress(stress)

Express stress Voigt vector(s) from material to global axes.

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

Set a labeled initial state-variable field on an assembly.

ElastoPlasticity.set_local_frame(local_frame)

Define the material coordinate frame.

ElastoPlasticity.set_return_mapping_tolerance(...)

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.

ElastoPlasticity.yield_function_derivative(stress)

Differentiate the yield function with respect to stress.

ElastoPlasticity.is_isotropic

ElastoPlasticity.manages_material_frame

ElastoPlasticity.name

Name of the constitutive law.

ElastoPlasticity.required_corate

ElastoPlasticity.shear_modulus

Shear modulus.

ElastoPlasticity.is_initialized

Tag set to True once the law is intialized.