12#include "libmesh/quadrature.h"
18 params.
addClassDescription(
"Compute strain increment for incremental strains in 2D geometries.");
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"))
35 for (
unsigned int i = 0; i < 3; ++i)
44 _disp[i] = &coupledValue(
"displacements", i);
45 _grad_disp[i] = &coupledGradient(
"displacements", i);
76 total_strain_increment = 0.5 * (
A +
A.transpose());
83 mooseError(
"For 2D simulations where the out-of-plane direction is x or y the number of "
84 "supplied displacements must be three.");
86 mooseError(
"For 2D simulations where the out-of-plane direction is z the number of supplied "
87 "displacements must be two.");
void mooseError(Args &&... args)
static InputParameters validParams()
const unsigned int _out_of_plane_direction
virtual void displacementIntegrityCheck() override
virtual Real computeOutOfPlaneGradDispOld()=0
Computes the old out-of-plane component of the displacement gradient; as a virtual function,...
virtual void computeTotalStrainIncrement(RankTwoTensor &total_strain_increment) override
Computes the current and old deformation gradients with the assumptions for 2D geometries,...
void initialSetup() override
virtual Real computeOutOfPlaneGradDisp()=0
Computes the current out-of-plane component of the displacement gradient; as a virtual function,...
Compute2DIncrementalStrain(const InputParameters ¶meters)
std::vector< const VariableGradient * > _grad_disp_old
MaterialProperty< RankTwoTensor > & _deformation_gradient
ComputeIncrementalStrain defines a strain increment and rotation increment (=1), for small strains.
static InputParameters validParams()
std::vector< const VariableGradient * > _grad_disp
Gradient of displacements.
std::vector< const VariableValue * > _disp
Displacement variables.
unsigned int _ndisp
Coupled displacement variables.
static RankTwoTensorTempl initializeFromRows(const libMesh::TypeVector< T > &row0, const libMesh::TypeVector< T > &row1, const libMesh::TypeVector< T > &row2)