Regime switching model¶
Overview¶
This model selects a stress and history update function from a input list of NEMLModel_sd objects based on a normalized activation energy. This activation energy is a function of strain rate and temperature and the form of the normalized energy comes from the work of Kocks and Mecking [KM2003].
The input to the metamodel is a list of material models and a corresponding
list of activation energy cutoffs
.
When the caller requests a stress and history update this metamodel
first calculates the normalized activation energy

Here
is the Boltzmann constant,
the current value of
temperature,
the current, temperature-dependent shear modulus,
a Burgers vector,
a reference strain
rate, and
the current equivalent strain rate,
computed as

with

and similarly for state n.
If
the metamodel selects the first model in the input list,
if
the metamodel selects the last model in the input, and
for values in between the model selects model i such that
.
The metamodel dispatches calls for the history evolution, algorithmic tangent, and energy likewise.
The Kocks-Mecking metamodel requires each model in the input list to use compatible history variables. That is, all the possible base model options must use the same history variables. This means the metamodel maintains only one copy of the history variables, which are common for all the base models. The history evolution is therefore consistent no matter which base model is selected for a particular stress update.
Warning
The KMRegimeModel metamodel does not check for consitency of history for the base models, beyond checking to make sure that each model uses the same number of history variables.
Parameters¶
Parameter |
Object type |
Description |
Default |
|---|---|---|---|
|
Temperature dependent elastic constants |
No |
|
|
|
Vector of base models |
No |
|
|
Corresponding vector of energies |
No |
|
|
Boltzmann’s constant |
No |
|
|
Burger’s vector length |
No |
|
|
Reference strain rate |
No |
|
Temperature dependent instantaneous CTE |
|
Class description¶
-
class KMRegimeModel : public neml::NEMLModel_sd¶
Combines multiple small strain integrators based on regimes of rate-dependent behavior.
Public Functions
-
KMRegimeModel(ParameterSet ¶ms)¶
Parameters are an elastic model, a vector of valid NEMLModel_sd objects, the transition activation energies, the Boltzmann constant in appropriate units, a Burgers vector for normalization, a reference strain rate, and the CTE.
-
virtual void update_sd_actual(const double *const e_np1, const double *const e_n, double T_np1, double T_n, double t_np1, double t_n, double *const s_np1, const double *const s_n, double *const h_np1, const double *const h_n, double *const A_np1, double &u_np1, double u_n, double &p_np1, double p_n)¶
The small strain stress update.
Set a new elastic model.
Public Static Functions
-
static std::string type()¶
Type for the object system.
-
static ParameterSet parameters()¶
Parameters for the object system.
-
static std::unique_ptr<NEMLObject> initialize(ParameterSet ¶ms)¶
Setup from a ParameterSet.
-
KMRegimeModel(ParameterSet ¶ms)¶