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

ADStressDivergenceRZTensors is the automatic differentiation version of StressDivergenceRZTensors. More...

#include <ADStressDivergenceRZTensors.h>

Inheritance diagram for ADStressDivergenceRZTensors< compute_stage >:
[legend]

Public Member Functions

 ADStressDivergenceRZTensors (const InputParameters &parameters)
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

void initialSetup () override
 
ADReal computeQpResidual () override
 
void precalculateResidual () override
 
const ADMaterialProperty (RankTwoTensor) &_stress
 

Protected Attributes

 usingStressDivergenceTensorsMembers
 
const std::string _base_name
 
const unsigned int _component
 
const unsigned int _ndisp
 Coupled displacement variables. More...
 
std::vector< unsigned int > _disp_var
 
std::vector< ADReal > _avg_grad_test
 Gradient of test function averaged over the element. Used in volumetric locking correction calculation. More...
 
const bool _volumetric_locking_correction
 Flag for volumetric locking correction. More...
 
 usingKernelMembers
 

Detailed Description

template<ComputeStage compute_stage>
class ADStressDivergenceRZTensors< compute_stage >

ADStressDivergenceRZTensors is the automatic differentiation version of StressDivergenceRZTensors.

Within this kernel the first component of the displacements refers to displacement in the radial direction and the second component refers to displacement in the axial direction. The COORD_TYPE in the Problem block must be set to RZ.

Definition at line 16 of file ADStressDivergenceRZTensors.h.

Constructor & Destructor Documentation

◆ ADStressDivergenceRZTensors()

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

Definition at line 37 of file ADStressDivergenceRZTensors.C.

40 {
41 }

Member Function Documentation

◆ ADMaterialProperty()

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

◆ computeQpResidual()

template<ComputeStage compute_stage>
ADReal ADStressDivergenceRZTensors< compute_stage >::computeQpResidual ( )
overrideprotected

Definition at line 54 of file ADStressDivergenceRZTensors.C.

55 {
56  ADReal div = 0.0;
57  if (_component == 0)
58  {
59  div = _grad_test[_i][_qp](0) * _stress[_qp](0, 0) +
60  (_test[_i][_qp] / _ad_q_point[_qp](0)) * _stress[_qp](2, 2) +
61  _grad_test[_i][_qp](1) * _stress[_qp](0, 1); // stress_{rz}
62 
63  // volumetric locking correction
65  div += (_avg_grad_test[_i] - _grad_test[_i][_qp](0) - _test[_i][_qp] / _ad_q_point[_qp](0)) *
66  (_stress[_qp].trace()) / 3.0;
67  }
68  else if (_component == 1)
69  {
70  div = _grad_test[_i][_qp](1) * _stress[_qp](1, 1) +
71  _grad_test[_i][_qp](0) * _stress[_qp](1, 0); // stress_{zr}
72 
73  // volumetric locking correction
75  div += (_avg_grad_test[_i] - _grad_test[_i][_qp](1)) * (_stress[_qp].trace()) / 3.0;
76  }
77  else
78  mooseError("Invalid component for this AxisymmetricRZ problem.");
79 
80  return div;
81 }

◆ initialSetup()

template<ComputeStage compute_stage>
void ADStressDivergenceRZTensors< compute_stage >::initialSetup ( )
overrideprotected

Definition at line 45 of file ADStressDivergenceRZTensors.C.

46 {
47  if (getBlockCoordSystem() != Moose::COORD_RZ)
48  mooseError("The coordinate system in the Problem block must be set to RZ for axisymmetric "
49  "geometries.");
50 }

◆ precalculateResidual()

template<ComputeStage compute_stage>
void ADStressDivergenceRZTensors< compute_stage >::precalculateResidual ( )
overrideprotected

Definition at line 85 of file ADStressDivergenceRZTensors.C.

86 {
88  return;
89 
90  ADReal ad_current_elem_volume = 0.0;
91  for (unsigned int qp = 0; qp < _qrule->n_points(); qp++)
92  ad_current_elem_volume += _ad_JxW[qp] * _ad_coord[qp];
93 
94  // calculate volume averaged value of shape function derivative
95  _avg_grad_test.resize(_test.size());
96  for (_i = 0; _i < _test.size(); ++_i)
97  {
98  _avg_grad_test[_i] = 0.0;
99  for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
100  {
101  if (_component == 0)
102  _avg_grad_test[_i] +=
103  (_grad_test[_i][_qp](_component) + _test[_i][_qp] / _ad_q_point[_qp](0)) *
104  _ad_JxW[_qp] * _ad_coord[_qp];
105  else
106  _avg_grad_test[_i] += _grad_test[_i][_qp](_component) * _ad_JxW[_qp] * _ad_coord[_qp];
107  }
108  _avg_grad_test[_i] /= ad_current_elem_volume;
109  }
110 }

◆ validParams()

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

Definition at line 22 of file ADStressDivergenceRZTensors.C.

23 {
25  params.addClassDescription(
26  "Calculate stress divergence for an axisymmetric problem in cylindrical coordinates.");
27  params.addRequiredRangeCheckedParam<unsigned int>(
28  "component",
29  "component < 2",
30  "An integer corresponding to the direction the variable this kernel acts in. (0 "
31  "refers to the radial and 1 to the axial displacement.)");
32  params.set<bool>("use_displaced_mesh") = true;
33  return params;
34 }

Member Data Documentation

◆ _avg_grad_test

template<ComputeStage compute_stage>
std::vector<ADReal> ADStressDivergenceTensors< compute_stage >::_avg_grad_test
protectedinherited

Gradient of test function averaged over the element. Used in volumetric locking correction calculation.

Definition at line 61 of file ADStressDivergenceTensors.h.

◆ _base_name

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

Definition at line 51 of file ADStressDivergenceTensors.h.

◆ _component

template<ComputeStage compute_stage>
const unsigned int ADStressDivergenceTensors< compute_stage >::_component
protectedinherited

◆ _disp_var

template<ComputeStage compute_stage>
std::vector<unsigned int> ADStressDivergenceTensors< compute_stage >::_disp_var
protectedinherited

◆ _ndisp

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

Coupled displacement variables.

Definition at line 57 of file ADStressDivergenceTensors.h.

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

◆ _volumetric_locking_correction

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

Flag for volumetric locking correction.

Definition at line 64 of file ADStressDivergenceTensors.h.

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

◆ usingKernelMembers

template<ComputeStage compute_stage>
ADStressDivergenceTensors< compute_stage >::usingKernelMembers
protectedinherited

Definition at line 66 of file ADStressDivergenceTensors.h.

◆ usingStressDivergenceTensorsMembers

template<ComputeStage compute_stage>
ADStressDivergenceRZTensors< compute_stage >::usingStressDivergenceTensorsMembers
protected

Definition at line 40 of file ADStressDivergenceRZTensors.h.


The documentation for this class was generated from the following files:
ADStressDivergenceTensors
ADStressDivergenceTensors is the automatic differentiation version of StressDivergenceTensors.
Definition: ADStressDivergenceTensors.h:26
ADStressDivergenceTensors::_volumetric_locking_correction
const bool _volumetric_locking_correction
Flag for volumetric locking correction.
Definition: ADStressDivergenceTensors.h:64
ADStressDivergenceTensors::_avg_grad_test
std::vector< ADReal > _avg_grad_test
Gradient of test function averaged over the element. Used in volumetric locking correction calculatio...
Definition: ADStressDivergenceTensors.h:61
ADStressDivergenceTensors::validParams
static InputParameters validParams()
Definition: ADStressDivergenceTensors.C:20
ADStressDivergenceTensors::_component
const unsigned int _component
Definition: ADStressDivergenceTensors.h:54