General flow rule

Overview

A general flow rule provides the interface

\dot{\bm{\sigma}},
   \frac{\partial\dot{\bm{\sigma}}}{\partial\bm{\sigma}},
   \frac{\partial\dot{\bm{\sigma}}}{\partial\bm{\alpha}},
   \frac{\partial\dot{\bm{\sigma}}}{\partial\dot{\bm{\varepsilon}}},
\dot{\bm{\alpha}},
   \frac{\partial\dot{\bm{\alpha}}}{\partial\bm{\sigma}},
   \frac{\partial\dot{\bm{\alpha}}}{\partial\bm{\alpha}},
   \frac{\partial\dot{\bm{\alpha}}}{\partial\dot{\bm{\varepsilon}}}
\leftarrow \mathcal{G}
\left(\bm{\sigma},\bm{\alpha},\dot{\bm{\varepsilon}}, T, \dot{T} \right).

So it provides a generic stress rate and history evolution rate as a function of the current state.

The base interface is entirely abstract. It maintains a set of history variables set by the specific implementation.

Implementations

Class description

class GeneralFlowRule : public neml::HistoryNEMLObject

ABC for a completely general flow rule…

Subclassed by neml::TVPFlowRule, neml::WalkerKremplSwitchRule

Public Functions

GeneralFlowRule(ParameterSet &params)
virtual void s(const double *const s, const double *const alpha, const double *const edot, double T, double Tdot, double *const sdot) = 0

Stress rate.

virtual void ds_ds(const double *const s, const double *const alpha, const double *const edot, double T, double Tdot, double *const d_sdot) = 0

Partial of stress rate wrt stress.

virtual void ds_da(const double *const s, const double *const alpha, const double *const edot, double T, double Tdot, double *const d_sdot) = 0

Partial of stress rate wrt history.

virtual void ds_de(const double *const s, const double *const alpha, const double *const edot, double T, double Tdot, double *const d_sdot) = 0

Partial of stress rate wrt strain rate.

virtual void a(const double *const s, const double *const alpha, const double *const edot, double T, double Tdot, double *const adot) = 0

History rate.

virtual void da_ds(const double *const s, const double *const alpha, const double *const edot, double T, double Tdot, double *const d_adot) = 0

Partial of history rate wrt stress.

virtual void da_da(const double *const s, const double *const alpha, const double *const edot, double T, double Tdot, double *const d_adot) = 0

Partial of history rate wrt history.

virtual void da_de(const double *const s, const double *const alpha, const double *const edot, double T, double Tdot, double *const d_adot) = 0

Partial of history rate wrt strain rate.

virtual void work_rate(const double *const s, const double *const alpha, const double *const edot, double T, double Tdot, double &p_rate)

The implementation needs to define inelastic dissipation.

virtual void elastic_strains(const double *const s_np1, double T_np1, double *const e_np1) const = 0

The implementation needs to define elastic strain.

virtual void set_elastic_model(std::shared_ptr<LinearElasticModel> emodel)

Set a new elastic model.

virtual void override_guess(double *const x)

Optional method for modifying the initial guess.