This is an old revision of the document!
Table of Contents
Isotropic hardening
The IsotropicHardening class manages all isotropic hardening laws in Metafor, which are described below.
LinearIsotropicHardening
Description
Linear isotropic hardening
$$ \sigma_{vm} = \sigma^{el} + h\, \bar{\varepsilon}^{vp} $$
Parameters
| Name | Metafor Code | Dependency |
|---|---|---|
| Initial yield stress $\sigma^{el}$ | IH_SIGEL | TM/TO |
| Plastic Modulus $h $ | IH_H | TM/TO |
NB: the plastic modulus is defined as $h = \frac{E E_T}{E - E_T} $, where $E$ is the Young's modulus and $E_T$ the tangent modulus.
SaturatedIsotropicHardening
Description
Saturated isotropic hardening
$$ \sigma_{vm} = \sigma^{el} + Q\left(1-\exp\left(-\xi \bar{\varepsilon}^{vp}\right)\right) $$
Parameters
| Name | Metafor Code | Dependency |
|---|---|---|
| Initial yield stress $\sigma^{el}$ | IH_SIGEL | TM/TO |
| $Q $ | IH_Q | TM/TO |
| $\xi$ | IH_KSI | TM/TO |
DoubleSaturatedIsotropicHardening
Description
Double saturated isotropic hardening
$$ \sigma_{vm} = \sigma^{el} + Q_1\left(1-\exp\left(-\xi_1 \bar{\varepsilon}^{vp}\right)\right) + Q_2\left(1-\exp\left(-\xi_2 \bar{\varepsilon}^{vp}\right)\right) $$
Parameters
| Name | Metafor Code | Dependency |
|---|---|---|
| Initial yield stress $\sigma^{el}$ | IH_SIGEL | TM/TO |
| $Q_1$ | IH_Q1 | TM/TO |
| $\xi_1$ | IH_KSI1 | TM/TO |
| $Q_2$ | IH_Q2 | TM/TO |
| $\xi_2$ | IH_KSI2 | TM/TO |
RambergOsgoodIsotropicHardening
Description
Ramberg-Osgood isotropic hardening
$$ \sigma_{vm} = \sigma^{el} \left(1+A\, \bar{\varepsilon}^{vp}\right)^{\frac{1}{n}} $$
Parameters
| Name | Metafor Code | Dependency |
|---|---|---|
| Initial yield stress $\sigma^{el}$ | IH_SIGEL | TM/TO |
| $A $ | IH_A | TM/TO |
| $n $ | IH_N | TM/TO |
SwiftIsotropicHardening
Description
Swift isotropic hardening (a more common formulation of Ramberg - Osgood)
$$ \sigma_{vm} = \sigma^{el} +B \left(\bar{\varepsilon}^{vp}\right)^{n} $$
Parameters
| Name | Metafor Code | Dependency |
|---|---|---|
| Initial yield stress $\sigma^{el}$ | IH_SIGEL | TM/TO |
| $B $ | IH_B | TM/TO |
| $n $ | IH_N | TM/TO |
KrupkowskyIsotropicHardening
Description
Krupkowski isotropic hardening
$$ \sigma_{vm} = K \left(\bar{\varepsilon}^{vp}_{0} + \bar{\varepsilon}^{vp}\right)^{n} $$
Parameters
| Name | Metafor Code | Dependency |
|---|---|---|
| Initial equivalent plastic strain $\bar{\varepsilon}^{vp}_{0}$ | IH_EVPL0 | TM/TO |
| strength coefficient $K$ | IH_K | TM/TO |
| strain hardening exponent $n$ | IH_N | TM/TO |
Nl8pIsotropicHardening
Description
Nonlinear isotropic hardening with 8 parameters. First one implemented, can be used to do almost everything.
$$ \sigma_{vm} = \left(P_2-P_1\right) \left(1-\exp\left(-P_3\bar{\varepsilon}^{vp}\right)\right) + P_4\left(\bar{\varepsilon}^{vp}\right)^{P_5} + $$ $$ + P_1\left(1+P_6\bar{\varepsilon}^{vp}\right)^{P_7} + P_8\bar{\varepsilon}^{vp} $$
Parameters
| Name | Metafor Code | Dependency |
|---|---|---|
| $P_1$ | IH_P1 | TM/TO |
| $P_2$ | IH_P2 | TM/TO |
| $P_3$ | IH_P3 | TM/TO |
| $P_4$ | IH_P4 | TM/TO |
| $P_5$ | IH_P5 | TM/TO |
| $P_6$ | IH_P6 | TM/TO |
| $P_7$ | IH_P7 | TM/TO |
| $P_8$ | IH_P8 | TM/TO |
FunctIsotropicHardening
Description
Piecewise linear isotropic hardening. A function is associated to the yield stress.
$$ \sigma_{vm} = \sigma^{el} \, * \, f\left(\bar{\varepsilon}^{vp}\right) $$
Parameters
| Name | Metafor Code | Dependency |
|---|---|---|
| Initial yield stress $\sigma^{el}$ | IH_SIGEL | IF_EPL |
An Functions y=f(t) must be associated to IH_SIGEL (depending on Field(IF_EPL)).
PowerIsotropicHardening
Description
$$ \sigma_{vm}= P_1 \left[ P_2 \sigma_{vm} + P_3 \overline{\varepsilon}^{vp} \right] ^{P_4} $$
This law is integrated with an iterative method.
Parameters
| Name | Metafor Code | Dependency |
|---|---|---|
| $P_1$ | IH_P1 | TM/TO |
| $P_2$ | IH_P2 | TM/TO |
| $P_3$ | IH_P3 | TM/TO |
| $P_4$ | IH_P4 | TM/TO |
AutesserreIsotropicHardening
Description
“Smatch” isotropic hardening.
$$ \sigma_{vm}= \left( P_1 + P_2 \overline{\varepsilon}^{vp} \right) \left( 1 - P_3 \exp \left( -P_4 \overline{\varepsilon}^{vp} \right) \right) + P_5 $$
Parameters
| Name | Metafor Code | Dependency |
|---|---|---|
| $P_1$ | IH_P1 | TM/TO |
| $P_2$ | IH_P2 | TM/TO |
| $P_3$ | IH_P3 | TM/TO |
| $P_4$ | IH_P4 | TM/TO |
| $P_5$ | IH_P5 | TM/TO |
GoijaertsIsotropicHardening
Description
“Goijaerts” isotropic hardening
$$ \sigma_{vm}= \sigma_{el} + M_1 \left( 1-\exp(-\frac{\overline{\varepsilon}^{vp}}{M_2})\right) + M_3 \sqrt{\overline{\varepsilon}^{vp}} + M_4 \overline{\varepsilon}^{vp} $$
Parameters
| Name | Metafor Code | Dependency |
|---|---|---|
| $M_1$ | IH_M1 | TM/TO |
| $M_2$ | IH_M2 | TM/TO |
| $M_3$ | IH_M3 | TM/TO |
| $M_4$ | IH_M4 | TM/TO |
KocksMeckingIsotropicHardening
Description
“Kocks-Mecking” isotropic hardening
$$ \sigma_{y} = \sigma_{y}^{0} + \frac{\Theta_{0}}{\beta} [ 1-exp(-\beta \bar{\varepsilon}^{vp}) ] \;\;\; si \;\;\; \bar{\varepsilon}^{vp} < \bar{\varepsilon}^{vp}_{tr} $$
$$ \sigma_{y} = \sigma_{y}^{tr} + \Theta_{IV} \left( \bar{\varepsilon}^{vp} - \bar{\varepsilon}^{vp}_{tr}\right) \;\;\; si \;\;\; \bar{\varepsilon}^{vp} >\bar{\varepsilon}^{vp}_{tr} $$
where the transition yield stress between stages 3 and 4 is defined as
$$ \sigma_{y}^{tr} = \sigma_{y}^{0} + \frac{\Theta_{0}-\Theta_{IV}}{\beta} $$
and the corresponding yield strain as
$$ \bar{\varepsilon}^{vp}_{tr} = \frac{1}{\beta} \ln \left(\frac{\Theta_{0}}{\Theta_{IV}}\right) $$
Parameters
| Name | Metafor Code | Dependency |
|---|---|---|
| $\sigma_0$ | IH_SIGEL | TM/TO |
| $\beta$ | KM_BETA | TM/TO |
| $\Theta_{0}$ | KM_THETA0 | TM/TO |
| $\Theta_{IV}$ | KM_THETA4 | TM/TO |
Python
User defined Yield Stress by a pythonDirector : Python Director allows user to define their own Yield Stress law. Five functions has to be defined in the Python Class : a constructor (init), a destructor (del) that must never be called, and the computation functions : computeSvm, computeH, computePotential (for hyperElastics models). See the example below of a Linear Isotropic Hardening :
class MyIsoH(PythonIsotropicHardening):
def __init__(self, _no, _svm0, _h):
print("MyIsoH : __init__")
PythonIsotropicHardening.__init__(self,_no)
self.svm0 = _svm0
self.h = _h
print("no = ", _no)
print("self.svm0 = ", self.svm0)
print("self.h = ", self.h)
print("MyIsoH : __init__ finished")
print("computeSvm(0.0) = " , self.computeSvm(0.0, None))
def __del__(self):
print("MyIsoH : __del__")
print("callToDestructor of MyIsoH not allowed. Add MyIsoH.__disown__()")
input('')
exit(1)
def computeSvm(self, epl, pLaw) :
#print "MyIsoH compute SVM"
return self.svm0+epl*self.h
def computeH(self, epl, pLaw) :
#print "MyIsoH compute H"
return self.h
def computePotential(self, epl, pLaw) :
#print "MyIsoH compute Potential"
return (self.svm0+self.h*epl*0.5)*epl
