17 template <ComputeStage compute_stage>
22 params.addClassDescription(
23 "Residual due to stress related Rayleigh damping and HHT time integration terms");
24 params.addParam<MaterialPropertyName>(
"zeta",
26 "Name of material property or a constant real "
27 "number defining the zeta parameter for the "
29 params.addParam<Real>(
"alpha", 0,
"alpha parameter for HHT time integration");
30 params.addParam<
bool>(
"static_initialization",
32 "Set to true to get the system to "
33 "equilibrium under gravity by running a "
34 "quasi-static analysis (by solving Ku = F) "
35 "in the first time step");
39 template <ComputeStage compute_stage>
41 const InputParameters & parameters)
43 _stress_older(getMaterialPropertyOlder<
RankTwoTensor>(_base_name +
"stress")),
44 _stress_old(getMaterialPropertyOld<
RankTwoTensor>(_base_name +
"stress")),
45 _zeta(getMaterialProperty<Real>(
"zeta")),
46 _alpha(getParam<Real>(
"alpha")),
47 _static_initialization(getParam<bool>(
"static_initialization"))
51 template <ComputeStage compute_stage>
70 if (_static_initialization && _t == _dt)
74 residual = _stress[_qp].row(_component) * _grad_test[_i][_qp];
76 if (_volumetric_locking_correction)
78 _stress[_qp].trace() / 3.0 * (_avg_grad_test[_i] - _grad_test[_i][_qp](_component));
83 _stress[_qp].row(_component) * _grad_test[_i][_qp] *
84 (1.0 + _alpha + (1.0 + _alpha) * _zeta[_qp] / _dt) -
85 (_alpha + (1.0 + 2.0 * _alpha) * _zeta[_qp] / _dt) * _stress_old[_qp].row(_component) *
87 (_alpha * _zeta[_qp] / _dt) * _stress_older[_qp].row(_component) * _grad_test[_i][_qp];
89 if (_volumetric_locking_correction)
90 residual += (_stress[_qp].trace() * (1.0 + _alpha + (1.0 + _alpha) * _zeta[_qp] / _dt) -
91 (_alpha + (1.0 + 2.0 * _alpha) * _zeta[_qp] / _dt) * _stress_old[_qp].trace() +
92 (_alpha * _zeta[_qp] / _dt) * _stress_older[_qp].trace()) /
93 3.0 * (_avg_grad_test[_i] - _grad_test[_i][_qp](_component));