General rate dependent models¶
Overview¶
This class is a generic interface for integrating rate-dependent models. It solves the nonlinear equations described by

In these equations
is some generic stress rate law
and
is some generic history evolution law.
These equations are defined by a GeneralFlowRule interface.
The only current purpose of this general integration routine is to integrate
viscoplastic material models, but it could be used for other purposes in the
future.
The integrator uses fully implicit backward Euler integration for both the stress and the history. It returns the algorithmic tangent, computed using the implicit function theorem. The work and energy are integrated with a trapezoid rule from the final values of stress and inelastic strain.
This model maintains a vector of history variables defined by the model’s GeneralFlowRule interface.
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 |
|
|
|
Max adaptive integration divides |
|
Class description¶
-
class GeneralIntegrator : public neml::SubstepModel_sd¶
Small strain general integrator.
Public Functions
-
GeneralIntegrator(ParameterSet ¶ms)¶
Parameters are an elastic model, a general flow rule, the CTE, the integration tolerance, the maximum nonlinear iterations, a verbosity flag, and the maximum number of subdivisions for adaptive integration
-
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.
-
virtual size_t nparams() const¶
Number of nonlinear equations.
-
virtual void init_x(double *const x, TrialState *ts)¶
Initialize a guess for the nonlinear iterations.
-
virtual void RJ(const double *const x, TrialState *ts, double *const R, double *const J)¶
The residual and jacobian for the nonlinear solve.
-
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, GITrialState &ts)¶
Initialize a trial state.
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.
-
GeneralIntegrator(ParameterSet ¶ms)¶