# Metafor

ULiege - Aerospace & Mechanical Engineering

### Site Tools

doc:user:elements:volumes:isohard

This is an old revision of the document!

# 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