11 #include "libmesh/quadrature.h"
21 params.addClassDescription(
"Manages the updating of the semi-implicit "
22 "single-step first-order finite difference "
23 "time-stepping scheme");
24 params.addRequiredParam<std::string>(
"viscoelastic_model",
25 "name of the LinearViscoelasticityBase object to manage");
26 params.addParam<std::string>(
27 "stress_name",
"stress",
"name of the stress tensor used for the viscoelastic update");
28 params.addParam<std::string>(
"creep_strain_name",
30 "name of the creep strain tensor used for the viscoelastic update");
31 params.addParam<std::string>(
32 "elastic_strain_name",
34 "name of the elastic strain tensor used for the viscoelastic update");
35 params.set<ExecFlagEnum>(
"execute_on") = {EXEC_TIMESTEP_BEGIN, EXEC_TIMESTEP_END};
36 params.suppressParameter<ExecFlagEnum>(
"execute_on");
41 : ElementUserObject(parameters),
42 _stress_name(getParam<std::string>(
"stress_name")),
43 _stress(getMaterialPropertyByName<
RankTwoTensor>(_stress_name)),
44 _creep_strain_name(getParam<std::string>(
"creep_strain_name")),
45 _creep_strain(getMaterialPropertyByName<
RankTwoTensor>(_creep_strain_name)),
46 _elastic_strain_name(getParam<std::string>(
"elastic_strain_name")),
47 _elastic_strain(getMaterialPropertyByName<
RankTwoTensor>(_elastic_strain_name)),
48 _viscoelastic_model_name(getParam<std::string>(
"viscoelastic_model")),
49 _viscoelastic_model(nullptr)
56 if (_mi_feproblem.getCurrentExecuteOnFlag() == EXEC_TIMESTEP_BEGIN)
58 for (
unsigned int _qp = 0; _qp < _qrule->n_points(); ++_qp)
66 std::shared_ptr<MaterialBase> test =