Perzyna viscoplastic flow rule

Overview

The Perzyna model is an associative viscoplastic model [P1966]. It is defined by:

\dot{\gamma} = g\left(\left\langle f\left(\bm{\sigma}, \mathbf{q}\left(\bm{\alpha}\right), T\right)\right\rangle\right)

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

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

where f is a flow surface, a hardening interface provides the \mathbf{q} function, and g is a Rate function. The notation \left\langle \right\rangle indicates the Macaulay brackets. The implementation uses the default zero values of the time and temperature rate contributions and so the model evolves only as a function of the inelastic strain rate.

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

Parameters

Parameter

Object type

Description

Default

surface

neml::YieldSurface

Flow surface interface

No

hardening

neml::HardeningRule

Hardening rule interface

No

g

neml::GFlow

Rate sensitivity function

No

Class description

class PerzynaFlowRule : public neml::ViscoPlasticFlowRule

Perzyna associative viscoplasticity.

Public Functions

PerzynaFlowRule(ParameterSet &params)

Parameters: a flow surface, a hardening rule, and the rate sensitivity function

virtual void populate_hist(History &hist) const

Populate a blank history object.

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 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 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.

Public Static Functions

static std::string type()

String type for the object system.

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

Default parameters.

static ParameterSet parameters()

Initialize from parameters.

Rate function

These functions define the rate sensitivity of the Peryna flow model. They have the form g\left(f, T\right) where f is the current value of the flow surface.

class GFlow : public neml::NEMLObject

The “g” function in the Perzyna model &#8212; often a power law.

Subclassed by neml::GPowerLaw

Public Functions

GFlow(ParameterSet &params)
virtual double g(double f, double T) const = 0

The value of g.

virtual double dg(double f, double T) const = 0

The derivative of g wrt to the flow surface.

Power law

This rate function implements simple power law

g\left(f, T\right) = \left(\frac{f}{\eta}\right)^n

for some temperature-dependent rate sensitivity exponent n and fluidity \eta.

Parameters

Parameter

Object type

Description

Default

n

neml::Interpolate

Rate sensitivity exponent

No

eta

neml::Interpolate

Fluidity

No

Class description

class GPowerLaw : public neml::GFlow

g is a power law

Public Functions

GPowerLaw(ParameterSet &params)

Parameter: the power law exponent.

virtual double g(double f, double T) const

g = (f/eta)^n

virtual double dg(double f, double T) const

Derivative of g wrt f.

double n(double T) const

Helper, just return the power law exponent.

double eta(double T) const

Helper, just returns the fluidity.

Public Static Functions

static std::string type()

String type for the object system.

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

Default parameters.

static ParameterSet parameters()

Initialize from parameters.