13 #include "libmesh/quadrature.h" 18 template <
typename R2>
27 template <
typename R2>
33 template <
typename R2>
37 ADReal volumetric_strain = 0.0;
39 for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
43 (*_grad_disp[0])[_qp], (*_grad_disp[1])[_qp], (*_grad_disp[2])[_qp]);
45 if (_volumetric_locking_correction)
46 volumetric_strain += _total_strain[_qp].trace() * _JxW[_qp] * _coord[_qp];
49 if (_volumetric_locking_correction)
50 volumetric_strain /= _current_elem_volume;
52 for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
54 if (_volumetric_locking_correction)
56 ADReal correction = (volumetric_strain - _total_strain[_qp].trace()) / 3.0;
57 _total_strain[_qp].addIa(correction);
61 _total_strain[_qp] += (*_global_strain)[_qp];
63 _mechanical_strain[_qp] = _total_strain[_qp];
66 for (
auto es : _eigenstrains)
67 _mechanical_strain[_qp] -= (*es)[_qp];
static InputParameters validParams()
ADComputeStrainBase is the base class for strain tensors.
static InputParameters validParams()
ADComputeSmallStrainTempl(const InputParameters ¶meters)
ADComputeSmallStrain defines a strain tensor, assuming small strains.
registerMooseObject("SolidMechanicsApp", ADComputeSmallStrain)
virtual void computeProperties() override