Walker-Krempl rate sensitivity modification¶
Overview¶
This class modifies an existing Viscoplastic general flow rule to scale
between a rate sensitive response (given by the base model) and a
rate insensitive response based on a temperature-dependent
parameter
.
The approach was developed by Walker and Krempl [WK1978] to modify an
underlying viscoplastic model to return a rate insensitive response
at lower temperatures.
Given the base model scalar inelastic rate

the model modifies the scalar part of the flow rate to

keeping the flow direction the same. The scaling function is

where
is a parameter and
is the total (not inelastic) deviatoric strain rate.
In the limit
the model returns the rate sensitive, viscoplastic flow response from the underlying model.
In the limit
the model returns an equivalent rate
insensitive flow rate, asymptotically approximating an equivalent rate
independent model. An interpolation function can change the value of
as a function of temperature, for example to transition
from a rate insensitive response at lower temperatures to a rate
sensitive response at higher temperatures.
The implementation applies the same scale factor to all time derivatives in the base model’s history evolution equations, maintaining a consistent modified time integration scheme for all internal variables.
The user must determine an appropriate value of
(which
cannot be set exactly to
, as this results in numerical
instability) and an appropriate reference rate
.
A value of
seems to work well and the
reference rate should be set to a value much slower than the actual
strain rates used by the material model.
Parameters¶
Parameter |
Object type |
Description |
Default |
|---|---|---|---|
|
Elasticity model |
No |
|
|
Viscoplastic flow rule interface |
No |
|
|
Scaling parameter |
No |
|
|
|
Reference strain rate |
No |
Class description¶
-
class WalkerKremplSwitchRule : public neml::GeneralFlowRule¶
-
Public Functions
-
WalkerKremplSwitchRule(ParameterSet ¶ms)¶
Parameters: elastic model and a viscoplastic flow rule.
-
virtual void s(const double *const s, const double *const alpha, const double *const edot, double T, double Tdot, double *const sdot)¶
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)¶
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)¶
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)¶
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)¶
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)¶
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)¶
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)¶
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¶
The implementation needs to define elastic strain.
Set a new elastic model.
-
void kappa(const double *const edot, double T, double &kap)¶
The kappa function controlling rate sensitivity (public for testing)
-
void dkappa(const double *const edot, double T, double *const dkap)¶
Derivative of kappa wrt the strain rate (public for testing)
-
virtual void override_guess(double *const x)¶
Override initial guess.
Public Static Functions
-
static std::string type()¶
String type for the object system.
-
static std::unique_ptr<NEMLObject> initialize(ParameterSet ¶ms)¶
Return default parameters.
-
static ParameterSet parameters()¶
Initialize from parameter set.
-
WalkerKremplSwitchRule(ParameterSet ¶ms)¶