Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Plasticity with the Modified Cam-Clay model

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 FeFp\tens{F}^e\cdot\tens{F}^p plasticity):

ε=εe+εp.\tens{\varepsilon} = \tens{\varepsilon}^e + \tens{\varepsilon}^p.

The onset of plasticity is governed by the yield function ff, which depends on the stress tensor σ\tens{\sigma} and potentially on some hardening variables α\alpha. The domain of admissible stress is defined by:

f(σ,α)0,f(\tens{\sigma}, \alpha) \leq 0,

where a strict inequality indicates elastic deformations, while plasticity is triggered when the stress state is situated at the edge of the domain, when f(σ,α)=0f(\tens{\sigma}, \alpha) = 0. The plastic strain rate can be calculated as:

ε˙p=λ˙gσ,\tens{\dot{\varepsilon}}^p = \dot{\lambda}\frac{\partial g}{\partial \tens{\sigma}},

where λ\lambda is the so-called plastic multiplier and gg is the plastic flow rule. In many cases, we take g=fg=f (associated plasticity).

The Modified Cam-Clay (MCC) model

The yield function of the Modified Cam-Clay model is defined as follows:

f(σ,pc)=q2+M2p(ppc),f(\tens{\sigma},p_c) = q^2 + M^2p(p-p_c),

where p=13tr(σ)p=\frac{1}{3}\mathrm{tr}(\tens{\sigma}) is the mean stress and q=32σd:σdq = \sqrt{\frac{3}{2}\tens{\sigma}^d:\tens{\sigma}^d}. This gives the yield surface an elliptical shape in the pqp-q plane (cercle in the case M=1M=1). Note that the yield surface depends on a hardening variable pcp_c, the preconsolidation pressure. The evolution of this hardening variable with the plastic strain εp\tens{\varepsilon}^p is given by the hardening law:

pc˙=1+eλκtr(ε˙p)pc,\dot{p_c} = \frac{1+e}{\lambda-\kappa}\mathrm{tr}(\tens{\dot{\varepsilon}}^p)p_c,

where e=11ϕe=\frac{1}{1-\phi} with ϕ\phi the porosity of the material.

The original Cam-Clay model also incorporates nonlinear elasticity, in the form:

p˙=1+eκtr(ε˙e)p,\dot{p} = \frac{1+e}{\kappa}\mathrm{tr}(\tens{\dot{\varepsilon}}^e)p,

so that the parameters κ\kappa and λ\lambda would represent the virgin normal consolidation line and the normal swelling line respectively. However, this leads to an hypoelastic formulation (the bulk modulus KK depends on the mean stress pp, 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 κ\kappa is somewhat lost unless a choice such as K=1+e0κp0K=\frac{1+e_0}{\kappa}p_0 is made, which would result in a swelling line with an initial slope κ\kappa.

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 f(σ,pc)=0f(\tens{\sigma}, p_c)=0 and we impose a Δε\Delta\tens{\varepsilon} starting from this state. We want to determine the Δεel\Delta\tens{\varepsilon}^{el}, Δpc\Delta p_c and Δλ\Delta\lambda so that :

{Δεel=ΔεΔλn,f(σ+C:Δεel,pc+Δpc)=0,Δpc=1+e0λκΔλtr(n)(pc+Δpc).\left\{ \begin{aligned} &\Delta\tens{\varepsilon}^{el} = \Delta\tens{\varepsilon} - \Delta\lambda\tens{n}, \\ &f(\tens{\sigma}+\mathbb{C}:\Delta\tens{\varepsilon}^{el}, p_c +\Delta p_c) = 0, \\ &\Delta p_c = \frac{1+e_0}{\lambda-\kappa}\Delta\lambda\mathrm{tr}(\tens{n})(p_c+\Delta p_c).\\ \end{aligned} \right.

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{∂σ∕∂Δεᵗᵒ};