Go to the documentation of this file.
13 #include "PermutationTensor.h"
15 #include "libmesh/quadrature.h"
25 params.addClassDescription(
"Compute small Cosserat strains");
26 params.addRequiredCoupledVar(
"Cosserat_rotations",
"The 3 Cosserat rotation variables");
33 _nrots(coupledComponents(
"Cosserat_rotations")),
38 mooseError(
"ComputeCosseratSmallStrain: This Material is only defined for 3-dimensional "
39 "simulations so 3 Cosserat rotation variables are needed");
40 for (
unsigned i = 0; i <
_nrots; ++i)
42 _wc[i] = &coupledValue(
"Cosserat_rotations", i);
43 _grad_wc[i] = &coupledGradient(
"Cosserat_rotations", i);
51 RealVectorValue wc_vector((*
_wc[0])[_qp], (*
_wc[1])[_qp], (*
_wc[2])[_qp]);
53 for (
unsigned i = 0; i < LIBMESH_DIM; ++i)
54 for (
unsigned j = 0; j < LIBMESH_DIM; ++j)
55 for (
unsigned k = 0; k < LIBMESH_DIM; ++k)
56 strain(i, j) += PermutationTensor::eps(i, j, k) * wc_vector(k);
registerMooseObject("TensorMechanicsApp", ComputeCosseratSmallStrain)
ComputeCosseratSmallStrain(const InputParameters ¶meters)
ComputeStrainBase is the base class for strain tensors.
std::vector< const VariableGradient * > _grad_wc
Grad(Cosserat rotation)
MaterialProperty< RankTwoTensor > & _curvature
the Cosserat curvature strain: curvature_ij = nabla_j CosseratRotation_i
MaterialProperty< RankTwoTensor > & _mechanical_strain
RankTwoTensorTempl< Real > RankTwoTensor
static InputParameters validParams()
ComputeCosseratSmallStrain defines Cossserat strain tensor, assuming small strains.
static InputParameters validParams()
defineLegacyParams(ComputeCosseratSmallStrain)
const unsigned int _nrots
the number of Cosserat rotation variables supplied by the user (must be 3 in current implementation)
std::vector< const VariableValue * > _wc
The Cosserat rotations.
std::vector< const MaterialProperty< RankTwoTensor > * > _eigenstrains
virtual void computeQpProperties() override
MaterialProperty< RankTwoTensor > & _total_strain
std::vector< const VariableGradient * > _grad_disp