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

ADComputeRSphericalIncrementalStrain defines a strain increment only for small strains in 1D spherical symmetry geometries. More...

#include <ADComputeRSphericalIncrementalStrain.h>

Inheritance diagram for ADComputeRSphericalIncrementalStrain< compute_stage >:
[legend]

Public Member Functions

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

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

virtual void computeTotalStrainIncrement (ADRankTwoTensor &total_strain_increment) override
 Computes the current and old deformation gradients with the assumptions for 1D spherical symmetry geometries: \( \epsilon_{\theta} = \epsilon_{\phi} = \frac{u_r}{r} \). More...
 
virtual void initQpStatefulProperties () override
 
void subtractEigenstrainIncrementFromStrain (ADRankTwoTensor &strain)
 
 ADMaterialProperty (RankTwoTensor) &_strain_rate
 
 ADMaterialProperty (RankTwoTensor) &_strain_increment
 
 ADMaterialProperty (RankTwoTensor) &_rotation_increment
 
const ADMaterialProperty (RankTwoTensor) *_global_strain
 
virtual void displacementIntegrityCheck ()
 

Protected Attributes

const VariableValue & _disp_old_0
 the old value of the first component of the displacements vector More...
 
 usingComputeIncrementalSmallStrainMembers
 
 usingComputeIncrementalStrainBaseMembers
 
std::vector< const VariableGradient * > _grad_disp_old
 
const MaterialProperty< RankTwoTensor > & _mechanical_strain_old
 
const MaterialProperty< RankTwoTensor > & _total_strain_old
 
std::vector< const MaterialProperty< RankTwoTensor > * > _eigenstrains_old
 
 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 ADComputeRSphericalIncrementalStrain< compute_stage >

ADComputeRSphericalIncrementalStrain defines a strain increment only for small strains in 1D spherical symmetry geometries.

The strains in the polar and azimuthal directions are functions of the radial displacement.

Definition at line 15 of file ADComputeRSphericalIncrementalStrain.h.

Constructor & Destructor Documentation

◆ ADComputeRSphericalIncrementalStrain()

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

Definition at line 32 of file ADComputeRSphericalIncrementalStrain.C.

35  _disp_old_0(coupledValueOld("displacements", 0))
36 {
37 }

Member Function Documentation

◆ ADMaterialProperty() [1/4]

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

◆ ADMaterialProperty() [2/4]

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

◆ ADMaterialProperty() [3/4]

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

◆ ADMaterialProperty() [4/4]

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

◆ computeProperties()

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

Definition at line 36 of file ADComputeIncrementalSmallStrain.C.

37 {
38  ADReal volumetric_strain = 0.0;
39  for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
40  {
41  ADRankTwoTensor total_strain_increment;
42  computeTotalStrainIncrement(total_strain_increment);
43 
44  _strain_increment[_qp] = total_strain_increment;
45 
47  volumetric_strain += total_strain_increment.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  const auto correction = (volumetric_strain - _strain_increment[_qp].trace()) / 3.0;
58  _strain_increment[_qp](0, 0) += correction;
59  _strain_increment[_qp](1, 1) += correction;
60  _strain_increment[_qp](2, 2) += correction;
61  }
62 
63  _total_strain[_qp] = _strain_increment[_qp] + _total_strain_old[_qp];
64 
65  // Remove the Eigen strain increment
66  subtractEigenstrainIncrementFromStrain(_strain_increment[_qp]);
67 
68  // strain rate
69  if (_dt > 0)
70  _strain_rate[_qp] = _strain_increment[_qp] / _dt;
71  else
72  _strain_rate[_qp].zero();
73 
74  // Update strain in intermediate configuration: rotations are not needed
75  _mechanical_strain[_qp] = _strain_increment[_qp] + _mechanical_strain_old[_qp];
76 
77  // incremental small strain does not include rotation
78  _rotation_increment[_qp].setToIdentity();
79  }
80 
81  copyDualNumbersToValues();
82 }

◆ computeTotalStrainIncrement()

template<ComputeStage compute_stage>
void ADComputeRSphericalIncrementalStrain< compute_stage >::computeTotalStrainIncrement ( ADRankTwoTensor &  total_strain_increment)
overrideprotectedvirtual

Computes the current and old deformation gradients with the assumptions for 1D spherical symmetry geometries: \( \epsilon_{\theta} = \epsilon_{\phi} = \frac{u_r}{r} \).

Reimplemented from ADComputeIncrementalSmallStrain< compute_stage >.

Definition at line 53 of file ADComputeRSphericalIncrementalStrain.C.

55 {
56  // Deformation gradient calculation in cylindrical coordinates
57  ADRankTwoTensor A; // Deformation gradient
58  RankTwoTensor Fbar; // Old Deformation gradient
59 
60  // Step through calculating the current and old deformation gradients
61  // Only diagonal components are nonzero because this is a 1D material
62  // Note: x_disp is the radial displacement
63  A(0, 0) = (*_grad_disp[0])[_qp](0);
64  Fbar(0, 0) = (*_grad_disp_old[0])[_qp](0);
65 
66  // The polar and azimuthal strains are functions of radial displacement
67  if (!MooseUtils::relativeFuzzyEqual(_q_point[_qp](0), 0.0))
68  {
69  A(1, 1) = (*_disp[0])[_qp] / _q_point[_qp](0);
70  Fbar(1, 1) = _disp_old_0[_qp] / _q_point[_qp](0);
71  }
72 
73  // The polar and azimuthal strains are equivalent in this 1D problem
74  A(2, 2) = A(1, 1);
75  Fbar(2, 2) = Fbar(1, 1);
76 
77  // very nearly A = gradU - gradUold, adapted to cylindrical coords
78  A -= Fbar;
79 
80  total_strain_increment = 0.5 * (A + A.transpose());
81 }

◆ 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 ADComputeRSphericalIncrementalStrain< compute_stage >::initialSetup ( )
overridevirtual

Definition at line 41 of file ADComputeRSphericalIncrementalStrain.C.

42 {
44 
45  const auto & subdomainIDs = _mesh.meshSubdomains();
46  for (auto subdomainID : subdomainIDs)
47  if (_fe_problem.getCoordSystem(subdomainID) != Moose::COORD_RSPHERICAL)
48  mooseError("The coordinate system must be set to RSPHERICAL for 1D R spherical simulations.");
49 }

◆ initQpStatefulProperties()

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

Reimplemented from ADComputeStrainBase< compute_stage >.

Definition at line 55 of file ADComputeIncrementalStrainBase.C.

56 {
57  _mechanical_strain[_qp].zero();
58  _total_strain[_qp].zero();
59 }

◆ subtractEigenstrainIncrementFromStrain()

template<ComputeStage compute_stage>
void ADComputeIncrementalStrainBase< compute_stage >::subtractEigenstrainIncrementFromStrain ( ADRankTwoTensor &  strain)
protectedinherited

Definition at line 63 of file ADComputeIncrementalStrainBase.C.

65 {
66  for (unsigned int i = 0; i < _eigenstrains.size(); ++i)
67  {
68  strain -= (*_eigenstrains[i])[_qp];
69  strain += (*_eigenstrains_old[i])[_qp];
70  }
71 }

◆ validParams()

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

Definition at line 23 of file ADComputeRSphericalIncrementalStrain.C.

24 {
26  params.addClassDescription(
27  "Compute a strain increment for incremental strains in 1D spherical symmetry problems.");
28  return params;
29 }

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.

◆ _disp_old_0

template<ComputeStage compute_stage>
const VariableValue& ADComputeRSphericalIncrementalStrain< compute_stage >::_disp_old_0
protected

the old value of the first component of the displacements vector

Definition at line 41 of file ADComputeRSphericalIncrementalStrain.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

◆ _eigenstrains_old

template<ComputeStage compute_stage>
std::vector<const MaterialProperty<RankTwoTensor> *> ADComputeIncrementalStrainBase< compute_stage >::_eigenstrains_old
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.

◆ _grad_disp_old

template<ComputeStage compute_stage>
std::vector<const VariableGradient *> ADComputeIncrementalStrainBase< compute_stage >::_grad_disp_old
protectedinherited

Definition at line 49 of file ADComputeIncrementalStrainBase.h.

◆ _mechanical_strain_old

template<ComputeStage compute_stage>
const MaterialProperty<RankTwoTensor>& ADComputeIncrementalStrainBase< compute_stage >::_mechanical_strain_old
protectedinherited

Definition at line 55 of file ADComputeIncrementalStrainBase.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().

◆ _total_strain_old

template<ComputeStage compute_stage>
const MaterialProperty<RankTwoTensor>& ADComputeIncrementalStrainBase< compute_stage >::_total_strain_old
protectedinherited

Definition at line 56 of file ADComputeIncrementalStrainBase.h.

◆ _volumetric_locking_correction

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

◆ usingComputeIncrementalSmallStrainMembers

template<ComputeStage compute_stage>
ADComputeRSphericalIncrementalStrain< compute_stage >::usingComputeIncrementalSmallStrainMembers
protected

Definition at line 43 of file ADComputeRSphericalIncrementalStrain.h.

◆ usingComputeIncrementalStrainBaseMembers

template<ComputeStage compute_stage>
ADComputeIncrementalSmallStrain< compute_stage >::usingComputeIncrementalStrainBaseMembers
protectedinherited

Definition at line 44 of file ADComputeIncrementalSmallStrain.h.

◆ usingComputeStrainBaseMembers

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

Definition at line 60 of file ADComputeIncrementalStrainBase.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:
ADComputeIncrementalStrainBase::_total_strain_old
const MaterialProperty< RankTwoTensor > & _total_strain_old
Definition: ADComputeIncrementalStrainBase.h:56
ADComputeIncrementalSmallStrain::computeTotalStrainIncrement
virtual void computeTotalStrainIncrement(ADRankTwoTensor &total_strain_increment)
Computes the current and old deformation gradients and passes back the total strain increment tensor.
Definition: ADComputeIncrementalSmallStrain.C:86
ADComputeIncrementalStrainBase::subtractEigenstrainIncrementFromStrain
void subtractEigenstrainIncrementFromStrain(ADRankTwoTensor &strain)
Definition: ADComputeIncrementalStrainBase.C:63
ADComputeIncrementalStrainBase::_mechanical_strain_old
const MaterialProperty< RankTwoTensor > & _mechanical_strain_old
Definition: ADComputeIncrementalStrainBase.h:55
ADComputeIncrementalSmallStrain::validParams
static InputParameters validParams()
Definition: ADComputeIncrementalSmallStrain.C:19
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
ADComputeIncrementalStrainBase::_eigenstrains_old
std::vector< const MaterialProperty< RankTwoTensor > * > _eigenstrains_old
Definition: ADComputeIncrementalStrainBase.h:58
ADComputeIncrementalSmallStrain
ADComputeIncrementalSmallStrain defines a strain increment and rotation increment (=1),...
Definition: ADComputeIncrementalSmallStrain.h:19
ADComputeIncrementalStrainBase::initialSetup
void initialSetup() override
Definition: ADComputeIncrementalStrainBase.C:41
ADComputeRSphericalIncrementalStrain::_disp_old_0
const VariableValue & _disp_old_0
the old value of the first component of the displacements vector
Definition: ADComputeRSphericalIncrementalStrain.h:41
ADComputeStrainBase::_grad_disp
std::vector< const ADVariableGradient * > _grad_disp
Definition: ADComputeStrainBase.h:58
RankTwoTensorTempl< Real >
ADComputeIncrementalStrainBase::_grad_disp_old
std::vector< const VariableGradient * > _grad_disp_old
Definition: ADComputeIncrementalStrainBase.h:49
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