www.mooseframework.org
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ADComputeSmallStrain< compute_stage > Class Template Reference

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

#include <ADComputeSmallStrain.h>

Inheritance diagram for ADComputeSmallStrain< compute_stage >:
[legend]

Public Member Functions

 ADComputeSmallStrain (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 ()
 
 ADMaterialProperty (RankTwoTensor) &_mechanical_strain
 
 ADMaterialProperty (RankTwoTensor) &_total_strain
 
const ADMaterialProperty (RankTwoTensor) *_global_strain
 

Protected Attributes

 usingComputeStrainBaseMembers
 
const unsigned int _ndisp
 Coupled displacement variables. More...
 
std::vector< const ADVariableValue * > _disp
 
std::vector< const ADVariableGradient * > _grad_disp
 
const std::string _base_name
 
std::vector< MaterialPropertyName > _eigenstrain_names
 
std::vector< const ADMaterialProperty(RankTwoTensor) * > _eigenstrains
 
const bool _volumetric_locking_correction
 
const Real & _current_elem_volume
 
 usingMaterialMembers
 

Detailed Description

template<ComputeStage compute_stage>
class ADComputeSmallStrain< compute_stage >

ADComputeSmallStrain defines a strain tensor, assuming small strains.

Definition at line 17 of file ADComputeSmallStrain.h.

Constructor & Destructor Documentation

◆ ADComputeSmallStrain()

template<ComputeStage compute_stage>
ADComputeSmallStrain< compute_stage >::ADComputeSmallStrain ( const InputParameters &  parameters)

Definition at line 27 of file ADComputeSmallStrain.C.

29 {
30 }

Member Function Documentation

◆ ADMaterialProperty() [1/3]

template<ComputeStage compute_stage>
ADComputeStrainBase< compute_stage >::ADMaterialProperty ( RankTwoTensor  ) &
protectedinherited

◆ ADMaterialProperty() [2/3]

template<ComputeStage compute_stage>
ADComputeStrainBase< compute_stage >::ADMaterialProperty ( RankTwoTensor  ) &
protectedinherited

◆ ADMaterialProperty() [3/3]

template<ComputeStage compute_stage>
const ADComputeStrainBase< compute_stage >::ADMaterialProperty ( RankTwoTensor  )
protectedinherited

◆ computeProperties()

template<ComputeStage compute_stage>
void ADComputeSmallStrain< compute_stage >::computeProperties ( )
overridevirtual

Reimplemented in ADCompute2DSmallStrain< compute_stage >, ADCompute1DSmallStrain< compute_stage >, and ADComputeRSphericalSmallStrain< compute_stage >.

Definition at line 34 of file ADComputeSmallStrain.C.

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

◆ displacementIntegrityCheck()

template<ComputeStage compute_stage>
void ADComputeStrainBase< compute_stage >::displacementIntegrityCheck ( )
protectedvirtualinherited

Reimplemented in ADCompute2DFiniteStrain< compute_stage >, ADCompute2DIncrementalStrain< compute_stage >, and ADCompute2DSmallStrain< compute_stage >.

Definition at line 93 of file ADComputeStrainBase.C.

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

◆ initialSetup()

template<ComputeStage compute_stage>
void ADComputeStrainBase< compute_stage >::initialSetup ( )
overrideinherited

Definition at line 73 of file ADComputeStrainBase.C.

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

Referenced by ADComputeIncrementalStrainBase< compute_stage >::initialSetup().

◆ initQpStatefulProperties()

template<ComputeStage compute_stage>
void ADComputeStrainBase< compute_stage >::initQpStatefulProperties ( )
overrideprotectedvirtualinherited

Reimplemented in ADComputeIncrementalStrainBase< compute_stage >.

Definition at line 104 of file ADComputeStrainBase.C.

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

◆ validParams()

template<ComputeStage compute_stage>
InputParameters ADComputeSmallStrain< compute_stage >::validParams ( )
static

Definition at line 19 of file ADComputeSmallStrain.C.

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

Referenced by ADComputeRSphericalSmallStrain< compute_stage >::validParams(), ADCompute1DSmallStrain< compute_stage >::validParams(), and ADCompute2DSmallStrain< compute_stage >::validParams().

Member Data Documentation

◆ _base_name

template<ComputeStage compute_stage>
const std::string ADComputeStrainBase< compute_stage >::_base_name
protectedinherited

◆ _current_elem_volume

template<ComputeStage compute_stage>
const Real& ADComputeStrainBase< compute_stage >::_current_elem_volume
protectedinherited

Definition at line 71 of file ADComputeStrainBase.h.

◆ _disp

template<ComputeStage compute_stage>
std::vector<const ADVariableValue *> ADComputeStrainBase< compute_stage >::_disp
protectedinherited

Definition at line 57 of file ADComputeStrainBase.h.

◆ _eigenstrain_names

template<ComputeStage compute_stage>
std::vector<MaterialPropertyName> ADComputeStrainBase< compute_stage >::_eigenstrain_names
protectedinherited

◆ _eigenstrains

template<ComputeStage compute_stage>
std::vector<const ADMaterialProperty(RankTwoTensor) *> ADComputeStrainBase< compute_stage >::_eigenstrains
protectedinherited

◆ _grad_disp

template<ComputeStage compute_stage>
std::vector<const ADVariableGradient *> ADComputeStrainBase< compute_stage >::_grad_disp
protectedinherited

Definition at line 58 of file ADComputeStrainBase.h.

◆ _ndisp

template<ComputeStage compute_stage>
const unsigned int ADComputeStrainBase< compute_stage >::_ndisp
protectedinherited

Coupled displacement variables.

Definition at line 56 of file ADComputeStrainBase.h.

Referenced by ADComputeStrainBase< compute_stage >::ADComputeStrainBase().

◆ _volumetric_locking_correction

template<ComputeStage compute_stage>
const bool ADComputeStrainBase< compute_stage >::_volumetric_locking_correction
protectedinherited

◆ usingComputeStrainBaseMembers

template<ComputeStage compute_stage>
ADComputeSmallStrain< compute_stage >::usingComputeStrainBaseMembers
protected

Definition at line 35 of file ADComputeSmallStrain.h.

◆ usingMaterialMembers

template<ComputeStage compute_stage>
ADComputeStrainBase< compute_stage >::usingMaterialMembers
protectedinherited

Definition at line 73 of file ADComputeStrainBase.h.


The documentation for this class was generated from the following files:
ADComputeStrainBase::_current_elem_volume
const Real & _current_elem_volume
Definition: ADComputeStrainBase.h:71
ADComputeStrainBase::_eigenstrains
std::vector< const ADMaterialProperty(RankTwoTensor) * > _eigenstrains
Definition: ADComputeStrainBase.h:66
ADComputeStrainBase::_disp
std::vector< const ADVariableValue * > _disp
Definition: ADComputeStrainBase.h:57
ADComputeStrainBase::_grad_disp
std::vector< const ADVariableGradient * > _grad_disp
Definition: ADComputeStrainBase.h:58
ADComputeStrainBase
ADADComputeStrainBase is the base class for strain tensors.
Definition: ADComputeStrainBase.h:30
ADComputeStrainBase::displacementIntegrityCheck
virtual void displacementIntegrityCheck()
Definition: ADComputeStrainBase.C:93
ADComputeStrainBase::validParams
static InputParameters validParams()
Definition: ADComputeStrainBase.C:19
ADComputeStrainBase::_ndisp
const unsigned int _ndisp
Coupled displacement variables.
Definition: ADComputeStrainBase.h:56
ADComputeStrainBase::_volumetric_locking_correction
const bool _volumetric_locking_correction
Definition: ADComputeStrainBase.h:70