linearElasticMisesPlastic
Small-strain elasto-plasticity with Hookean elasticity and von Mises (J2) plasticity with isotropic hardening. The runtime type is:
linearElasticMisesPlastic
The return mapping is the radial return of Box 3.2 in Simo and Hughes (1998). The dictionary layout common to all laws is described in the material models page.
User Guide
What it computes
At each integration point, with epsilon = symm(grad(D)) from the solid model and the plastic history from the previous time step (_0):
sTrial = 2*mu*(dev(epsilon) - dev(epsilonP_0))
qTrial = sqrt(3/2)*mag(sTrial)
fTrial = qTrial - sigmaY(epsilonPEq_0)
If fTrial <= SMALL the step is elastic and the history is carried over. Otherwise the increment of equivalent plastic strain DLambda is found from the consistency condition qTrial - 3*mu*DLambda = sigmaY(epsilonPEq_0 + DLambda) and the state is updated:
n = sTrial/mag(sTrial)
epsilonP = epsilonP_0 + sqrt(3/2)*DLambda*n
epsilonPEq = epsilonPEq_0 + DLambda
s = sTrial - 2*mu*sqrt(3/2)*DLambda*n
sigma = s + K*tr(epsilon)*I
with mu = E/(2*(1 + nu)) and K = E/(3*(1 - 2*nu)). The law is small-strain only; a nonlinear geometry solid model stops with an error. For finite strains use neoHookeanElasticMisesPlastic.
Hardening input
The yield stress is a table of yield stress versus equivalent plastic strain, read by solids4foam's interpolationTable. The initial yield stress is the value at zero plastic strain. The number of rows decides the algorithm:
| Rows | Behaviour | Solution |
|---|---|---|
| 1 | Perfect plasticity | Closed form |
| 2 | Linear hardening | Closed form, DLambda = fTrial/(3*mu + Hp) |
| 3 or more | Nonlinear hardening | Local Newton iteration |
Hp is the slope between the two rows. The Newton iteration uses a forward-difference derivative and stops when the correction, relative to the largest strain magnitude among this law's points, falls below NewtonLoopTol; a warning is printed if NewtonMaxIter is reached.
Model options
| Entry | Required | Default | Description |
|---|---|---|---|
rho | yes | - | Density, [1 -3 0 0 0 0 0] |
E | with nu | - | Young's modulus, [1 -1 -2 0 0 0 0] |
nu | with E | - | Poisson's ratio, dimensionless |
mu | with K | - | Shear modulus, [1 -1 -2 0 0 0 0] |
K | with mu | - | Bulk modulus, [1 -1 -2 0 0 0 0] |
file or fileName | yes | - | Hardening table file |
outOfBounds | yes | - | clamp, warn, error or repeat |
readerType | no | openFoam | Table format; csv is also accepted |
NewtonLoopTol | no | 1e-8 | Newton relative tolerance |
NewtonMaxIter | no | 200 | Newton iteration limit |
NewtonFiniteDiffEps | no | 0.25e-6 | Newton derivative step |
As for linearElastic, the elastic constants are given as the E/nu pair or the mu/K pair, their dimensions are checked, and nu must satisfy -1 < nu < 0.5.
The table file holds a list of (equivalentPlasticStrain yieldStress) pairs. Tutorials write the file key as "file|fileName" and set outOfBounds clamp.
planeStress yes is a fatal error. To model a thin plate, solve in 3-D with a symmetryPlane back patch and a traction-free front patch.
Tangents and volumetric split
- Scalar tangent:
(4/3)*mu + Kat elastic points andtheta*(4/3)*mu + Kat yielding points, wheretheta = 1 - 2*mu*sqrt(3/2)*DLambda/mag(sTrial). The deviatoric scalar tangent drops theK. - Fourth-order tangent:
fourthOrderFiniteDifferenceonly. Asking for the analyticalfourthOrdertangent is a fatal error. - Volumetric split: yes. Plasticity is purely deviatoric, so the volumetric response is
K*tr(epsilon). The law can be used withsolvePressureEqnand with the mixed displacement-pressure formulations.
State variables
| Name | Type | Role | Description |
|---|---|---|---|
epsilonP | symmTensor | persistent | Plastic strain tensor |
epsilonPEq | scalar | persistent | Equivalent plastic strain |
sigmaY | scalar | persistent | Current yield stress |
At each write time, for cell-centred solid models, each persistent variable is written as a volField named after it (epsilonP, epsilonPEq, sigmaY) for viewing. The restart data are written alongside as <material>_<topology>_<variable>, for example aluminium_cellCentredIntegrationPointTopology_epsilonPEq, together with a <material>_<topology>_integrationPoints file. To restart a run from a later time, set restart yes; in the solid model's coefficients dictionary from the start of the run: without the old-time displacement gradient it writes, a restart of a law with history is refused.
Diagnostics
At the end of each time step the law prints the maximum increment of equivalent plastic strain and the number of yielding integration points, summed over all processors and including boundary points. The report is on by default and controlled by the linearElasticMisesPlastic debug switch.
Example
From the perforatedPlate tutorial:
planeStress no;
mechanical
(
aluminium
{
type linearElasticMisesPlastic;
rho rho [1 -3 0 0 0 0 0] 3500;
E E [1 -1 -2 0 0 0 0] 70e+9;
nu nu [0 0 0 0 0 0 0] 0.3;
"file|fileName" "$FOAM_CASE/constant/plasticStrainVsYieldStress";
outOfBounds clamp;
}
);
with constant/plasticStrainVsYieldStress holding two rows, so linear hardening:
(
( 0 243e6 )
( 1 2414e6 )
)
Migrating from the legacy law
- New optional entries:
NewtonLoopTol,NewtonMaxIterandNewtonFiniteDiffEps. The legacy Newton loop used fixed values of1e-8,100iterations and a1e-6step. - Removed:
solvePressureEquation(unused in the legacy law),tangentEps, andregionName.maxDeltaErrincontrolDictand the plastic-strain based time-step control are gone.materialToleranceis ignored. - Only
epsilonP,epsilonPEqandsigmaYare kept.DEpsilonP,DEpsilonPEq,activeYield, the face (...f) and point (p...) copies, and the internalplasticN,DLambdaandDSigmaYfields are no longer written. - The end-of-step report no longer prints the maximum
epsilonPEq, and its counts now include boundary integration points. - A fourth-order tangent is available by finite differences (
fourthOrderFiniteDifference); the legacy law built a per-face numerical tangent that neededtangentEps. - The return mapping is equivalent to the legacy one: the legacy plastic multiplier is expressed here as the equivalent plastic strain increment.
Tutorials
- perforatedPlate, whose regression tests also cover restart, parallel and reconstructed runs
References
- J.C. Simo and T.J.R. Hughes, Computational Inelasticity, Springer, 1998.
- P. Cardiff, Z. Tuković, P. De Jaeger, M. Clancy and A. Ivanković, A Lagrangian cell-centred finite volume method for metal forming simulation, Int. J. Numer. Meth. Eng., 2017, 10.1002/nme.5345.