Viscoplastic flow rule

Overview

This class provides the interface

\dot{\gamma},
\mathbf{g}_\gamma, \mathbf{g}_T, \mathbf{g}_t,
\mathbf{h}_\gamma, \mathbf{h}_T, \mathbf{h}_t
\leftarrow \mathcal{V}
\left(\bm{\sigma}, \bm{\alpha}, T \right).

and associated partial derivatives. \dot{\gamma} is the scalar inelastic strain rate, \mathbf{g} is the flow rule, and \mathbf{h} is the hardening law. The subscripts \gamma indicates the part proportional to the scalar inelastic strain rate, T the part proportional to the temperature rate, t the part directly contributing towards the total time derivative. See Viscoplastic general flow rule for the specific definition of each quantity.

The base class implementation by default provides zero for the T and the t quantities, giving a standard model that evolves only in proportion to the inelastic strain rate. Static recovery or thermo-viscoplasticity requires the definition of the time parts and temperature parts of the flow rule and/or hardening rule.

Implementations

Class description

class ViscoPlasticFlowRule : public neml::HistoryNEMLObject

ABC describing viscoplastic flow.

Subclassed by neml::ChabocheFlowRule, neml::LinearViscousFlow, neml::PerzynaFlowRule, neml::SuperimposedViscoPlasticFlowRule, neml::WrappedViscoPlasticFlowRule, neml::YaguchiGr91FlowRule

Public Functions

ViscoPlasticFlowRule(ParameterSet &params)
virtual void y(const double *const s, const double *const alpha, double T, double &yv) const = 0

Scalar flow rate.

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

Derivative of scalar flow wrt stress.

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

Derivative of scalar flow wrt history.

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

Contribution towards the flow proportional to the scalar inelastic strain rate

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

Derivative of g wrt stress.

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

Derivative of g wrt history.

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

Contribution towards the flow proportional directly to time.

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

Derivative of g_time wrt stress.

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

Derivative of g_time wrt history.

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

Contribution towards the flow proportional to the temperature rate.

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

Derivative of g_temp wrt stress.

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

Derivative of g_temp wrt history.

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

Hardening rate proportional to the scalar inelastic strain rate.

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

Derivative of h wrt stress.

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

Derivative of h wrt history.

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

Hardening rate proportional directly 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.

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

Hardening rate proportional to the temperature rate.

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

Derivative of h_temp wrt. stress.

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

Derivative of h_temp wrt history.

virtual void override_guess(double *const guess)

Optional method to give a better initial guess.