15 #include "libmesh/quadrature.h" 32 _nrots(coupledComponents(
"Cosserat_rotations")),
33 _wc(coupledValues(
"Cosserat_rotations")),
34 _wc_old(coupledValuesOld(
"Cosserat_rotations")),
35 _grad_wc(coupledGradients(
"Cosserat_rotations")),
36 _grad_wc_old(coupledGradientsOld(
"Cosserat_rotations")),
37 _curvature_old(getMaterialPropertyOld<
RankTwoTensor>(
"curvature")),
38 _curvature_increment(declareProperty<
RankTwoTensor>(
"curvature_increment"))
41 mooseError(
"ComputeCosseratSmallStrain: This Material is only defined for 3-dimensional " 42 "simulations so 3 Cosserat rotation variables are needed");
63 for (
unsigned i = 0; i < LIBMESH_DIM; ++i)
64 for (
unsigned j = 0;
j < LIBMESH_DIM; ++
j)
65 for (
unsigned k = 0;
k < LIBMESH_DIM; ++
k)
75 const RankTwoTensor total_strain_increment = strain - strain_old;
int eps(unsigned int i, unsigned int j)
const MaterialProperty< RankTwoTensor > & _total_strain_old
const std::vector< const VariableValue * > _wc
The Cosserat rotations.
MaterialProperty< RankTwoTensor > & _deformation_gradient
ComputeCosseratIncrementalSmallStrain(const InputParameters ¶meters)
MaterialProperty< RankTwoTensor > & _curvature_increment
_curvature_increment = (curvature - _curvature_old)
const std::vector< const VariableGradient * > _grad_wc_old
Grad(Cosserat rotation)
MaterialProperty< RankTwoTensor > & _curvature
the Cosserat curvature strain: curvature_ij = nabla_j CosseratRotation_i
MaterialProperty< RankTwoTensor > & _strain_increment
static RankTwoTensorTempl initializeFromRows(const libMesh::TypeVector< Real > &row0, const libMesh::TypeVector< Real > &row1, const libMesh::TypeVector< Real > &row2)
static InputParameters validParams()
virtual void initQpStatefulProperties() override
virtual void computeQpProperties()
static InputParameters validParams()
MaterialProperty< RankTwoTensor > & _mechanical_strain
ComputeCosseratIncrementalSmallStrain defines various incremental versions of the Cossserat strain te...
MaterialProperty< RankTwoTensor > & _strain_rate
const unsigned int _nrots
the number of Cosserat rotation variables supplied by the user (must be 3 in current implementation) ...
void subtractEigenstrainIncrementFromStrain(RankTwoTensor &strain)
registerMooseObject("SolidMechanicsApp", ComputeCosseratIncrementalSmallStrain)
virtual void initQpStatefulProperties()
const MaterialProperty< RankTwoTensor > & _mechanical_strain_old
std::vector< const VariableGradient * > _grad_disp_old
const MaterialProperty< RankTwoTensor > & _curvature_old
the Cosserat curvature strain: curvature_ij = nabla_j CosseratRotation_i
void mooseError(Args &&... args) const
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
ComputeIncrementalStrainBase is the base class for strain tensors using incremental formulations...
const std::vector< const VariableValue * > _wc_old
The Cosserat rotations.
MaterialProperty< RankTwoTensor > & _rotation_increment
MaterialProperty< RankTwoTensor > & _total_strain
static const std::string k
const std::vector< const VariableGradient * > _grad_wc
Grad(Cosserat rotation)
std::vector< const VariableGradient * > _grad_disp
Gradient of displacements.