www.mooseframework.org
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ComputeCosseratSmallStrain Class Reference

ComputeCosseratSmallStrain defines Cossserat strain tensor, assuming small strains. More...

#include <ComputeCosseratSmallStrain.h>

Inheritance diagram for ComputeCosseratSmallStrain:
[legend]

Public Member Functions

 ComputeCosseratSmallStrain (const InputParameters &parameters)
 
void initialSetup () override
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

virtual void computeQpProperties () override
 
virtual void initQpStatefulProperties () override
 
virtual void displacementIntegrityCheck ()
 

Protected Attributes

MaterialProperty< RankTwoTensor > & _curvature
 the Cosserat curvature strain: curvature_ij = nabla_j CosseratRotation_i More...
 
const unsigned int _nrots
 the number of Cosserat rotation variables supplied by the user (must be 3 in current implementation) More...
 
std::vector< const VariableValue * > _wc
 The Cosserat rotations. More...
 
std::vector< const VariableGradient * > _grad_wc
 Grad(Cosserat rotation) More...
 
unsigned int _ndisp
 Coupled displacement variables. More...
 
std::vector< const VariableValue * > _disp
 
std::vector< const VariableGradient * > _grad_disp
 
const std::string _base_name
 
MaterialProperty< RankTwoTensor > & _mechanical_strain
 
MaterialProperty< RankTwoTensor > & _total_strain
 
std::vector< MaterialPropertyName > _eigenstrain_names
 
std::vector< const MaterialProperty< RankTwoTensor > * > _eigenstrains
 
const MaterialProperty< RankTwoTensor > * _global_strain
 
const bool _volumetric_locking_correction
 
const Real & _current_elem_volume
 

Detailed Description

ComputeCosseratSmallStrain defines Cossserat strain tensor, assuming small strains.

Definition at line 22 of file ComputeCosseratSmallStrain.h.

Constructor & Destructor Documentation

◆ ComputeCosseratSmallStrain()

ComputeCosseratSmallStrain::ComputeCosseratSmallStrain ( const InputParameters &  parameters)

Definition at line 30 of file ComputeCosseratSmallStrain.C.

31  : ComputeStrainBase(parameters),
32  _curvature(declareProperty<RankTwoTensor>("curvature")),
33  _nrots(coupledComponents("Cosserat_rotations")),
34  _wc(_nrots),
36 {
37  if (_nrots != 3)
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)
41  {
42  _wc[i] = &coupledValue("Cosserat_rotations", i);
43  _grad_wc[i] = &coupledGradient("Cosserat_rotations", i);
44  }
45 }

Member Function Documentation

◆ computeQpProperties()

void ComputeCosseratSmallStrain::computeQpProperties ( )
overrideprotectedvirtual

Definition at line 48 of file ComputeCosseratSmallStrain.C.

49 {
50  RankTwoTensor strain((*_grad_disp[0])[_qp], (*_grad_disp[1])[_qp], (*_grad_disp[2])[_qp]);
51  RealVectorValue wc_vector((*_wc[0])[_qp], (*_wc[1])[_qp], (*_wc[2])[_qp]);
52 
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);
57 
58  _total_strain[_qp] = strain;
59 
60  _mechanical_strain[_qp] = strain;
61  for (auto es : _eigenstrains)
62  _mechanical_strain[_qp] -= (*es)[_qp];
63 
64  _curvature[_qp] = RankTwoTensor((*_grad_wc[0])[_qp], (*_grad_wc[1])[_qp], (*_grad_wc[2])[_qp]);
65 }

◆ displacementIntegrityCheck()

void ComputeStrainBase::displacementIntegrityCheck ( )
protectedvirtualinherited

Reimplemented in Compute2DFiniteStrain, Compute2DIncrementalStrain, and Compute2DSmallStrain.

Definition at line 94 of file ComputeStrainBase.C.

95 {
96  // Checking for consistency between mesh size and length of the provided displacements vector
97  if (_ndisp != _mesh.dimension())
98  paramError(
99  "displacements",
100  "The number of variables supplied in 'displacements' must match the mesh dimension.");
101 }

Referenced by ComputeStrainBase::initialSetup().

◆ initialSetup()

void ComputeStrainBase::initialSetup ( )
overrideinherited

Definition at line 75 of file ComputeStrainBase.C.

76 {
78  // fetch coupled variables and gradients (as stateful properties if necessary)
79  for (unsigned int i = 0; i < _ndisp; ++i)
80  {
81  _disp[i] = &coupledValue("displacements", i);
82  _grad_disp[i] = &coupledGradient("displacements", i);
83  }
84 
85  // set unused dimensions to zero
86  for (unsigned i = _ndisp; i < 3; ++i)
87  {
88  _disp[i] = &_zero;
89  _grad_disp[i] = &_grad_zero;
90  }
91 }

Referenced by ComputeIncrementalStrainBase::initialSetup(), and ComputeAxisymmetric1DSmallStrain::initialSetup().

◆ initQpStatefulProperties()

void ComputeStrainBase::initQpStatefulProperties ( )
overrideprotectedvirtualinherited

Reimplemented in ComputeIncrementalStrainBase, and ComputeCosseratIncrementalSmallStrain.

Definition at line 104 of file ComputeStrainBase.C.

105 {
106  _mechanical_strain[_qp].zero();
107  _total_strain[_qp].zero();
108 }

◆ validParams()

InputParameters ComputeCosseratSmallStrain::validParams ( )
static

Definition at line 22 of file ComputeCosseratSmallStrain.C.

23 {
24  InputParameters params = ComputeStrainBase::validParams();
25  params.addClassDescription("Compute small Cosserat strains");
26  params.addRequiredCoupledVar("Cosserat_rotations", "The 3 Cosserat rotation variables");
27  return params;
28 }

Member Data Documentation

◆ _base_name

const std::string ComputeStrainBase::_base_name
protectedinherited

Definition at line 44 of file ComputeStrainBase.h.

Referenced by ComputeStrainBase::ComputeStrainBase().

◆ _current_elem_volume

const Real& ComputeStrainBase::_current_elem_volume
protectedinherited

◆ _curvature

MaterialProperty<RankTwoTensor>& ComputeCosseratSmallStrain::_curvature
protected

the Cosserat curvature strain: curvature_ij = nabla_j CosseratRotation_i

Definition at line 33 of file ComputeCosseratSmallStrain.h.

Referenced by computeQpProperties().

◆ _disp

std::vector<const VariableValue *> ComputeStrainBase::_disp
protectedinherited

◆ _eigenstrain_names

std::vector<MaterialPropertyName> ComputeStrainBase::_eigenstrain_names
protectedinherited

◆ _eigenstrains

std::vector<const MaterialProperty<RankTwoTensor> *> ComputeStrainBase::_eigenstrains
protectedinherited

◆ _global_strain

const MaterialProperty<RankTwoTensor>* ComputeStrainBase::_global_strain
protectedinherited

◆ _grad_disp

std::vector<const VariableGradient *> ComputeStrainBase::_grad_disp
protectedinherited

◆ _grad_wc

std::vector<const VariableGradient *> ComputeCosseratSmallStrain::_grad_wc
protected

Grad(Cosserat rotation)

Definition at line 42 of file ComputeCosseratSmallStrain.h.

Referenced by ComputeCosseratSmallStrain(), and computeQpProperties().

◆ _mechanical_strain

MaterialProperty<RankTwoTensor>& ComputeStrainBase::_mechanical_strain
protectedinherited

◆ _ndisp

unsigned int ComputeStrainBase::_ndisp
protectedinherited

◆ _nrots

const unsigned int ComputeCosseratSmallStrain::_nrots
protected

the number of Cosserat rotation variables supplied by the user (must be 3 in current implementation)

Definition at line 36 of file ComputeCosseratSmallStrain.h.

Referenced by ComputeCosseratSmallStrain().

◆ _total_strain

MaterialProperty<RankTwoTensor>& ComputeStrainBase::_total_strain
protectedinherited

◆ _volumetric_locking_correction

const bool ComputeStrainBase::_volumetric_locking_correction
protectedinherited

◆ _wc

std::vector<const VariableValue *> ComputeCosseratSmallStrain::_wc
protected

The Cosserat rotations.

Definition at line 39 of file ComputeCosseratSmallStrain.h.

Referenced by ComputeCosseratSmallStrain(), and computeQpProperties().


The documentation for this class was generated from the following files:
ComputeStrainBase::ComputeStrainBase
ComputeStrainBase(const InputParameters &parameters)
Definition: ComputeStrainBase.C:38
ComputeStrainBase::displacementIntegrityCheck
virtual void displacementIntegrityCheck()
Definition: ComputeStrainBase.C:94
ComputeStrainBase::_disp
std::vector< const VariableValue * > _disp
Definition: ComputeStrainBase.h:41
ComputeCosseratSmallStrain::_grad_wc
std::vector< const VariableGradient * > _grad_wc
Grad(Cosserat rotation)
Definition: ComputeCosseratSmallStrain.h:42
ComputeCosseratSmallStrain::_curvature
MaterialProperty< RankTwoTensor > & _curvature
the Cosserat curvature strain: curvature_ij = nabla_j CosseratRotation_i
Definition: ComputeCosseratSmallStrain.h:33
ComputeStrainBase::_ndisp
unsigned int _ndisp
Coupled displacement variables.
Definition: ComputeStrainBase.h:40
ComputeStrainBase::_mechanical_strain
MaterialProperty< RankTwoTensor > & _mechanical_strain
Definition: ComputeStrainBase.h:46
RankTwoTensor
RankTwoTensorTempl< Real > RankTwoTensor
Definition: ACGrGrElasticDrivingForce.h:17
ComputeStrainBase::validParams
static InputParameters validParams()
Definition: ComputeStrainBase.C:17
ComputeCosseratSmallStrain::_nrots
const unsigned int _nrots
the number of Cosserat rotation variables supplied by the user (must be 3 in current implementation)
Definition: ComputeCosseratSmallStrain.h:36
ComputeCosseratSmallStrain::_wc
std::vector< const VariableValue * > _wc
The Cosserat rotations.
Definition: ComputeCosseratSmallStrain.h:39
ComputeStrainBase::_eigenstrains
std::vector< const MaterialProperty< RankTwoTensor > * > _eigenstrains
Definition: ComputeStrainBase.h:51
RankTwoTensorTempl< Real >
ComputeStrainBase::_total_strain
MaterialProperty< RankTwoTensor > & _total_strain
Definition: ComputeStrainBase.h:48
ComputeStrainBase::_grad_disp
std::vector< const VariableGradient * > _grad_disp
Definition: ComputeStrainBase.h:42