Rate independent associative flow

Overview

This interface implements an associative flow rule where both the flow function and the hardening rule are associated to the yield surface by the functional relations

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

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

These quantities have all been defined previous, except for the function \mathbf{q}. This function maps the “strain-like” set of history vectors to the “stress-like” set of internal variables that enter the yield surface [SH1997]. These “stress-like” internal variables are most commonly an isotropic expansion/contraction of the yield surface and a kinematic backstress shifting the yield surface in space.

A fully-associative flow rule of this type results in a model with favorable theoretical and numerical properties. For example, these models all obey Drucker’s postulate [D1959] and will have symmetric algorithmic tangents.

The hardening rule and yield surface are both defined with separate interfaces.

Parameters

Parameter

Object type

Description

Default

surface

neml::YieldSurface

Yield surface interface

No

hardening

neml::HardeningRule

Hardening rule interface

No

Class description

class RateIndependentAssociativeFlow : public neml::RateIndependentFlowRule

Implementation of associative RI flow.

Public Functions

RateIndependentAssociativeFlow(ParameterSet &params)

Parameters: yield surface and hardening rule.

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.