Table of Contents

Yield Stress

The class YieldStress manages the yield stress used in the plastic criterion, whether plastic (isotropic hardening), visco-plastic (Perzyna as additive, Cowper-Symonds as multiplicative or ZerilliArmstrong, JohnsonCook, … as flow stress models)

$$ \sigma_{yield} = \sigma_{yield} (\bar{\varepsilon}^{vp}, \dot{\bar{\varepsilon}}^{vp}, grainSize, ...) $$

The laws implemented in Metafor are described below

IsotropicHardening

In order to simplify most of the test cases, the IsotropicHardening classes (Isotropic hardening) derive from the YieldStress class.

$$ \sigma_{yield} = \sigma_{isoHard}( \bar{\varepsilon}^{vp}) $$ Consequently, isotropic hardening is directly referred in the material as a YieldStress.

GsIsoHYieldStress

Yield Stress defined by an isotropic hardening:

$$ \sigma_{yield} = \sigma_{isoHard}( \bar{\varepsilon}^{vp}) + \sigma_{grainSize}( \bar{\varepsilon}^{vp}, \dot{\bar{\varepsilon}}^{vp}, grainSize ) $$

Parameters

Name Metafor Code Dependency
Number of the isotropic hardening law IH_NUM
Number of the grain size evolution law GS_NUM

PerzynaYieldStress

Yield Stress defined by an isotropic hardening and a visco-plastic Perzyna yield stress:

$$ \sigma_{yield} = \sigma_{isoHard}( \bar{\varepsilon}^{vp}) + K (\dot{\bar{\varepsilon}}^{vp})^M \left(\bar{\varepsilon}^{vp}\right)^N $$

Parameters

Name Metafor Code Dependency
Number of the isotropic hardening law IH_NUM
$K $ PERZYNA_K TM/TO
$M $ PERZYNA_M TM/TO
$N $ PERZYNA_N TM/TO

GsPerzynaYieldStress

Yield Stress defined by an isotropic hardening, a visco-plastic Perzyna yield stress and a “grain size” stress:

$$ \sigma_{yield} = \sigma_{isoHard}( \bar{\varepsilon}^{vp}) + K (\dot{\bar{\varepsilon}}^{vp})^M \left(\bar{\varepsilon}^{vp}\right)^N + \sigma_{grainSize}( \bar{\varepsilon}^{vp}, \dot{\bar{\varepsilon}}^{vp}, grainSize ) $$

Parameters

Name Metafor Code Dependency
Number of the isotropic hardening law IH_NUM
Number of the grain size evolution law GS_NUM
$K $ PERZYNA_K TM/TO
$M $ PERZYNA_M TM/TO
$N $ PERZYNA_N TM/TO

JohnsonCookYieldStress

Johnson-Cook visco-plastic law:

\begin{multline} \sigma_{yield}= \left( A+B \left( \bar{\varepsilon}^{vp} \right)^n \right) \left(1+C\ln\left(\dfrac{\dot{\bar{\varepsilon}}^{vp}}{\dot{\varepsilon}_0}\right)+C_2\left(\ln\left(\dfrac{\dot{\bar{\varepsilon}}^{vp}}{\dot{\varepsilon}_0}\right)\right)^2\right) \\ \left( 1- \left( \dfrac{T-T_{room}}{T_{melt}-T_{room}} \right)^m \right) \end{multline}

Parameters

Name Metafor Code Dependency
$A $ JC_A TM/TO
$B $ JC_B TM/TO
$n $ JC_N TM/TO
$m $ JC_M TM/TO
Room temperature $T_{room}$ JC_TROOM TM/TO
Melting temperature $T_{melt}$ JC_TMELT TM/TO
$C $ JC_C TM/TO
$C_2 $ JC_C2 TM/TO
$\dot{\varepsilon}_0$ JC_EPSP0 TM/TO

JohnsonCookMecYieldStress

Isotherm version of the Johnson-Cook visco-plastic law :

$$ \sigma_{yield}= \left( A+B \left( \bar{\varepsilon}^{vp} \right)^n \right) \left(1+C\ln\left(\dfrac{\dot{\bar{\varepsilon}}^{vp}}{\dot{\varepsilon}_0}\right)+C_2\left(\ln\left(\dfrac{\dot{\bar{\varepsilon}}^{vp}}{\dot{\varepsilon}_0}\right)\right)^2\right) $$

Parameters

Name Metafor Code Dependency
$A $ JC_A TM/TO
$B $ JC_B TM/TO
$n $ JC_N TM/TO
$C $ JC_C TM/TO
$C_2 $ JC_C2 TM/TO
${\dot\varepsilon}_{0}$ JC_EPSP0 TM/TO

PowJohnsonCookYieldStress

Power version of the Johnson-Cook visco-plastic law (PP implementation):

$$ \sigma_{yield}= \left( A+B \left( \bar{\varepsilon}^{vp} \right)^n \right) \left(1+\dfrac{\dot{\bar{\varepsilon}}^{vp}}{\dot{\varepsilon}_0}\right)^C \left( 1- \left( \dfrac{T-T_{room}}{T_{melt}-T_{room}} \right)^m \right) $$

Parameters

Name Metafor Code Dependency
$A $ JC_A TM/TO
$B $ JC_B TM/TO
$n $ JC_N TM/TO
$m $ JC_M TM/TO
Room temperature $T_{room}$ JC_TROOM TM/TO
Melting temperature $T_{melt}$ JC_TMELT TM/TO
$C $ JC_C TM/TO
$\dot{\varepsilon}_0$ JC_EPSP0 TM/TO

ZerilliArmstrongYieldStress

Zerilli-Armstong visco-plastic law:

$$ \sigma_{yield} = \sigma_0 + C_5 \left( \bar{\varepsilon}^{vp} \right) ^{n_1} + C_2 \left( \bar{\varepsilon}^{vp} \right)^{n_2} \exp \left( -C_3 T + C_4 T \ln \dot{\bar{\varepsilon}}^{vp} \right) $$

For FCC metals, $C_5=0$. For BCC metals, $n_2=0$.

:!: Careful: this law is thermomechanical, and the temperature is the absolute one. To have proper results, finite elements must be thermomechanical, and so must be the integration scheme.

Parameters

Name Metafor Code Dependency
$\sigma_0$ ZA_SIGMA0 TM/TO
$C_5$ ZA_C5 TM/TO
$n_1$ ZA_N1 TM/TO
$C_2$ ZA_C2 TM/TO
$n_2$ ZA_N2 TM/TO
$C_3$ ZA_C3 TM/TO
$C_4$ ZA_C4 TM/TO

CowperSymondsYieldStress

Cowper-Symonds visco-plastic law.

$$ \sigma_{yield}= \sigma_0 \left( 1 + \left(\dfrac{\dot{\overline{\varepsilon}}^{vp}}{D}\right)^{\frac{1}{p}} \right) $$

where $\sigma_0$ is the static yield stress, whose evolution is often given by a piecewise linear function.

Parameters

Name Metafor Code Dependency
Number of the hardening law IH_NUM
$D $ CS_D TM/TO
$p $ CS_P TM/TO

ViscoKocksMeckingYieldStress

Description

Visco-plastic extension of the “Kocks-Mecking” isotropic hardening law.

$$ \sigma_{y} = \sigma_{y}^{0} + \sigma_{v} [1-exp(-\frac{\Theta_{0}}{\sigma_{v}} \bar{\varepsilon}^{vp}) ] \;\;\; si \;\;\; \sigma_{y} \leq \sigma_{y}^{tr} $$

$$ \sigma_{y} = \sigma_{y}^{tr} + \Theta_{IV} \left( \bar{\varepsilon}^{vp} - \bar{\varepsilon}^{vp}_{tr}\right) \;\;\; si \;\;\; \sigma_{y} > \sigma_{y}^{tr} $$

where $\sigma_{y}^{tr} $ is a transition yield stress, computed to guarantee continuity between both phases:

$$ \sigma_{y}^{tr} = \sigma_{y}^{0} + \sigma_{v}\frac{(\Theta_{0}-\Theta_{IV})}{\Theta_{0}} $$

and where $\bar{\varepsilon}^{vp}_{tr}$ is the corresponding plastic strain:

$$ \bar{\varepsilon}^{vp}_{tr} = \frac{\sigma_{v}}{\Theta_{0}} \ln \left(\frac{\Theta_{0}}{\Theta_{IV}}\right) $$

The viscous component of the yield stress is hidden in the calculation of the saturation stress:

$$ \sigma_{v} = \sigma_{v0} \left ( \frac{\dot{\bar{\varepsilon}}^{vp}}{\dot{\bar{\varepsilon}}^{vp}_{0}} \right ) ^{\left (\frac{kT}{A} \right )} $$

$k$ : Boltzman's constant = $1.381e^{-23} \mbox{J}/\mbox{K}$

$T$ : Temperature K (CAREFUL in Kelvin : requires the definition of the temperature in the material)

$A$ : Activation energy (material constant)

${\dot{\bar{\varepsilon}}^{vp}_{0}}$ : reference plastic strain rate (= $1.e7$)

Parameters

Name Metafor Code Dependency
$\sigma_0$ IH_SIGMA0 TM/TO
$\Theta_{0}$ KM_THETA0 TM/TO
$\Theta_{IV}$ KM_THETA4 TM/TO
$\sigma_{v0}$ KM_SIGV0 -
${\dot{\bar{\varepsilon}}^{vp}_{0}}$ KM_DEVPL0 -
$k$ : Boltzman's constant KM_BOLTZMANN -
$A$ KM_A -

ViscoKocksMecking2YieldStress

Description

Second visco-plastic extension of the “Kocks-Mecking” isotropic hardening law, to match the Ta6V better.

No fourth step

The basic equation is still: $$ \sigma_{y} = \sigma_{y}^{0} + \sigma_{v} \left [1-exp \left (-\frac{\Theta_{0}}{\sigma_{v}} \bar{\varepsilon}^{vp}\right ) \right ] $$

Both plastic strain rate and temperature dependency are hidden in the calculation of the Voce stress $\sigma_{v}$. If this Voce stress is plotted as a function of the $g$ parameter, defined as:

$$ g = \frac{kT}{\mu b^3} \ln \left ( \frac{\dot{\bar{\varepsilon}}^{vp}_{0}}{\dot{\bar{\varepsilon}}^{vp}} \right ) $$

where

$b$ : is the norm of the Burgers vector
$k$ : is the Boltzmann's constant
(for Ta6V, $ \frac{k}{b^3} ~ 1.135 $, in “$\mbox{Mpa}$”)
$T$ : Temperature K (CAREFUL in Kelvin : requires the definition of the temperature in the material)
$\mu$ : Elastic shear modulus of the material (requires a new definition of Young's modulus and Poisson ratio in the KM2 law!!!)
$\dot{\bar{\varepsilon}}^{vp}_{0}$: reference plastic strain rate (= $1.e7$)

the following figure is obtained:

KocksMecking usually predicts a linear evolution (KM data). However, the Ta6V trial data are the colored dots. The evolution is more in broken lines, defined as follow:

$G12$ and $G23$ are defined as the transition values between the three areas:

$$ \frac{\sigma_{v}}{\mu} = A1 \; g + B1 \;\;\;si\;\;\; g < G12 \\ \frac{\sigma_{v}}{\mu} = A2 \; g + B2 \;\;\;si\;\;\; G12 < g < G23 \\ \frac{\sigma_{v}}{\mu} = A3 \; g + B3 \;\;\;si\;\;\; G23 < g $$

Finally, the apparition of plasticity was observed to depend on strain rate and temperature (here, the temperature dependency is explicitly defined, but it could be done implicitly):

$$\sigma_0 = A + B T + (C + D T) \ln \left (\dot{\bar{\varepsilon}}^{vp}\right ) $$

Parameters

Name Metafor Code Dependency
$ A $ IH_SIGEL_A -
$ B $ IH_SIGEL_B -
$ C $ IH_SIGEL_C -
$ D $ IH_SIGEL_D -
$ A1 $ KM2_SIGVOCE_A1 -
$ B1 $ KM2_SIGVOCE_B1 -
$ G12 $ KM2_SIGVOCE_G12 -
$ A2 $ KM2_SIGVOCE_A2 -
$ B2 $ KM2_SIGVOCE_B2 -
$ G23 $ KM2_SIGVOCE_G23 -
$ A3 $ KM2_SIGVOCE_A3 -
$ B3 $ KM2_SIGVOCE_B3 -
$\frac{k}{b^3}$ KM2_BOLTZMANN_BURGER3 -
Young's Modulus KM2_ELASTIC_MODULUS -
Poisson ratio KM2_POISSON_RATIO -
$\Theta_{0}$ KM_THETA0 TM/TO
${\dot{\bar{\varepsilon}}^{vp}_{0}}$ KM_DEVPL0 -

SellarsTeggartYieldStress

Yield Stress used for hot rolling defined by :

$$ S0 = \sqrt{3} \; KK (\sqrt{3} \;\bar{\varepsilon}^{vp})^{M0} $$

$$ Ss = As \; asinh((\frac{\dot{\bar{\varepsilon}}^{vp}}{Zs})^{Ms}) $$

$$ \sigma_{yield} = S0 + (Ss - S0) (1-e^{-C \; \bar{\varepsilon}^{vp}})^{R} $$

Parameters

Name Metafor Code Dependency
$KK $ SELLARSTEGGART_KK TM/TO
$M0 $ SELLARSTEGGART_M0 TM/TO
$As $ SELLARSTEGGART_AS TM/TO
$Zs $ SELLARSTEGGART_MS TM/TO
$Ms $ SELLARSTEGGART_ZS TM/TO
$C $ SELLARSTEGGART_R TM/TO
$R $ SELLARSTEGGART_C TM/TO

PythonYieldStress

User defined Yield Stress by a pythonDirector : Python Director allows user to define their own Yield Stress law. Four functions has to be defined in the Python Class : a constructor (init), a destructor (del) that must never be called, and the computation functions : getYieldStress (returning YieldStress) and getYieldHardening (returning h). See the example below of a Perzyna law :

class MyYieldStress(PythonYieldStress):
    def __init__(self, _no, _svm0, _h, _K, _m):
        print("MyYieldStress: __init__")
        PythonYieldStress.__init__(self,_no)
        self.svm0 = _svm0
        self.h    = _h
        self.K    = _K
        self.m    = _m        
    def __del__(self):
        print("MyIsoH : __del__")
        print("callToDestructor of MyYieldStress not allowed. Add MyIsoH.__disown__()")
        input('')
        exit(1)
    def getYieldStress(self, evpl, deltaEvpl, dTime, yieldGPState, pLaw):
        #print "MyYieldStress compute Yield Stress"
        if dTime > 0.0:
            dEvpl = deltaEvpl/dTime
        else:
            dEvpl = 0.0
        sigH = self.svm0+evpl*self.h
        sigV = self.K*pow(dEvpl, self.m)
        #yieldGPState.setVpStress(sigV)
        return sigH+sigV
    def getYieldHardening(self, epl, deltaEvpl, dTime, yieldGPState, pLaw) :
        if dTime > 0.0:
            dEvpl = deltaEvpl/dTime
            h = self.h + (self.K*pow(dEvpl, self.m-1))/dTime
        else:
            dEvpl = 0.0
            h = self.h
        return h