NEMLModel_sd¶
Overview¶
The NEMLModel_sd object natively implements the small strain stress update interface.
It accommodates the large strain incremental stress update interface using the Treusdell objective stress rate of the form:

where
is the Cauchy stress and
is the small strain stress rate implied by the small strain kinematics
update interface.
The update calculates the consistent tangents
exactly and provides a helper routine
to recombine these symmetric and skew parts into the full derivative
with respect to the spatial velocity gradient.
Caution
The current Treusdell objective integration does not advect the material history variables. This means the integration of material models with vector or tensor history variables, such as backstresses, will be inaccurate for situations requiring large rotations. This limitation will be removed in future version of NEML.
The following sections describe the basic material model implemented from this generic interfaces. Another section of the manual details continuum damage models, which also use this same interface.
The descriptions here are given in the rate form. Details of the integration algorithm for most of the small strain models are described here.
Implementations¶
Class description¶
-
class NEMLModel_sd : public neml::NEMLModel¶
Small deformation stress update.
Subclassed by neml::KMRegimeModel, neml::NEMLDamagedModel_sd, neml::SmallStrainCreepPlasticity, neml::SmallStrainElasticity, neml::SubstepModel_sd
Public Functions
-
NEMLModel_sd(ParameterSet ¶ms)¶
All small strain models use small strain elasticity and CTE.
-
virtual void update_sd(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)¶
Vector interface can go here.
-
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) = 0¶
The small strain stress update interface.
-
virtual void update_ld_inc(const double *const d_np1, const double *const d_n, const double *const w_np1, const double *const w_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 *const B_np1, double &u_np1, double u_n, double &p_np1, double p_n)¶
Large strain incremental update.
-
virtual double alpha(double T) const¶
Provide the instantaneous CTE.
-
const std::shared_ptr<const LinearElasticModel> elastic() const¶
Returns the elasticity model, for sub-objects that want to use it.
-
virtual void elastic_strains(const double *const s_np1, double T_np1, const double *const h_np1, double *const e_np1) const¶
Return the elastic strains.
Used to override the linear elastic model to match another object’s.
-
NEMLModel_sd(ParameterSet ¶ms)¶