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

ADStressDivergenceTensors is the automatic differentiation version of StressDivergenceTensors. More...

#include <ADStressDivergenceTensors.h>

Inheritance diagram for ADStressDivergenceTensors< compute_stage >:
[legend]

Public Member Functions

 ADStressDivergenceTensors (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

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 ADStressDivergenceTensors< compute_stage >

ADStressDivergenceTensors is the automatic differentiation version of StressDivergenceTensors.

Definition at line 26 of file ADStressDivergenceTensors.h.

Constructor & Destructor Documentation

◆ ADStressDivergenceTensors()

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

Definition at line 40 of file ADStressDivergenceTensors.C.

42  : ADKernel<compute_stage>(parameters),
43  _base_name(isParamValid("base_name") ? getParam<std::string>("base_name") + "_" : ""),
44  _stress(getADMaterialProperty<RankTwoTensor>(_base_name + "stress")),
45  _component(getParam<unsigned int>("component")),
46  _ndisp(coupledComponents("displacements")),
49  _volumetric_locking_correction(getParam<bool>("volumetric_locking_correction"))
50 {
51  for (unsigned int i = 0; i < _ndisp; ++i)
52  // the next line should be _disp_var[i] = coupled("displacements", i);
53  // but the Coupleable:: is required to avoid triggering an internal Intel compiler bug
54  _disp_var[i] = Coupleable::coupled("displacements", i);
55 
56  // Error if volumetric locking correction is turned on for 1D problems
58  mooseError("Volumetric locking correction should be set to false for 1-D problems.");
59 }

Member Function Documentation

◆ ADMaterialProperty()

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

◆ computeQpResidual()

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

Definition at line 72 of file ADStressDivergenceTensors.C.

73 {
74  ADReal residual = _stress[_qp].row(_component) * _grad_test[_i][_qp];
75 
76  // volumetric locking correction
78  residual += (_avg_grad_test[_i] - _grad_test[_i][_qp](_component)) / 3.0 * _stress[_qp].trace();
79 
80  return residual;
81 }

◆ initialSetup()

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

Definition at line 63 of file ADStressDivergenceTensors.C.

64 {
65  if (getBlockCoordSystem() != Moose::COORD_XYZ)
66  mooseError(
67  "The coordinate system in the Problem block must be set to XYZ for cartesian geometries.");
68 }

◆ precalculateResidual()

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

Definition at line 85 of file ADStressDivergenceTensors.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  _avg_grad_test[_i] += _grad_test[_i][_qp](_component) * _ad_JxW[_qp] * _ad_coord[_qp];
101 
102  _avg_grad_test[_i] /= ad_current_elem_volume;
103  }
104 }

◆ validParams()

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

Definition at line 20 of file ADStressDivergenceTensors.C.

21 {
22  InputParameters params = ADKernel<compute_stage>::validParams();
23  params.addClassDescription("Stress divergence kernel with automatic differentiation for the "
24  "Cartesian coordinate system");
25  params.addRequiredParam<unsigned int>("component",
26  "An integer corresponding to the direction "
27  "the variable this kernel acts in. (0 for x, "
28  "1 for y, 2 for z)");
29  params.addRequiredCoupledVar("displacements",
30  "The string of displacements suitable for the problem statement");
31  params.addParam<std::string>("base_name", "Material property base name");
32  params.set<bool>("use_displaced_mesh") = false;
33  params.addParam<bool>("volumetric_locking_correction",
34  false,
35  "Set to false to turn off volumetric locking correction");
36  return params;
37 }

Referenced by ADDynamicStressDivergenceTensors< compute_stage >::validParams(), ADStressDivergenceRZTensors< compute_stage >::validParams(), and ADStressDivergenceRSphericalTensors< compute_stage >::validParams().

Member Data Documentation

◆ _avg_grad_test

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

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
protected

Definition at line 51 of file ADStressDivergenceTensors.h.

◆ _component

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

◆ _disp_var

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

◆ _ndisp

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

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
protected

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
protected

Definition at line 66 of file ADStressDivergenceTensors.h.


The documentation for this class was generated from the following files:
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::_base_name
const std::string _base_name
Definition: ADStressDivergenceTensors.h:51
ADStressDivergenceTensors::_ndisp
const unsigned int _ndisp
Coupled displacement variables.
Definition: ADStressDivergenceTensors.h:57
ADStressDivergenceTensors::_component
const unsigned int _component
Definition: ADStressDivergenceTensors.h:54
ADStressDivergenceTensors::_disp_var
std::vector< unsigned int > _disp_var
Definition: ADStressDivergenceTensors.h:58
validParams
InputParameters validParams()