Rate independent nonassociative flow

Overview

This interface implements a nonassociative flow rule where only the flow function is associated to the yield surface through the relation

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

The hardening rule is left as a generic interface providing the rate of history variable evolution proportional to the equivalent plastic strain rate, \mathbf{h}_\gamma. Note that rate independent models cannot use hardening proportional to time or temperature rate or else the model will not be rate independent!

This type of model is much more common than a fully nonassociative model where neither the flow rule or the hardening rule is associated to the yield surface. For example, classical Frederick-Armstrong hardening falls into this category [FA2007].

Parameters

Parameter

Object type

Description

Default

surface

neml::YieldSurface

Yield surface interface

No

hardening

neml::NonAssociativeHardening

Nonassociative hardening rule interface

No

Class description

class RateIndependentNonAssociativeHardening : public neml::RateIndependentFlowRule

Associative plastic flow but non-associative hardening.

Public Functions

RateIndependentNonAssociativeHardening(ParameterSet &params)
virtual void populate_hist(History &h) const

Setup internal state.

virtual void init_hist(History &h) const

Setup the history at time zero.

virtual void f(const double *const s, const double *const alpha, double T, double &fv) const

Yield surface.

virtual void df_ds(const double *const s, const double *const alpha, double T, double *const dfv) const

Partial derivative of the surface wrt stress.

virtual void df_da(const double *const s, const double *const alpha, double T, double *const dfv) const

Partial derivative of the surface wrt history.

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

Flow function.

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

Partial derivative of the flow function wrt stress.

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

Partial derivative of the flow function wrt history.

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

Hardening rule.

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

Partial derivative of the hardening rule wrt. stress.

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

Partial derivative of the hardening rule wrt. history.

Public Static Functions

static std::string type()

String type for the object system.

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

Setup default parameters.

static ParameterSet parameters()

Initialize from a parameter set.