Rate independent plasticity¶
Overview¶
This class implements rate independent plasticity described by:
The elastic trial state:
The plastic correction:
Solving for
such that
In these equations
is a yield function,
is
a flow function, evaluated at the next state, and
is
the rate of evolution for the history variables, evaluated at the next
state.
NEML integrates all three of these functions into a Rate independent flow rule
interface.
If the step is plastic the stress update is solved through fully-implicit backward Euler integration. The algorithmic tangent is then computed using an implicit function scheme. The work and energy are integrated with a trapezoid rule from the final values of stress and plastic strain.
This model maintains a vector of history variables defined by the model’s Rate independent flow rule interface.
At the end of the step the model (optionally) checks to ensure the step met the Kuhn-Tucker conditions

Parameters¶
Parameter |
Object type |
Description |
Default |
|---|---|---|---|
|
Temperature dependent elastic constants |
No |
|
|
Flow rule interface |
No |
|
|
Temperature dependent instantaneous CTE |
|
|
|
|
Integration tolerance |
|
|
|
Maximum number of integration iters |
|
|
|
Print lots of convergence info |
|
|
|
Tolerance on the Kuhn-Tucker conditions |
|
|
|
Flag to actually check KT |
|
Class description¶
-
class SmallStrainRateIndependentPlasticity : public neml::SubstepModel_sd¶
Small strain, rate-independent plasticity.
Public Functions
-
SmallStrainRateIndependentPlasticity(ParameterSet ¶ms)¶
Parameters: elasticity model, flow rule, CTE, solver tolerance, maximum solver iterations, verbosity flag, tolerance on the Kuhn-Tucker conditions check, and a flag on whether the KT conditions should be evaluated
-
virtual TrialState *setup(const double *const e_np1, const double *const e_n, double T_np1, double T_n, double t_np1, double t_n, const double *const s_n, const double *const h_n)¶
Setup the trial state.
-
virtual bool elastic_step(const TrialState *ts, const double *const e_np1, const double *const e_n, double T_np1, double T_n, double t_np1, double t_n, const double *const s_n, const double *const h_n)¶
Ignore update and take an elastic step.
-
virtual void update_internal(const double *const x, 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)¶
Interpret the x vector.
-
virtual void strain_partial(const TrialState *ts, const double *const e_np1, const double *const e_n, double T_np1, double T_n, double t_np1, double t_n, const double *const s_np1, const double *const s_n, const double *const h_np1, const double *const h_n, double *const de)¶
Minus the partial derivative of the residual with respect to the strain.
-
virtual void work_and_energy(const TrialState *ts, 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 &u_np1, double u_n, double &p_np1, double p_n)¶
Do the work calculation.
-
virtual size_t nparams() const¶
Number of solver parameters.
-
virtual void init_x(double *const x, TrialState *ts)¶
Setup an iteration vector in the solver.
-
virtual void RJ(const double *const x, TrialState *ts, double *const R, double *const J)¶
Solver function returning the residual and jacobian of the nonlinear system of equations integrating the model
-
const std::shared_ptr<const LinearElasticModel> elastic() const¶
Return the elastic model for subobjects.
-
void make_trial_state(const double *const e_np1, const double *const e_n, double T_np1, double T_n, double t_np1, double t_n, const double *const s_n, const double *const h_n, SSRIPTrialState &ts)¶
Setup a trial state.
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.
-
SmallStrainRateIndependentPlasticity(ParameterSet ¶ms)¶


such that