12#include "libmesh/quadrature.h"
20 MooseEnum outOfPlaneDirection(
"x y z",
"z");
22 "out_of_plane_direction", outOfPlaneDirection,
"The direction of the out-of-plane strain.");
28 _out_of_plane_direction(getParam<
MooseEnum>(
"out_of_plane_direction"))
36 for (
unsigned int i = 0; i < 3; ++i)
45 _disp[i] = &coupledValue(
"displacements", i);
46 _grad_disp[i] = &coupledGradient(
"displacements", i);
58 Real volumetric_strain = 0.0;
59 for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
68 volumetric_strain +=
_total_strain[_qp].trace() * _JxW[_qp] * _coord[_qp];
74 for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
78 const Real correction = (volumetric_strain -
_total_strain[_qp].trace()) / 3.0;
96 mooseError(
"For 2D simulations where the out-of-plane direction is x or y the number of "
97 "supplied displacements must be three.");
99 mooseError(
"For 2D simulations where the out-of-plane direction is z the number of supplied "
100 "displacements must be two.");
void mooseError(Args &&... args)
virtual void displacementIntegrityCheck() override
const unsigned int _out_of_plane_direction
void initialSetup() override
virtual void computeProperties() override
static InputParameters validParams()
Compute2DSmallStrain(const InputParameters ¶meters)
virtual Real computeOutOfPlaneStrain()=0
ComputeSmallStrain defines a strain tensor, assuming small strains.
static InputParameters validParams()
std::vector< const VariableGradient * > _grad_disp
Gradient of displacements.
std::vector< const VariableValue * > _disp
Displacement variables.
MaterialProperty< RankTwoTensor > & _mechanical_strain
const Real & _current_elem_volume
unsigned int _ndisp
Coupled displacement variables.
std::vector< const MaterialProperty< RankTwoTensor > * > _eigenstrains
MaterialProperty< RankTwoTensor > & _total_strain
const bool _volumetric_locking_correction