Creep + plasticity

Overview

A SmallStrainCreepPlasticity model combines any of the previous types of material models with a rate dependent creep model. The model solves the simultaneous nonlinear equations

\bm{\sigma}_{n+1}^{base}\left(
\bm{\varepsilon}_{n+1}^{base}, \bm{\varepsilon}_{n}^{base},
T_{n+1}, T_{n},
t_{n+1}, t_{n},
\bm{\sigma}_{n}^{base},
\bm{\alpha}_{n}^{base}
\right) =
\bm{\sigma}_{n+1}^{cr}

\bm{\varepsilon}_{n+1} = \bm{\varepsilon}_{n+1}^{base} +
   \bm{\varepsilon}_{n+1}^{cr}\left(\bm{\varepsilon}_{n}^{cr},\bm{\sigma}_{n+1}^{cr},\Delta t_{n+1},T_{n+1}\right).

Here the model with superscript base is the base material model and the model with superscript cr is the creep model (a CreepModel object). The base model can be any NEMLModel_sd object. The creep model add no additional history variables, it is solely a function of stress, temperature, and strain.

Unlike base material models creep models in NEML are configured to return strain as a function of stress, rather than stress as a function of strain. Because of this these equations can be combined into a single nonlinear equation

\bm{\varepsilon}_{n+1} = \bm{\varepsilon}_{n+1}^{base}+\bm{\varepsilon}_{n+1}^{cr}\left(\bm{\varepsilon}_{n}-\bm{\varepsilon}_{n}^{base},\bm{\sigma}_{n+1}\left(\bm{\varepsilon}_{n+1}^{base},\bm{\varepsilon}_{n}^{ep},\boldsymbol{h}_{n},\Delta t_{n+1},T_{n+1}\right),\Delta t_{n+1},T_{n+1}\right)

The implementation solves this nonlinear equation and provides the appropriate Jacobian using a matrix decomposition formula.

Parameters

Parameter

Object type

Description

Default

elastic

neml::LinearElasticModel

Temperature dependent elastic constants

No

plastic

neml::NEMLModel_sd

Base material model

No

creep

neml::CreepModel

Rate dependent creep model

No

alpha

neml::Interpolate

Temperature dependent instantaneous CTE

0.0

tol

double

Integration tolerance

1.0e-8

miter

int

Maximum number of integration iters

50

verbose

bool

Print lots of convergence info

false

sf

double

Scale factor on strain equation

1.0e6

Note

The scale factor is multiplied by a strain residual equation that may involve very small values of strain. The default value works well for values of nominal strain (i.e. in/in or mm/mm).

Class description

class SmallStrainCreepPlasticity : public neml::NEMLModel_sd, public neml::Solvable

Small strain, rate-independent plasticity + creep.

Public Functions

SmallStrainCreepPlasticity(ParameterSet &params)

Parameters are an elastic model, a base NEMLModel_sd, a CreepModel, the CTE, a solution tolerance, the maximum number of nonlinear iterations, a verbosity flag, and a scale factor to regularize the nonlinear equations.

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)

Small strain stress update.

virtual void populate_state(History &hist) const

Populate list of internal variables.

virtual void init_state(History &hist) const

Passes call for initial history to base model.

virtual size_t nparams() const

The number of parameters in the nonlinear equation.

virtual void init_x(double *const x, TrialState *ts)

Initialize the nonlinear solver.

virtual void RJ(const double *const x, TrialState *ts, double *const R, double *const J)

Residual equation to solve and corresponding jacobian.

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, SSCPTrialState &ts)

Setup a trial state from known information.

virtual void set_elastic_model(std::shared_ptr<LinearElasticModel> emodel)

Set a new elastic model.

Public Static Functions

static std::string type()

Type for the object system.

static ParameterSet parameters()

Setup parameters for the object system.

static std::unique_ptr<NEMLObject> initialize(ParameterSet &params)

Initialize from a parameter set.