16 #include "libmesh/quadrature.h" 20 ADComputeIncrementalSmallStrain,
24 template <
typename R2>
30 "Compute a strain increment and rotation increment for small strains.");
34 template <
typename R2>
41 template <
typename R2>
45 ADReal volumetric_strain = 0.0;
46 for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
48 ADR2 total_strain_increment;
49 computeTotalStrainIncrement(total_strain_increment);
51 _strain_increment[_qp] = total_strain_increment;
53 if (_volumetric_locking_correction)
54 volumetric_strain += total_strain_increment.trace() * _JxW[_qp] * _coord[_qp];
57 if (_volumetric_locking_correction)
58 volumetric_strain /= _current_elem_volume;
60 for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
62 if (_volumetric_locking_correction)
64 const auto correction = (volumetric_strain - _strain_increment[_qp].trace()) / 3.0;
65 _strain_increment[_qp].addIa(correction);
68 _total_strain[_qp] = _strain_increment[_qp] + _total_strain_old[_qp];
71 this->subtractEigenstrainIncrementFromStrain(_strain_increment[_qp]);
75 _strain_rate[_qp] = _strain_increment[_qp] / _dt;
77 _strain_rate[_qp].zero();
80 _mechanical_strain[_qp] = _strain_increment[_qp] + _mechanical_strain_old[_qp];
83 _rotation_increment[_qp].setToIdentity();
87 template <
typename R2>
92 const auto A = ADR2::initializeSymmetric(
93 (*_grad_disp[0])[_qp], (*_grad_disp[1])[_qp], (*_grad_disp[2])[_qp]);
95 const auto Fbar = ADR2::initializeSymmetric(
96 (*_grad_disp_old[0])[_qp], (*_grad_disp_old[1])[_qp], (*_grad_disp_old[2])[_qp]);
98 total_strain_increment =
A - Fbar;
static InputParameters validParams()
static InputParameters validParams()
ADComputeIncrementalStrainBase is the base class for strain tensors using incremental formulations...
ADComputeIncrementalStrainTempl defines a strain increment and rotation increment (=1)...
virtual void computeTotalStrainIncrement(ADR2 &total_strain_increment)
Computes the current and old deformation gradients and passes back the total strain increment tensor...
ADComputeIncrementalStrainTempl(const InputParameters ¶meters)
registerMooseObjectRenamed("SolidMechanicsApp", ADComputeIncrementalSmallStrain, "06/30/2025 24:00", ADComputeIncrementalStrain)
registerMooseObject("SolidMechanicsApp", ADComputeIncrementalStrain)
Moose::GenericType< R2, true > ADR2
virtual void computeProperties() override