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

ComputeSmallStrain defines a strain tensor, assuming small strains. More...

#include <ComputeSmallStrain.h>

Inheritance diagram for ComputeSmallStrain:
[legend]

Public Member Functions

 ComputeSmallStrain (const InputParameters &parameters)
 
virtual void computeProperties () override
 
void initialSetup () override
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

virtual void initQpStatefulProperties () override
 
virtual void displacementIntegrityCheck ()
 

Protected Attributes

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

ComputeSmallStrain defines a strain tensor, assuming small strains.

Definition at line 22 of file ComputeSmallStrain.h.

Constructor & Destructor Documentation

◆ ComputeSmallStrain()

ComputeSmallStrain::ComputeSmallStrain ( const InputParameters &  parameters)

Definition at line 26 of file ComputeSmallStrain.C.

27  : ComputeStrainBase(parameters)
28 {
29 }

Member Function Documentation

◆ computeProperties()

void ComputeSmallStrain::computeProperties ( )
overridevirtual

Reimplemented in Compute2DSmallStrain, Compute1DSmallStrain, and ComputeRSphericalSmallStrain.

Definition at line 32 of file ComputeSmallStrain.C.

33 {
34  Real volumetric_strain = 0.0;
35  for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
36  {
37  // strain = (grad_disp + grad_disp^T)/2
38  RankTwoTensor grad_tensor((*_grad_disp[0])[_qp], (*_grad_disp[1])[_qp], (*_grad_disp[2])[_qp]);
39 
40  _total_strain[_qp] = (grad_tensor + grad_tensor.transpose()) / 2.0;
41 
43  volumetric_strain += _total_strain[_qp].trace() * _JxW[_qp] * _coord[_qp];
44  }
45 
47  volumetric_strain /= _current_elem_volume;
48 
49  for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
50  {
52  {
53  Real trace = _total_strain[_qp].trace();
54  _total_strain[_qp](0, 0) += (volumetric_strain - trace) / 3.0;
55  _total_strain[_qp](1, 1) += (volumetric_strain - trace) / 3.0;
56  _total_strain[_qp](2, 2) += (volumetric_strain - trace) / 3.0;
57  }
58 
59  if (_global_strain)
60  _total_strain[_qp] += (*_global_strain)[_qp];
61 
63 
64  // Remove the Eigen strain
65  for (auto es : _eigenstrains)
66  _mechanical_strain[_qp] -= (*es)[_qp];
67  }
68 }

◆ 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 ComputeSmallStrain::validParams ( )
static

Definition at line 19 of file ComputeSmallStrain.C.

20 {
21  InputParameters params = ComputeStrainBase::validParams();
22  params.addClassDescription("Compute a small strain.");
23  return params;
24 }

Referenced by Compute1DSmallStrain::validParams(), ComputeRSphericalSmallStrain::validParams(), and Compute2DSmallStrain::validParams().

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

◆ _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

Definition at line 53 of file ComputeStrainBase.h.

Referenced by computeProperties(), and ComputeFiniteStrain::computeQpStrain().

◆ _grad_disp

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

◆ _mechanical_strain

MaterialProperty<RankTwoTensor>& ComputeStrainBase::_mechanical_strain
protectedinherited

◆ _ndisp

unsigned int ComputeStrainBase::_ndisp
protectedinherited

◆ _total_strain

MaterialProperty<RankTwoTensor>& ComputeStrainBase::_total_strain
protectedinherited

◆ _volumetric_locking_correction

const bool ComputeStrainBase::_volumetric_locking_correction
protectedinherited

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::_current_elem_volume
const Real & _current_elem_volume
Definition: ComputeStrainBase.h:56
ComputeStrainBase::_disp
std::vector< const VariableValue * > _disp
Definition: ComputeStrainBase.h:41
ComputeStrainBase::_ndisp
unsigned int _ndisp
Coupled displacement variables.
Definition: ComputeStrainBase.h:40
ComputeStrainBase::_mechanical_strain
MaterialProperty< RankTwoTensor > & _mechanical_strain
Definition: ComputeStrainBase.h:46
ComputeStrainBase::_global_strain
const MaterialProperty< RankTwoTensor > * _global_strain
Definition: ComputeStrainBase.h:53
ComputeStrainBase::validParams
static InputParameters validParams()
Definition: ComputeStrainBase.C:17
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::_volumetric_locking_correction
const bool _volumetric_locking_correction
Definition: ComputeStrainBase.h:55
ComputeStrainBase::_grad_disp
std::vector< const VariableGradient * > _grad_disp
Definition: ComputeStrainBase.h:42