Go to the documentation of this file.
13 #include "PermutationTensor.h"
15 #include "libmesh/quadrature.h"
25 params.addClassDescription(
"Compute incremental small Cosserat strains");
26 params.addRequiredCoupledVar(
"Cosserat_rotations",
"The 3 Cosserat rotation variables");
31 const InputParameters & parameters)
34 _nrots(coupledComponents(
"Cosserat_rotations")),
39 _curvature_old(getMaterialPropertyOld<
RankTwoTensor>(
"curvature")),
40 _curvature_increment(declareProperty<
RankTwoTensor>(
"curvature_increment"))
43 mooseError(
"ComputeCosseratSmallStrain: This Material is only defined for 3-dimensional "
44 "simulations so 3 Cosserat rotation variables are needed");
45 for (
unsigned i = 0; i <
_nrots; ++i)
47 _wc[i] = &coupledValue(
"Cosserat_rotations", i);
48 _wc_old[i] = &coupledValueOld(
"Cosserat_rotations", i);
49 _grad_wc[i] = &coupledGradient(
"Cosserat_rotations", i);
50 _grad_wc_old[i] = &coupledGradientOld(
"Cosserat_rotations", i);
68 RealVectorValue wc_vector((*
_wc[0])[_qp], (*
_wc[1])[_qp], (*
_wc[2])[_qp]);
71 for (
unsigned i = 0; i < LIBMESH_DIM; ++i)
72 for (
unsigned j = 0; j < LIBMESH_DIM; ++j)
73 for (
unsigned k = 0; k < LIBMESH_DIM; ++k)
75 strain(i, j) += PermutationTensor::eps(i, j, k) * wc_vector(k);
76 strain_old(i, j) += PermutationTensor::eps(i, j, k) * wc_vector_old(k);
82 const RankTwoTensor total_strain_increment = strain - strain_old;
ComputeCosseratIncrementalSmallStrain defines various incremental versions of the Cossserat strain te...
virtual void initQpStatefulProperties() override
std::vector< const VariableGradient * > _grad_wc_old
Grad(Cosserat rotation)
virtual void initQpStatefulProperties()
MaterialProperty< RankTwoTensor > & _strain_rate
defineLegacyParams(ComputeCosseratIncrementalSmallStrain)
static InputParameters validParams()
void subtractEigenstrainIncrementFromStrain(RankTwoTensor &strain)
const unsigned int _nrots
the number of Cosserat rotation variables supplied by the user (must be 3 in current implementation)
const MaterialProperty< RankTwoTensor > & _mechanical_strain_old
std::vector< const VariableGradient * > _grad_disp_old
MaterialProperty< RankTwoTensor > & _curvature
the Cosserat curvature strain: curvature_ij = nabla_j CosseratRotation_i
MaterialProperty< RankTwoTensor > & _rotation_increment
ComputeCosseratIncrementalSmallStrain(const InputParameters ¶meters)
MaterialProperty< RankTwoTensor > & _curvature_increment
_curvature_increment = (curvature - _curvature_old)
MaterialProperty< RankTwoTensor > & _mechanical_strain
std::vector< const VariableGradient * > _grad_wc
Grad(Cosserat rotation)
const MaterialProperty< RankTwoTensor > & _total_strain_old
MaterialProperty< RankTwoTensor > & _deformation_gradient
ComputeIncrementalStrainBase is the base class for strain tensors using incremental formulations.
const MaterialProperty< RankTwoTensor > & _curvature_old
the Cosserat curvature strain: curvature_ij = nabla_j CosseratRotation_i
registerMooseObject("TensorMechanicsApp", ComputeCosseratIncrementalSmallStrain)
virtual void computeQpProperties()
std::vector< const VariableValue * > _wc_old
The Cosserat rotations.
MaterialProperty< RankTwoTensor > & _total_strain
static InputParameters validParams()
MaterialProperty< RankTwoTensor > & _strain_increment
std::vector< const VariableGradient * > _grad_disp
std::vector< const VariableValue * > _wc
The Cosserat rotations.