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");
60 RealVectorValue wc_vector((*
_wc[0])[_qp], (*
_wc[1])[_qp], (*
_wc[2])[_qp]);
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;
registerMooseObject("SolidMechanicsApp", ComputeCosseratIncrementalSmallStrain)
void mooseError(Args &&... args)
ComputeCosseratIncrementalSmallStrain defines various incremental versions of the Cossserat strain te...
virtual void computeQpProperties()
MaterialProperty< RankTwoTensor > & _curvature
the Cosserat curvature strain: curvature_ij = nabla_j CosseratRotation_i
const unsigned int _nrots
the number of Cosserat rotation variables supplied by the user (must be 3 in current implementation)
const std::vector< const VariableGradient * > _grad_wc
Grad(Cosserat rotation)
const std::vector< const VariableValue * > _wc
The Cosserat rotations.
MaterialProperty< RankTwoTensor > & _curvature_increment
_curvature_increment = (curvature - _curvature_old)
virtual void initQpStatefulProperties()
const MaterialProperty< RankTwoTensor > & _curvature_old
the Cosserat curvature strain: curvature_ij = nabla_j CosseratRotation_i
static InputParameters validParams()
const std::vector< const VariableGradient * > _grad_wc_old
Grad(Cosserat rotation)
ComputeCosseratIncrementalSmallStrain(const InputParameters ¶meters)
const std::vector< const VariableValue * > _wc_old
The Cosserat rotations.
ComputeIncrementalStrainBase is the base class for strain tensors using incremental formulations.
MaterialProperty< RankTwoTensor > & _strain_rate
std::vector< const VariableGradient * > _grad_disp_old
const MaterialProperty< RankTwoTensor > & _mechanical_strain_old
void subtractEigenstrainIncrementFromStrain(RankTwoTensor &strain)
MaterialProperty< RankTwoTensor > & _rotation_increment
MaterialProperty< RankTwoTensor > & _strain_increment
MaterialProperty< RankTwoTensor > & _deformation_gradient
static InputParameters validParams()
virtual void initQpStatefulProperties() override
const MaterialProperty< RankTwoTensor > & _total_strain_old
std::vector< const VariableGradient * > _grad_disp
Gradient of displacements.
MaterialProperty< RankTwoTensor > & _mechanical_strain
MaterialProperty< RankTwoTensor > & _total_strain
static RankTwoTensorTempl initializeFromRows(const libMesh::TypeVector< T > &row0, const libMesh::TypeVector< T > &row1, const libMesh::TypeVector< T > &row2)
int eps(unsigned int i, unsigned int j)