15#include "libmesh/quadrature.h"
31 _nrots(coupledComponents(
"Cosserat_rotations")),
32 _wc(coupledValues(
"Cosserat_rotations")),
33 _grad_wc(coupledGradients(
"Cosserat_rotations"))
36 mooseError(
"ComputeCosseratSmallStrain: This Material is only defined for 3-dimensional "
37 "simulations so 3 Cosserat rotation variables are needed");
45 RealVectorValue wc_vector((*
_wc[0])[_qp], (*
_wc[1])[_qp], (*
_wc[2])[_qp]);
47 for (
unsigned i = 0; i < LIBMESH_DIM; ++i)
48 for (
unsigned j = 0; j < LIBMESH_DIM; ++j)
49 for (
unsigned k = 0; k < LIBMESH_DIM; ++k)
registerMooseObject("SolidMechanicsApp", ComputeCosseratSmallStrain)
void mooseError(Args &&... args)
ComputeCosseratSmallStrain defines Cossserat strain tensor, assuming small strains.
const unsigned int _nrots
the number of Cosserat rotation variables supplied by the user (must be 3 in current implementation)
static InputParameters validParams()
MaterialProperty< RankTwoTensor > & _curvature
the Cosserat curvature strain: curvature_ij = nabla_j CosseratRotation_i
const std::vector< const VariableValue * > _wc
The Cosserat rotations.
const std::vector< const VariableGradient * > _grad_wc
Grad(Cosserat rotation)
ComputeCosseratSmallStrain(const InputParameters ¶meters)
virtual void computeQpProperties() override
ComputeStrainBase is the base class for strain tensors.
std::vector< const VariableGradient * > _grad_disp
Gradient of displacements.
MaterialProperty< RankTwoTensor > & _mechanical_strain
std::vector< const MaterialProperty< RankTwoTensor > * > _eigenstrains
MaterialProperty< RankTwoTensor > & _total_strain
static InputParameters validParams()
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)