Chaboche viscoplastic flow rule

Overview

The Chaboche viscoplastic flow model uses an associative flow function but nonassociative hardening. Traditionally the nonassociative hardening model used is the ChabocheHardening model, but this implementation can use any nonassociative hardening rule. The model is defined by:

\dot{\gamma} = \dot{\gamma}_0 \sqrt{\frac{3}{2}} \left\langle \frac{f\left(\bm{\sigma}, \mathbf{q}\left(\bm{\alpha}\right), T\right)}{\sqrt{2/3}\eta\left(\bar{\varepsilon}_{vp}, T\right)}\right\rangle^n

\mathbf{g}_{\gamma} = \frac{\partial f}{\partial \bm{\sigma}} \left( \bm{\sigma}, \mathbf{q}\left(\bm{\alpha}\right), T  \right)

The time and temperature rate contributions to the flow function are zero. The rate sensitivity exponent is generally temperature dependent; the prefactor \dot{\gamma}_0 can be temperature dependent; the Fluidity model \eta can depend on both temperature and inelastic strain. The hardening model is defined by a NonassociativeHardening model. The time and temperature rate contributions can be non-zero.

The model maintains the history variables defined by the hardening model.

Parameters

Parameter

Object type

Description

Default

surface

neml::YieldSurface

Flow surface interface

No

hardening

neml::NonAssociativeHardeningRule

Hardening rule interface

No

fluidity

neml::FluidityModel

Fluidity definition

No

n

neml::Interpolate

Rate sensitivity exponent

No

prefactor

neml::Interpolate

Prefactor

Class description

class ChabocheFlowRule : public neml::ViscoPlasticFlowRule

Non-associative flow based on Chaboche’s viscoplastic formulation.

Public Functions

ChabocheFlowRule(ParameterSet &params)

Parameters: a yield surface, a nonassociative hardening rule, the fluidity function, and a rate sensitivity exponent

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 flow 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 the scalar 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.

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

Hardening rule proportional to 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.

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()

Return default parameters.

Fluidity model

The general Chaboche model allows the fluidity to vary with the integrated effective inelastic strain

\bar{\varepsilon}_{vp}=\int_{0}^{t}\sqrt{\frac{2}{3}\dot{\bm{\varepsilon}}_{vp}:\dot{\bm{\varepsilon}}_{vp}}dt.

These models then define the fluidity as

\eta \leftarrow \mathcal{N}\left(\bar{\varepsilon}_{vp}, T \right).

class FluidityModel : public neml::NEMLObject

Various Chaboche type fluidity models.

Subclassed by neml::ConstantFluidity, neml::SaturatingFluidity

Public Functions

FluidityModel(ParameterSet &params)
virtual double eta(double a, double T) const = 0

Value of viscosity as a function of temperature and inelastic strain.

virtual double deta(double a, double T) const = 0

Derivative of viscosity wrt inelastic strain.

Constant fluidity

This option keeps the fluidity constant with the effective inelastic strain.

\eta = c

It can still vary with temperature.

Parameters

Parameter

Object type

Description

Default

eta

neml::Interpolate

Value of the fluidity

No

Class description

class ConstantFluidity : public neml::FluidityModel

The fluidity is constant with respect to plastic strain.

Public Functions

ConstantFluidity(ParameterSet &params)

Parameter: constant value of viscosity.

virtual double eta(double a, double T) const

Value of eta.

virtual double deta(double a, double T) const

Derivative of eta wrt inelastic strain (zero for this implementation)

Public Static Functions

static std::string type()

String type for the object system.

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

Initialize with a parameter set.

static ParameterSet parameters()

Default parameters.

Saturating fluidity

This option evolves the fluidity from some initial value through some increment as an exponential function of inelastic strain. The fluidity eventually saturates to a final, fixed value.

\eta = K_0 + A \left(1 - e^{-b \bar{\varepsilon}_{vp}} \right)

Parameters

Parameter

Object type

Description

Default

K0

neml::Interpolate

Initial fluidity

No

A

neml::Interpolate

Saturated fluidity is K0 + A

No

b

neml::Interpolate

Saturation speed exponent

No

Class description

class SaturatingFluidity : public neml::FluidityModel

Voce-like saturating fluidity.

Public Functions

SaturatingFluidity(ParameterSet &params)

Parameters: K0, initial viscosity, A, saturated increase in viscosity, b, sets saturation rate

virtual double eta(double a, double T) const

Value of eta.

virtual double deta(double a, double T) const

Derivative of eta wrt inelastic strain.

Public Static Functions

static std::string type()

String type for the object system.

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

Initialize with a parameter set.

static ParameterSet parameters()

Default parameters.