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

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

#include <ComputeAxisymmetricRZSmallStrain.h>

Inheritance diagram for ComputeAxisymmetricRZSmallStrain:
[legend]

Public Member Functions

 ComputeAxisymmetricRZSmallStrain (const InputParameters &parameters)
 
virtual void initialSetup () override
 

Protected Member Functions

virtual Real computeOutOfPlaneStrain () override
 
virtual void computeProperties () override
 
virtual void displacementIntegrityCheck () override
 
virtual void initQpStatefulProperties () override
 

Protected Attributes

const unsigned int _out_of_plane_direction
 
unsigned int _ndisp
 Coupled displacement variables. More...
 
std::vector< const VariableValue * > _disp
 
std::vector< const VariableGradient * > _grad_disp
 
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
 
bool _volumetric_locking_correction
 
const Real & _current_elem_volume
 

Detailed Description

ComputeAxisymmetricRZSmallStrain defines small strains in an Axisymmetric system.

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

Definition at line 24 of file ComputeAxisymmetricRZSmallStrain.h.

Constructor & Destructor Documentation

◆ ComputeAxisymmetricRZSmallStrain()

ComputeAxisymmetricRZSmallStrain::ComputeAxisymmetricRZSmallStrain ( const InputParameters &  parameters)

Definition at line 25 of file ComputeAxisymmetricRZSmallStrain.C.

27  : Compute2DSmallStrain(parameters)
28 {
29 }
Compute2DSmallStrain(const InputParameters &parameters)

Member Function Documentation

◆ computeOutOfPlaneStrain()

Real ComputeAxisymmetricRZSmallStrain::computeOutOfPlaneStrain ( )
overrideprotectedvirtual

Implements Compute2DSmallStrain.

Definition at line 45 of file ComputeAxisymmetricRZSmallStrain.C.

46 {
47  if (!MooseUtils::absoluteFuzzyEqual(_q_point[_qp](0), 0.0))
48  return (*_disp[0])[_qp] / _q_point[_qp](0);
49  else
50  return 0.0;
51 }
std::vector< const VariableValue * > _disp

◆ computeProperties()

void Compute2DSmallStrain::computeProperties ( )
overrideprotectedvirtualinherited

Reimplemented from ComputeSmallStrain.

Definition at line 53 of file Compute2DSmallStrain.C.

54 {
55  const auto o0 = _out_of_plane_direction;
56  const auto o1 = (_out_of_plane_direction + 1) % 3;
57  const auto o2 = (_out_of_plane_direction + 2) % 3;
58 
59  Real volumetric_strain = 0.0;
60  for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
61  {
62  _total_strain[_qp](o0, o0) = computeOutOfPlaneStrain();
63  _total_strain[_qp](o1, o1) = (*_grad_disp[o1])[_qp](o1);
64  _total_strain[_qp](o2, o2) = (*_grad_disp[o2])[_qp](o2);
65  _total_strain[_qp](o1, o2) = ((*_grad_disp[o1])[_qp](o2) + (*_grad_disp[o2])[_qp](o1)) / 2.0;
66  _total_strain[_qp](o2, o1) = _total_strain[_qp](o1, o2); // force the symmetrical strain tensor
67 
69  volumetric_strain += _total_strain[_qp].trace() * _JxW[_qp] * _coord[_qp];
70  }
71 
73  volumetric_strain /= _current_elem_volume;
74 
75  for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
76  {
78  {
79  const Real correction = (volumetric_strain - _total_strain[_qp].trace()) / 3.0;
80  _total_strain[_qp](0, 0) += correction;
81  _total_strain[_qp](1, 1) += correction;
82  _total_strain[_qp](2, 2) += correction;
83  }
84 
86 
87  // Remove the eigenstrains
88  for (const auto es : _eigenstrains)
89  _mechanical_strain[_qp] -= (*es)[_qp];
90  }
91 }
const Real & _current_elem_volume
const unsigned int _out_of_plane_direction
virtual Real computeOutOfPlaneStrain()=0
MaterialProperty< RankTwoTensor > & _mechanical_strain
MaterialProperty< RankTwoTensor > & _total_strain
std::vector< const MaterialProperty< RankTwoTensor > * > _eigenstrains
std::vector< const VariableGradient * > _grad_disp

◆ displacementIntegrityCheck()

void Compute2DSmallStrain::displacementIntegrityCheck ( )
overrideprotectedvirtualinherited

Reimplemented from ComputeStrainBase.

Definition at line 94 of file Compute2DSmallStrain.C.

Referenced by Compute2DSmallStrain::initialSetup().

95 {
96  if (_out_of_plane_direction != 2 && _ndisp != 3)
97  mooseError("For 2D simulations where the out-of-plane direction is x or y the number of "
98  "supplied displacements must be three.");
99  else if (_out_of_plane_direction == 2 && _ndisp != 2)
100  mooseError("For 2D simulations where the out-of-plane direction is z the number of supplied "
101  "displacements must be two.");
102 }
const unsigned int _out_of_plane_direction
unsigned int _ndisp
Coupled displacement variables.

◆ initialSetup()

void ComputeAxisymmetricRZSmallStrain::initialSetup ( )
overridevirtual

Definition at line 32 of file ComputeAxisymmetricRZSmallStrain.C.

33 {
35 
36  if (getBlockCoordSystem() != Moose::COORD_RZ)
37  mooseError("The coordinate system must be set to RZ for Axisymmetric geometries.");
38 
39  if (_out_of_plane_direction != 2)
40  paramError("out_of_plane_direction",
41  "The out-of-plane direction for axisymmetric systems is currently restricted to z");
42 }
const unsigned int _out_of_plane_direction
void initialSetup() override

◆ initQpStatefulProperties()

void ComputeStrainBase::initQpStatefulProperties ( )
overrideprotectedvirtualinherited

Reimplemented in ComputeCosseratIncrementalSmallStrain, and ComputeIncrementalStrainBase.

Definition at line 102 of file ComputeStrainBase.C.

103 {
104  _mechanical_strain[_qp].zero();
105  _total_strain[_qp].zero();
106 }
MaterialProperty< RankTwoTensor > & _mechanical_strain
MaterialProperty< RankTwoTensor > & _total_strain

Member Data Documentation

◆ _base_name

std::string ComputeStrainBase::_base_name
protectedinherited

Definition at line 43 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

◆ _grad_disp

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

◆ _mechanical_strain

MaterialProperty<RankTwoTensor>& ComputeStrainBase::_mechanical_strain
protectedinherited

◆ _ndisp

unsigned int ComputeStrainBase::_ndisp
protectedinherited

◆ _out_of_plane_direction

const unsigned int Compute2DSmallStrain::_out_of_plane_direction
protectedinherited

◆ _total_strain

MaterialProperty<RankTwoTensor>& ComputeStrainBase::_total_strain
protectedinherited

◆ _volumetric_locking_correction

bool ComputeStrainBase::_volumetric_locking_correction
protectedinherited

The documentation for this class was generated from the following files: