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

ADComputeAxisymmetricRZSmallStrain defines small strains in an Axisymmetric system. More...

#include <ADComputeAxisymmetricRZSmallStrain.h>

Inheritance diagram for ADComputeAxisymmetricRZSmallStrain< compute_stage >:
[legend]

Public Member Functions

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

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

virtual ADReal computeOutOfPlaneStrain () override
 
virtual void displacementIntegrityCheck () override
 
virtual void initQpStatefulProperties () override
 
 ADMaterialProperty (RankTwoTensor) &_mechanical_strain
 
 ADMaterialProperty (RankTwoTensor) &_total_strain
 
const ADMaterialProperty (RankTwoTensor) *_global_strain
 

Protected Attributes

 usingCompute2DSmallStrainMembers
 
const unsigned int _out_of_plane_direction
 
 usingComputeSmallStrainMembers
 
 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 ADComputeAxisymmetricRZSmallStrain< compute_stage >

ADComputeAxisymmetricRZSmallStrain defines small strains in an Axisymmetric system.

The COORD_TYPE in the Problem block must be set to RZ.

Definition at line 15 of file ADComputeAxisymmetricRZSmallStrain.h.

Constructor & Destructor Documentation

◆ ADComputeAxisymmetricRZSmallStrain()

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

Definition at line 28 of file ADComputeAxisymmetricRZSmallStrain.C.

31 {
32 }

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

◆ computeOutOfPlaneStrain()

template<ComputeStage compute_stage>
ADReal ADComputeAxisymmetricRZSmallStrain< compute_stage >::computeOutOfPlaneStrain ( )
overrideprotectedvirtual

Implements ADCompute2DSmallStrain< compute_stage >.

Definition at line 50 of file ADComputeAxisymmetricRZSmallStrain.C.

51 {
52  if (!MooseUtils::absoluteFuzzyEqual(_q_point[_qp](0), 0.0))
53  return (*_disp[0])[_qp] / _q_point[_qp](0);
54  else
55  return 0.0;
56 }

◆ computeProperties()

template<ComputeStage compute_stage>
void ADCompute2DSmallStrain< compute_stage >::computeProperties ( )
overridevirtualinherited

Reimplemented from ADComputeSmallStrain< compute_stage >.

Definition at line 57 of file ADCompute2DSmallStrain.C.

58 {
59  const auto o0 = _out_of_plane_direction;
60  const auto o1 = (_out_of_plane_direction + 1) % 3;
61  const auto o2 = (_out_of_plane_direction + 2) % 3;
62 
63  ADReal volumetric_strain = 0.0;
64  for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
65  {
66  _total_strain[_qp](o0, o0) = computeOutOfPlaneStrain();
67  _total_strain[_qp](o1, o1) = (*_grad_disp[o1])[_qp](o1);
68  _total_strain[_qp](o2, o2) = (*_grad_disp[o2])[_qp](o2);
69  _total_strain[_qp](o1, o2) = ((*_grad_disp[o1])[_qp](o2) + (*_grad_disp[o2])[_qp](o1)) / 2.0;
70  _total_strain[_qp](o2, o1) = _total_strain[_qp](o1, o2); // force the symmetrical strain tensor
71 
73  volumetric_strain += _total_strain[_qp].trace() * _JxW[_qp] * _coord[_qp];
74  }
75 
77  volumetric_strain /= _current_elem_volume;
78 
79  for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
80  {
82  {
83  const ADReal correction = (volumetric_strain - _total_strain[_qp].trace()) / 3.0;
84  _total_strain[_qp](0, 0) += correction;
85  _total_strain[_qp](1, 1) += correction;
86  _total_strain[_qp](2, 2) += correction;
87  }
88 
89  _mechanical_strain[_qp] = _total_strain[_qp];
90 
91  // Remove the eigenstrains
92  for (const auto es : _eigenstrains)
93  _mechanical_strain[_qp] -= (*es)[_qp];
94  }
95 
96  copyDualNumbersToValues();
97 }

◆ displacementIntegrityCheck()

template<ComputeStage compute_stage>
void ADCompute2DSmallStrain< compute_stage >::displacementIntegrityCheck ( )
overrideprotectedvirtualinherited

Reimplemented from ADComputeStrainBase< compute_stage >.

Definition at line 101 of file ADCompute2DSmallStrain.C.

102 {
103  if (_out_of_plane_direction != 2 && _ndisp != 3)
104  mooseError("For 2D simulations where the out-of-plane direction is x or y the number of "
105  "supplied displacements must be three.");
106  else if (_out_of_plane_direction == 2 && _ndisp != 2)
107  mooseError("For 2D simulations where the out-of-plane direction is z the number of supplied "
108  "displacements must be two.");
109 }

◆ initialSetup()

template<ComputeStage compute_stage>
void ADComputeAxisymmetricRZSmallStrain< compute_stage >::initialSetup ( )
overridevirtual

Definition at line 36 of file ADComputeAxisymmetricRZSmallStrain.C.

37 {
39 
40  if (getBlockCoordSystem() != Moose::COORD_RZ)
41  mooseError("The coordinate system must be set to RZ for Axisymmetric geometries.");
42 
43  if (_out_of_plane_direction != 2)
44  paramError("out_of_plane_direction",
45  "The out-of-plane direction for axisymmetric systems is currently restricted to z");
46 }

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

Definition at line 20 of file ADComputeAxisymmetricRZSmallStrain.C.

21 {
22  InputParameters params = ADCompute2DSmallStrain<compute_stage>::validParams();
23  params.addClassDescription("Compute a small strain in an Axisymmetric geometry");
24  return params;
25 }

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().

◆ _out_of_plane_direction

template<ComputeStage compute_stage>
const unsigned int ADCompute2DSmallStrain< compute_stage >::_out_of_plane_direction
protectedinherited

Definition at line 45 of file ADCompute2DSmallStrain.h.

◆ _volumetric_locking_correction

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

◆ usingCompute2DSmallStrainMembers

template<ComputeStage compute_stage>
ADComputeAxisymmetricRZSmallStrain< compute_stage >::usingCompute2DSmallStrainMembers
protected

Definition at line 36 of file ADComputeAxisymmetricRZSmallStrain.h.

◆ usingComputeSmallStrainMembers

template<ComputeStage compute_stage>
ADCompute2DSmallStrain< compute_stage >::usingComputeSmallStrainMembers
protectedinherited

Definition at line 47 of file ADCompute2DSmallStrain.h.

◆ usingComputeStrainBaseMembers

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

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:
ADCompute2DSmallStrain::computeOutOfPlaneStrain
virtual ADReal computeOutOfPlaneStrain()=0
ADCompute2DSmallStrain::_out_of_plane_direction
const unsigned int _out_of_plane_direction
Definition: ADCompute2DSmallStrain.h:45
ADCompute2DSmallStrain
ADCompute2DSmallStrain defines a strain tensor, assuming small strains, in 2D geometries / simulation...
Definition: ADCompute2DSmallStrain.h:20
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
ADCompute2DSmallStrain::initialSetup
void initialSetup() override
Definition: ADCompute2DSmallStrain.C:37
ADComputeStrainBase::_grad_disp
std::vector< const ADVariableGradient * > _grad_disp
Definition: ADComputeStrainBase.h:58
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
ADCompute2DSmallStrain::validParams
static InputParameters validParams()
Definition: ADCompute2DSmallStrain.C:18