Perfect plasticity¶
Overview¶
This class implements rate independent perfect plasticity described by:
The elastic trial state:
The plastic correction:
Solving for
such that
In these equations
is a yield function, parameterized by the yield
stress
.
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 does not maintain any history variables.
Parameters¶
Parameter |
Object type |
Description |
Default |
|---|---|---|---|
|
Temperature dependent elastic constants |
No |
|
|
The yield surface |
No |
|
|
The yield stress as a function of T |
No |
|
|
Temperature dependent instantaneous CTE |
|
|
|
|
Integration tolerance |
|
|
|
Maximum number of integration iters |
|
|
|
Print lots of convergence info |
|
|
|
Maximum number of adaptive subdivisions |
|
Class description¶
-
class SmallStrainPerfectPlasticity : public neml::SubstepModel_sd¶
Small strain, associative, perfect plasticity.
Public Functions
-
SmallStrainPerfectPlasticity(ParameterSet ¶ms)¶
Parameters: elastic model, yield surface, yield stress, CTE, integration tolerance, maximum number of iterations, verbosity flag, and the maximum number of adaptive subdivisions
-
virtual size_t nparams() const¶
Number of nonlinear equations to solve in the integration.
-
virtual void init_x(double *const x, TrialState *ts)¶
Setup an initial guess for the nonlinear solution.
-
virtual void RJ(const double *const x, TrialState *ts, double *const R, double *const J)¶
Integration residual and jacobian equations.
-
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)¶
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 *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.
-
double ys(double T) const¶
Helper to return the yield stress.
-
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, SSPPTrialState &ts)¶
Setup a trial state for the solver from the input information.
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.
-
SmallStrainPerfectPlasticity(ParameterSet ¶ms)¶


such that