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
Compute2DSmallStrain Class Referenceabstract

Compute2DSmallStrain defines a strain tensor, assuming small strains, in 2D geometries / simulations. More...

#include <Compute2DSmallStrain.h>

Inheritance diagram for Compute2DSmallStrain:
[legend]

Public Types

typedef DerivativeMaterialPropertyNameInterface::SymbolName SymbolName
 

Public Member Functions

 Compute2DSmallStrain (const InputParameters &parameters)
 
void initialSetup () 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

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

Protected Attributes

const unsigned int _out_of_plane_direction
 
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

Compute2DSmallStrain defines a strain tensor, assuming small strains, in 2D geometries / simulations.

ComputePlaneSmallStrain acts as a base class for ComputePlaneSmallStrain and ComputeAxisymmetricRZSmallStrain through the computeOutOfPlaneStrain method.

Definition at line 20 of file Compute2DSmallStrain.h.

Constructor & Destructor Documentation

◆ Compute2DSmallStrain()

Compute2DSmallStrain::Compute2DSmallStrain ( const InputParameters parameters)

Definition at line 26 of file Compute2DSmallStrain.C.

27 : ComputeSmallStrain(parameters),
28 _out_of_plane_direction(getParam<MooseEnum>("out_of_plane_direction"))
29{
30}
const unsigned int _out_of_plane_direction
ComputeSmallStrain defines a strain tensor, assuming small strains.

Member Function Documentation

◆ computeOutOfPlaneStrain()

virtual Real Compute2DSmallStrain::computeOutOfPlaneStrain ( )
protectedpure virtual

◆ computeProperties()

void Compute2DSmallStrain::computeProperties ( )
overrideprotectedvirtual

Reimplemented from ComputeSmallStrain.

Definition at line 52 of file Compute2DSmallStrain.C.

53{
54 const auto o0 = _out_of_plane_direction;
55 const auto o1 = (_out_of_plane_direction + 1) % 3;
56 const auto o2 = (_out_of_plane_direction + 2) % 3;
57
58 Real volumetric_strain = 0.0;
59 for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
60 {
62 _total_strain[_qp](o1, o1) = (*_grad_disp[o1])[_qp](o1);
63 _total_strain[_qp](o2, o2) = (*_grad_disp[o2])[_qp](o2);
64 _total_strain[_qp](o1, o2) = ((*_grad_disp[o1])[_qp](o2) + (*_grad_disp[o2])[_qp](o1)) / 2.0;
65 _total_strain[_qp](o2, o1) = _total_strain[_qp](o1, o2); // force the symmetrical strain tensor
66
68 volumetric_strain += _total_strain[_qp].trace() * _JxW[_qp] * _coord[_qp];
69 }
70
72 volumetric_strain /= _current_elem_volume;
73
74 for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
75 {
77 {
78 const Real correction = (volumetric_strain - _total_strain[_qp].trace()) / 3.0;
79 _total_strain[_qp](0, 0) += correction;
80 _total_strain[_qp](1, 1) += correction;
81 _total_strain[_qp](2, 2) += correction;
82 }
83
85
86 // Remove the eigenstrains
87 for (const auto es : _eigenstrains)
88 _mechanical_strain[_qp] -= (*es)[_qp];
89 }
90}
virtual Real computeOutOfPlaneStrain()=0
std::vector< const VariableGradient * > _grad_disp
Gradient of displacements.
MaterialProperty< RankTwoTensor > & _mechanical_strain
const Real & _current_elem_volume
std::vector< const MaterialProperty< RankTwoTensor > * > _eigenstrains
MaterialProperty< RankTwoTensor > & _total_strain
const bool _volumetric_locking_correction
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

◆ displacementIntegrityCheck()

void Compute2DSmallStrain::displacementIntegrityCheck ( )
overrideprotectedvirtual

Reimplemented from ComputeStrainBase.

Definition at line 93 of file Compute2DSmallStrain.C.

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

Referenced by initialSetup().

◆ initialSetup()

void Compute2DSmallStrain::initialSetup ( )
override

Definition at line 33 of file Compute2DSmallStrain.C.

34{
36 for (unsigned int i = 0; i < 3; ++i)
37 {
39 {
40 _disp[i] = &_zero;
41 _grad_disp[i] = &_grad_zero;
42 }
43 else
44 {
45 _disp[i] = &coupledValue("displacements", i);
46 _grad_disp[i] = &coupledGradient("displacements", i);
47 }
48 }
49}
virtual void displacementIntegrityCheck() override
std::vector< const VariableValue * > _disp
Displacement variables.

Referenced by ComputeAxisymmetricRZSmallStrain::initialSetup().

◆ initQpStatefulProperties()

void ComputeStrainBase::initQpStatefulProperties ( )
overrideprotectedvirtualinherited

Reimplemented in ComputeCosseratIncrementalSmallStrain, and ComputeIncrementalStrainBase.

Definition at line 93 of file ComputeStrainBase.C.

94{
95 _mechanical_strain[_qp].zero();
96 _total_strain[_qp].zero();
97}

◆ validParams()

InputParameters Compute2DSmallStrain::validParams ( )
static

Definition at line 15 of file Compute2DSmallStrain.C.

16{
18 params.addClassDescription("Compute a small strain in a plane strain configuration.");
19
20 MooseEnum outOfPlaneDirection("x y z", "z");
21 params.addParam<MooseEnum>(
22 "out_of_plane_direction", outOfPlaneDirection, "The direction of the out-of-plane strain.");
23 return params;
24}
static InputParameters validParams()
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)

Referenced by ComputeAxisymmetricRZSmallStrain::validParams(), and ComputePlaneSmallStrain::validParams().

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

◆ _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>* const 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
protected

◆ _total_strain

MaterialProperty<RankTwoTensor>& ComputeStrainBase::_total_strain
protectedinherited

◆ _volumetric_locking_correction

const bool ComputeStrainBase::_volumetric_locking_correction
protectedinherited

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