In this section, we will introduce the implementation of plasticity which requires solving an implicit set of equations.
Theory¶
Some recalls on plasticity¶
In the theory of flow plasticity, it is assumed that strain can be split into an elastic and a plastic contributions, for instance additively (or sometimes multiplicatively, in particular at large strains, see plasticity):
The onset of plasticity is governed by the yield function , which depends on the stress tensor and potentially on some hardening variables . The domain of admissible stress is defined by:
where a strict inequality indicates elastic deformations, while plasticity is triggered when the stress state is situated at the edge of the domain, when . The plastic strain rate can be calculated as:
where is the so-called plastic multiplier and is the plastic flow rule. In many cases, we take (associated plasticity).
The Modified Cam-Clay (MCC) model¶
The yield function of the Modified Cam-Clay model is defined as follows:
where is the mean stress and . This gives the yield surface an elliptical shape in the plane (cercle in the case ). Note that the yield surface depends on a hardening variable , the preconsolidation pressure. The evolution of this hardening variable with the plastic strain is given by the hardening law:
where with the porosity of the material.
The original Cam-Clay model also incorporates nonlinear elasticity, in the form:
so that the parameters and would represent the virgin normal consolidation line and the normal swelling line respectively. However, this leads to an hypoelastic formulation (the bulk modulus depends on the mean stress , making the elasticity path-dependent), which is not thermodynamically consistent. A workaround can consist in considering a constant bulk modulus, in which case the meaning of is somewhat lost unless a choice such as is made, which would result in a swelling line with an initial slope .
Implicit integration¶
When in plasticity, the abovementionned equations must be verified. This leads to a system of nonlinear equations which cannot be solved directly. A classical method for this kind of system is the Newton-Raphson method.
Let us discretize our system. Assume we have and we impose a starting from this state. We want to determine the , and so that :
We have a nonlinear equation system with 3 equations for 3 unknowns, which is adequate.
Implementation¶
@DSL ImplicitGenericBehaviour;
@Author Maxime PIERRE;
@Behaviour CamClay;
@Algorithm NewtonRaphson_NumericalJacobian ;
@Theta 1. ;
@Epsilon 10e-14 ;
@PerturbationValueForNumericalJacobianComputation 1.e-9;
@Gradient StrainStensor εᵗᵒ;
εᵗᵒ.setGlossaryName("Strain");
@Flux StressStensor σ;
σ.setGlossaryName("Stress");
@MaterialProperty stress E;
E.setGlossaryName("YoungModulus");
@MaterialProperty real ν;
ν.setGlossaryName("PoissonRatio");
@MaterialProperty real b;
@MaterialProperty real k;
k.setEntryName("ACC_k");
@MaterialProperty real M;
M.setEntryName("ACC_M");
@MaterialProperty real h_ε ;
h_ε.setEntryName("VolumetricHardening");
@StateVariable StrainStensor ε_el;
ε_el.setGlossaryName("ElasticStrain");
@StateVariable real λ_p;
λ_p.setGlossaryName("EquivalentPlasticStrain");
@AuxiliaryStateVariable stress pc;
pc.setEntryName("PreconsolidationPressure");
@IntegrationVariable strain rpc ;
@AuxiliaryStateVariable stress p;
@AuxiliaryStateVariable stress q;
@LocalVariable stress λ;
@LocalVariable stress μ;
@LocalVariable real F_el;
@LocalVariable Stensor n;
@TangentOperatorBlocks{∂σ∕∂Δεᵗᵒ};