12#include "libmesh/quadrature.h"
32 Real volumetric_strain = 0.0;
33 for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
36 const auto grad_tensor = RankTwoTensor ::initializeFromRows(
39 _total_strain[_qp] = (grad_tensor + grad_tensor.transpose()) / 2.0;
42 volumetric_strain +=
_total_strain[_qp].trace() * _JxW[_qp] * _coord[_qp];
48 for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
53 _total_strain[_qp](0, 0) += (volumetric_strain - trace) / 3.0;
54 _total_strain[_qp](1, 1) += (volumetric_strain - trace) / 3.0;
55 _total_strain[_qp](2, 2) += (volumetric_strain - trace) / 3.0;
registerMooseObject("SolidMechanicsApp", ComputeSmallStrain)
ComputeSmallStrain defines a strain tensor, assuming small strains.
ComputeSmallStrain(const InputParameters ¶meters)
static InputParameters validParams()
virtual void computeProperties() override
ComputeStrainBase is the base class for strain tensors.
std::vector< const VariableGradient * > _grad_disp
Gradient of displacements.
MaterialProperty< RankTwoTensor > & _mechanical_strain
const Real & _current_elem_volume
std::vector< const MaterialProperty< RankTwoTensor > * > _eigenstrains
const MaterialProperty< RankTwoTensor > *const _global_strain
MaterialProperty< RankTwoTensor > & _total_strain
static InputParameters validParams()
const bool _volumetric_locking_correction