https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
ComputeAxisymmetricRZIncrementalStrain Class Reference

ComputeAxisymmetricRZIncrementalStrain defines a strain increment only for incremental strains in an Axisymmetric simulation. More...

#include <ComputeAxisymmetricRZIncrementalStrain.h>

Inheritance diagram for ComputeAxisymmetricRZIncrementalStrain:
[legend]

Public Types

typedef DerivativeMaterialPropertyNameInterface::SymbolName SymbolName
 

Public Member Functions

 ComputeAxisymmetricRZIncrementalStrain (const InputParameters &parameters)
 
void initialSetup () override
 
virtual void computeProperties () override
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialProperty (const std::string &name)
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialPropertyByName (const std::string &name)
 
void validateDerivativeMaterialPropertyBase (const std::string &base)
 
const MaterialPropertyName derivativePropertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName derivativePropertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName derivativePropertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName derivativePropertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
void validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true)
 
void validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true)
 
void validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
const MaterialPropertyName propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 
const MaterialPropertyName propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

Real computeOutOfPlaneGradDisp () override
 Computes the current out-of-plane component of the displacement gradient; as a virtual function, this function is overwritten for the specific geometries defined by inheriting classes.
 
Real computeOutOfPlaneGradDispOld () override
 Computes the old out-of-plane component of the displacement gradient; as a virtual function, this function is overwritten for the specific geometries defined by inheriting classes.
 
virtual void displacementIntegrityCheck () override
 
virtual void computeTotalStrainIncrement (RankTwoTensor &total_strain_increment) override
 Computes the current and old deformation gradients with the assumptions for 2D geometries, including plane strain, generalized plane strain, and axisymmetric, and returns the total strain increment tensor.
 
virtual void initQpStatefulProperties () override
 
void subtractEigenstrainIncrementFromStrain (RankTwoTensor &strain)
 

Protected Attributes

const VariableValue_disp_old_0
 the old value of the first component of the displacements vector
 
const unsigned int _out_of_plane_direction
 
std::vector< const VariableGradient * > _grad_disp_old
 
MaterialProperty< RankTwoTensor > & _strain_rate
 
MaterialProperty< RankTwoTensor > & _strain_increment
 
MaterialProperty< RankTwoTensor > & _rotation_increment
 
MaterialProperty< RankTwoTensor > & _deformation_gradient
 
const MaterialProperty< RankTwoTensor > & _mechanical_strain_old
 
const MaterialProperty< RankTwoTensor > & _total_strain_old
 
std::vector< const MaterialProperty< RankTwoTensor > * > _eigenstrains_old
 
unsigned int _ndisp
 Coupled displacement variables.
 
std::vector< const VariableValue * > _disp
 Displacement variables.
 
std::vector< const VariableGradient * > _grad_disp
 Gradient of displacements.
 
const std::string _base_name
 Base name of the material system.
 
MaterialProperty< RankTwoTensor > & _mechanical_strain
 
MaterialProperty< RankTwoTensor > & _total_strain
 
std::vector< MaterialPropertyName > _eigenstrain_names
 
std::vector< const MaterialProperty< RankTwoTensor > * > _eigenstrains
 
const MaterialProperty< RankTwoTensor > *const _global_strain
 
const bool _volumetric_locking_correction
 
const Real & _current_elem_volume
 

Private Member Functions

bool haveMaterialProperty (const std::string &prop_name)
 
std::vector< VariableName > buildVariableVector (const VariableName &c1, const VariableName &c2, const VariableName &c3)
 
void validateCouplingHelper (const MaterialPropertyName &base, const std::vector< VariableName > &c, const System &system, std::vector< VariableName > &missing)
 
bool isNotObjectVariable (const VariableName &name)
 

Private Attributes

FEProblemBase_dmi_fe_problem
 

Detailed Description

ComputeAxisymmetricRZIncrementalStrain defines a strain increment only for incremental strains in an Axisymmetric simulation.

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

Definition at line 19 of file ComputeAxisymmetricRZIncrementalStrain.h.

Constructor & Destructor Documentation

◆ ComputeAxisymmetricRZIncrementalStrain()

ComputeAxisymmetricRZIncrementalStrain::ComputeAxisymmetricRZIncrementalStrain ( const InputParameters parameters)

Definition at line 26 of file ComputeAxisymmetricRZIncrementalStrain.C.

28 : Compute2DIncrementalStrain(parameters), _disp_old_0(coupledValueOld("displacements", 0))
29{
30}
Compute2DIncrementalStrain defines a strain increment only for incremental strains in 2D geometries,...
const VariableValue & _disp_old_0
the old value of the first component of the displacements vector

Member Function Documentation

◆ computeOutOfPlaneGradDisp()

Real ComputeAxisymmetricRZIncrementalStrain::computeOutOfPlaneGradDisp ( )
overrideprotectedvirtual

Computes the current out-of-plane component of the displacement gradient; as a virtual function, this function is overwritten for the specific geometries defined by inheriting classes.

Implements Compute2DIncrementalStrain.

Definition at line 46 of file ComputeAxisymmetricRZIncrementalStrain.C.

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

◆ computeOutOfPlaneGradDispOld()

Real ComputeAxisymmetricRZIncrementalStrain::computeOutOfPlaneGradDispOld ( )
overrideprotectedvirtual

Computes the old out-of-plane component of the displacement gradient; as a virtual function, this function is overwritten for the specific geometries defined by inheriting classes.

Implements Compute2DIncrementalStrain.

Definition at line 55 of file ComputeAxisymmetricRZIncrementalStrain.C.

56{
57 if (!MooseUtils::absoluteFuzzyEqual(_q_point[_qp](0), 0.0))
58 return _disp_old_0[_qp] / _q_point[_qp](0);
59 else
60 return 0.0;
61}

◆ computeProperties()

void ComputeIncrementalStrain::computeProperties ( )
overridevirtualinherited

Definition at line 35 of file ComputeIncrementalStrain.C.

36{
37 Real volumetric_strain = 0.0;
38 for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
39 {
40 RankTwoTensor total_strain_increment;
41 computeTotalStrainIncrement(total_strain_increment);
42
43 _strain_increment[_qp] = total_strain_increment;
44
46 volumetric_strain += total_strain_increment.trace() * _JxW[_qp] * _coord[_qp];
47 }
49 volumetric_strain /= _current_elem_volume;
50
51 for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
52 {
53 Real trace = _strain_increment[_qp].trace();
55 {
56 _strain_increment[_qp](0, 0) += (volumetric_strain - trace) / 3.0;
57 _strain_increment[_qp](1, 1) += (volumetric_strain - trace) / 3.0;
58 _strain_increment[_qp](2, 2) += (volumetric_strain - trace) / 3.0;
59 }
60
62
63 // Remove the Eigen strain increment
65
66 // strain rate
67 if (_dt > 0)
68 _strain_rate[_qp] = _strain_increment[_qp] / _dt;
69 else
70 _strain_rate[_qp].zero();
71
72 // Update strain in intermediate configuration: rotations are not needed
74
75 // incremental small strain does not include rotation
76 _rotation_increment[_qp].setToIdentity();
77 }
78}
MaterialProperty< RankTwoTensor > & _strain_rate
const MaterialProperty< RankTwoTensor > & _mechanical_strain_old
void subtractEigenstrainIncrementFromStrain(RankTwoTensor &strain)
MaterialProperty< RankTwoTensor > & _rotation_increment
MaterialProperty< RankTwoTensor > & _strain_increment
const MaterialProperty< RankTwoTensor > & _total_strain_old
virtual void computeTotalStrainIncrement(RankTwoTensor &total_strain_increment)
Computes the current and old deformation gradients and passes back the total strain increment tensor.
MaterialProperty< RankTwoTensor > & _mechanical_strain
const Real & _current_elem_volume
MaterialProperty< RankTwoTensor > & _total_strain
const bool _volumetric_locking_correction
Real trace(const RealTensor &A, const unsigned int &dim)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

◆ computeTotalStrainIncrement()

void Compute2DIncrementalStrain::computeTotalStrainIncrement ( RankTwoTensor total_strain_increment)
overrideprotectedvirtualinherited

Computes the current and old deformation gradients with the assumptions for 2D geometries, including plane strain, generalized plane strain, and axisymmetric, and returns the total strain increment tensor.

Reimplemented from ComputeIncrementalStrain.

Definition at line 56 of file Compute2DIncrementalStrain.C.

57{
58 // Deformation gradient calculation for 2D problems
60 (*_grad_disp[0])[_qp], (*_grad_disp[1])[_qp], (*_grad_disp[2])[_qp]);
61
62 // Old Deformation gradient
64 (*_grad_disp_old[0])[_qp], (*_grad_disp_old[1])[_qp], (*_grad_disp_old[2])[_qp]);
65
66 // Compute the displacement gradient of the out of plane direction for plane strain,
67 // generalized plane strain, or axisymmetric problems
70
72 _deformation_gradient[_qp].addIa(1.0);
73
74 A -= Fbar; // very nearly A = gradU - gradUold
75
76 total_strain_increment = 0.5 * (A + A.transpose());
77}
virtual Real computeOutOfPlaneGradDispOld()=0
Computes the old out-of-plane component of the displacement gradient; as a virtual function,...
virtual Real computeOutOfPlaneGradDisp()=0
Computes the current out-of-plane component of the displacement gradient; as a virtual function,...
std::vector< const VariableGradient * > _grad_disp_old
MaterialProperty< RankTwoTensor > & _deformation_gradient
std::vector< const VariableGradient * > _grad_disp
Gradient of displacements.
static RankTwoTensorTempl initializeFromRows(const libMesh::TypeVector< T > &row0, const libMesh::TypeVector< T > &row1, const libMesh::TypeVector< T > &row2)

◆ displacementIntegrityCheck()

void Compute2DIncrementalStrain::displacementIntegrityCheck ( )
overrideprotectedvirtualinherited

Reimplemented from ComputeStrainBase.

Definition at line 80 of file Compute2DIncrementalStrain.C.

81{
82 if (_out_of_plane_direction != 2 && _ndisp != 3)
83 mooseError("For 2D simulations where the out-of-plane direction is x or y the number of "
84 "supplied displacements must be three.");
85 else if (_out_of_plane_direction == 2 && _ndisp != 2)
86 mooseError("For 2D simulations where the out-of-plane direction is z the number of supplied "
87 "displacements must be two.");
88}
void mooseError(Args &&... args)
unsigned int _ndisp
Coupled displacement variables.

◆ initialSetup()

void ComputeAxisymmetricRZIncrementalStrain::initialSetup ( )
override

Definition at line 33 of file ComputeAxisymmetricRZIncrementalStrain.C.

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

◆ initQpStatefulProperties()

void ComputeIncrementalStrainBase::initQpStatefulProperties ( )
overrideprotectedvirtualinherited

Reimplemented from ComputeStrainBase.

Reimplemented in ComputeCosseratIncrementalSmallStrain.

Definition at line 49 of file ComputeIncrementalStrainBase.C.

50{
51 _mechanical_strain[_qp].zero();
52 _total_strain[_qp].zero();
53 _deformation_gradient[_qp].setToIdentity();
54 _rotation_increment[_qp].setToIdentity();
55}

Referenced by ComputeCosseratIncrementalSmallStrain::initQpStatefulProperties().

◆ subtractEigenstrainIncrementFromStrain()

void ComputeIncrementalStrainBase::subtractEigenstrainIncrementFromStrain ( RankTwoTensor strain)
protectedinherited

Definition at line 58 of file ComputeIncrementalStrainBase.C.

59{
60 for (unsigned int i = 0; i < _eigenstrains.size(); ++i)
61 {
62 strain -= (*_eigenstrains[i])[_qp];
63 strain += (*_eigenstrains_old[i])[_qp];
64 }
65}
std::vector< const MaterialProperty< RankTwoTensor > * > _eigenstrains_old
std::vector< const MaterialProperty< RankTwoTensor > * > _eigenstrains

Referenced by ComputeIncrementalStrain::computeProperties(), ComputeCosseratIncrementalSmallStrain::computeQpProperties(), and ComputeFiniteStrain::computeQpStrain().

◆ validParams()

InputParameters ComputeAxisymmetricRZIncrementalStrain::validParams ( )
static

Definition at line 18 of file ComputeAxisymmetricRZIncrementalStrain.C.

19{
21 params.addClassDescription("Compute a strain increment and rotation increment for small strains "
22 "under axisymmetric assumptions.");
23 return params;
24}
static InputParameters validParams()
void addClassDescription(const std::string &doc_string)

Member Data Documentation

◆ _base_name

const std::string ComputeStrainBase::_base_name
protectedinherited

Base name of the material system.

Definition at line 44 of file ComputeStrainBase.h.

Referenced by ComputeStrainBase::ComputeStrainBase().

◆ _current_elem_volume

const Real& ComputeStrainBase::_current_elem_volume
protectedinherited

◆ _deformation_gradient

MaterialProperty<RankTwoTensor>& ComputeIncrementalStrainBase::_deformation_gradient
protectedinherited

◆ _disp

std::vector<const VariableValue *> ComputeStrainBase::_disp
protectedinherited

◆ _disp_old_0

const VariableValue& ComputeAxisymmetricRZIncrementalStrain::_disp_old_0
protected

the old value of the first component of the displacements vector

Definition at line 34 of file ComputeAxisymmetricRZIncrementalStrain.h.

Referenced by computeOutOfPlaneGradDispOld().

◆ _eigenstrain_names

std::vector<MaterialPropertyName> ComputeStrainBase::_eigenstrain_names
protectedinherited

◆ _eigenstrains

std::vector<const MaterialProperty<RankTwoTensor> *> ComputeStrainBase::_eigenstrains
protectedinherited

◆ _eigenstrains_old

std::vector<const MaterialProperty<RankTwoTensor> *> ComputeIncrementalStrainBase::_eigenstrains_old
protectedinherited

◆ _global_strain

const MaterialProperty<RankTwoTensor>* const ComputeStrainBase::_global_strain
protectedinherited

◆ _grad_disp

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

◆ _grad_disp_old

std::vector<const VariableGradient *> ComputeIncrementalStrainBase::_grad_disp_old
protectedinherited

◆ _mechanical_strain

MaterialProperty<RankTwoTensor>& ComputeStrainBase::_mechanical_strain
protectedinherited

◆ _mechanical_strain_old

const MaterialProperty<RankTwoTensor>& ComputeIncrementalStrainBase::_mechanical_strain_old
protectedinherited

◆ _ndisp

unsigned int ComputeStrainBase::_ndisp
protectedinherited

◆ _out_of_plane_direction

const unsigned int Compute2DIncrementalStrain::_out_of_plane_direction
protectedinherited

◆ _rotation_increment

MaterialProperty<RankTwoTensor>& ComputeIncrementalStrainBase::_rotation_increment
protectedinherited

◆ _strain_increment

MaterialProperty<RankTwoTensor>& ComputeIncrementalStrainBase::_strain_increment
protectedinherited

◆ _strain_rate

MaterialProperty<RankTwoTensor>& ComputeIncrementalStrainBase::_strain_rate
protectedinherited

◆ _total_strain

MaterialProperty<RankTwoTensor>& ComputeStrainBase::_total_strain
protectedinherited

◆ _total_strain_old

const MaterialProperty<RankTwoTensor>& ComputeIncrementalStrainBase::_total_strain_old
protectedinherited

◆ _volumetric_locking_correction

const bool ComputeStrainBase::_volumetric_locking_correction
protectedinherited

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