Yaguchi & Takahashi viscoplastic model for Grade 91 steel

Warning

This model has been depreciated. It produces inconistent results because of the time-dependent parts of the formulation. Use at your own risk!

Overview

This flow rule implements the complete Yaguchi & Takahashi model for Grade 91 steel defined in [YT2000] and [YT2005]. The model has a modified Chaboche form. This object provides a complete implementation of the flow and hardening functions. Furthermore, the model hard codes the complicated interpolation formula the original authors provide for the model coefficients. So this implementation takes no parameters, but is nevertheless valid over the range 473 K to 873 K. This is the only model in NEML where units are hard-coded into the formulation, rather than being provided by the user.

The following equations define the model:

\dot{\gamma}=\left\langle \frac{J_{2}\left(\operatorname{dev}\left(\bm{\sigma}\right)-\operatorname{dev}\left(\mathbf{X}\right)\right)-\sigma_{a}}{D}\right\rangle ^{n}

J_{2}\left(\mathbf{Y}\right)=\sqrt{\frac{3}{2}\mathbf{Y}:\mathbf{Y}}

\mathbf{g}_{\gamma}=\frac{3}{2}\frac{\operatorname{dev}\left(\bm{\sigma}\right)-\operatorname{dev}\left(\mathbf{X}\right)}{J_{2}\left(\operatorname{dev}\left(\bm{\sigma}\right)-\operatorname{dev}\left(\mathbf{X}\right)\right)}

\bm{\alpha}=\left[\begin{array}{cccc}
\mathbf{X}_{1} & \mathbf{X}_{2} & Q & \sigma_{a}\end{array}\right]

\mathbf{h}_{\gamma}=\left[\begin{array}{cccc}
\boldsymbol{X}_{1,\gamma} & \boldsymbol{X}_{2,\gamma} & Q_{\gamma} & \sigma_{a,\gamma}\end{array}\right]

\mathbf{X}=\mathbf{X}_{1}+\mathbf{X}_{2}

\mathbf{X}_{1,\gamma}=C_{1}\left(\frac{2}{3}\left(a_{10}-Q\right)\mathbf{n}-\mathbf{X}_{1}\right)\dot{\gamma}-\gamma_{1}J_{2}\left(\mathbf{X}_{1}\right)^{m-1}\mathbf{X}_{1}

\mathbf{X}_{2,\gamma}=C_{2}\left(\frac{2}{3}a_{2}\mathbf{n}-\mathbf{X}_{2}\right)\dot{\gamma}-\gamma_{2}J_{2}\left(\mathbf{X}_{2}\right)^{m-1}\mathbf{X}_{2}

Q_{\gamma}=d\left(q-Q\right)\sigma_{a,\gamma}        =       b\left(\sigma_{as}-\sigma_{a}\right)

b    =       \begin{cases}
b_{h} & \sigma_{as}-\sigma_{a}\ge0\\
b_{r} & \sigma_{as}-\sigma_{a}<0

\end{cases}

\sigma_{as}  =       \left\langle A+B\log_{10}\dot{p}\right\rangle

Parameters

None, all parameters are hard coded into the object.

Class description

class YaguchiGr91FlowRule : public neml::ViscoPlasticFlowRule

Non-associative flow for Gr. 91 from Yaguchi & Takahashi (2000) + (2005)

Public Functions

YaguchiGr91FlowRule(ParameterSet &params)

All parameters are hard coded to those given in the paper.

virtual void populate_hist(History &hist) const

Number of history variables.

virtual void init_hist(History &hist) const

Initialize history at time zero.

virtual void y(const double *const s, const double *const alpha, double T, double &yv) const

Scalar inelastic strain rate.

virtual void dy_ds(const double *const s, const double *const alpha, double T, double *const dyv) const

Derivative of y wrt stress.

virtual void dy_da(const double *const s, const double *const alpha, double T, double *const dyv) const

Derivative of y wrt history.

virtual void g(const double *const s, const double *const alpha, double T, double *const gv) const

Flow rule proportional to the scalar strain rate.

virtual void dg_ds(const double *const s, const double *const alpha, double T, double *const dgv) const

Derivative of g wrt stress.

virtual void dg_da(const double *const s, const double *const alpha, double T, double *const dgv) const

Derivative of g wrt history.

virtual void h(const double *const s, const double *const alpha, double T, double *const hv) const

Hardening rule proportional to scalar inelastic strain rate.

virtual void dh_ds(const double *const s, const double *const alpha, double T, double *const dhv) const

Derivative of h wrt stress.

virtual void dh_da(const double *const s, const double *const alpha, double T, double *const dhv) const

Derivative of h wrt history.

virtual void h_time(const double *const s, const double *const alpha, double T, double *const hv) const

Hardening rule proportional to time.

virtual void dh_ds_time(const double *const s, const double *const alpha, double T, double *const dhv) const

Derivative of h_time wrt stress.

virtual void dh_da_time(const double *const s, const double *const alpha, double T, double *const dhv) const

Derivative of h_time wrt history.

double D(double T) const

Value of parameter D.

double n(double T) const

Value of parameter n.

double a10(double T) const

Value of parameter a_10.

double C2(double T) const

Value of parameter C2.

double a2(double T) const

Value of parameter a2.

double g1(double T) const

Value of parameter g1.

double g2(double T) const

Value of parameter g2.

double m(double T) const

Value of parameter m.

double br(double T) const

Value of parameter b_r.

double bh(double T) const

Value of parameter b_h.

double A(double T) const

Value of parameter A.

double B(double T) const

Value of parameter B.

double d(double T) const

Value of parameter d.

double q(double T) const

Value of parameter q.

double C1(double T) const

Value of parameter C1.

Public Static Functions

static std::string type()

String type for the object system.

static std::unique_ptr<NEMLObject> initialize(ParameterSet &params)

Initialize from a parameter set.

static ParameterSet parameters()

Default parameter set.