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
- Linear elasticity
- Perfect plasticity
- Overview
- Parameters
- Class description
SmallStrainPerfectPlasticitySmallStrainPerfectPlasticity::SmallStrainPerfectPlasticity()SmallStrainPerfectPlasticity::populate_state()SmallStrainPerfectPlasticity::init_state()SmallStrainPerfectPlasticity::nparams()SmallStrainPerfectPlasticity::init_x()SmallStrainPerfectPlasticity::RJ()SmallStrainPerfectPlasticity::setup()SmallStrainPerfectPlasticity::elastic_step()SmallStrainPerfectPlasticity::update_internal()SmallStrainPerfectPlasticity::strain_partial()SmallStrainPerfectPlasticity::work_and_energy()SmallStrainPerfectPlasticity::ys()SmallStrainPerfectPlasticity::make_trial_state()SmallStrainPerfectPlasticity::type()SmallStrainPerfectPlasticity::parameters()SmallStrainPerfectPlasticity::initialize()
- Rate independent plasticity
- Overview
- Parameters
- Class description
SmallStrainRateIndependentPlasticitySmallStrainRateIndependentPlasticity::SmallStrainRateIndependentPlasticity()SmallStrainRateIndependentPlasticity::populate_state()SmallStrainRateIndependentPlasticity::init_state()SmallStrainRateIndependentPlasticity::setup()SmallStrainRateIndependentPlasticity::elastic_step()SmallStrainRateIndependentPlasticity::update_internal()SmallStrainRateIndependentPlasticity::strain_partial()SmallStrainRateIndependentPlasticity::work_and_energy()SmallStrainRateIndependentPlasticity::nparams()SmallStrainRateIndependentPlasticity::init_x()SmallStrainRateIndependentPlasticity::RJ()SmallStrainRateIndependentPlasticity::elastic()SmallStrainRateIndependentPlasticity::make_trial_state()SmallStrainRateIndependentPlasticity::type()SmallStrainRateIndependentPlasticity::parameters()SmallStrainRateIndependentPlasticity::initialize()
- General rate dependent models
- Overview
- Parameters
- Class description
GeneralIntegratorGeneralIntegrator::GeneralIntegrator()GeneralIntegrator::setup()GeneralIntegrator::elastic_step()GeneralIntegrator::update_internal()GeneralIntegrator::strain_partial()GeneralIntegrator::work_and_energy()GeneralIntegrator::populate_state()GeneralIntegrator::init_state()GeneralIntegrator::nparams()GeneralIntegrator::init_x()GeneralIntegrator::RJ()GeneralIntegrator::make_trial_state()GeneralIntegrator::set_elastic_model()GeneralIntegrator::type()GeneralIntegrator::parameters()GeneralIntegrator::initialize()
- Creep + plasticity
- Overview
- Parameters
- Class description
SmallStrainCreepPlasticitySmallStrainCreepPlasticity::SmallStrainCreepPlasticity()SmallStrainCreepPlasticity::update_sd_actual()SmallStrainCreepPlasticity::populate_state()SmallStrainCreepPlasticity::init_state()SmallStrainCreepPlasticity::nparams()SmallStrainCreepPlasticity::init_x()SmallStrainCreepPlasticity::RJ()SmallStrainCreepPlasticity::make_trial_state()SmallStrainCreepPlasticity::set_elastic_model()SmallStrainCreepPlasticity::type()SmallStrainCreepPlasticity::parameters()SmallStrainCreepPlasticity::initialize()
- Regime switching model
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)