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 Isotropic Hardening by a pythonDirector :
Python Director allows user to define their own Isotropic Hardening law. Five functions has to be defined in the Python Class :
- a constructor (
__init__
),
- a destructor (
__del__
) that must never be called,
- computeSvm (epl, pLaw)
- computeH (epl, pLaw)
- computePotential (epl, pLaw) 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