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
ComputeRSphericalFiniteStrain Class Reference

ComputeRSphericalFiniteStrain defines a strain increment and a rotation increment for finite strains in 1D spherical symmetry geometries. More...

#include <ComputeRSphericalFiniteStrain.h>

Inheritance diagram for ComputeRSphericalFiniteStrain:
[legend]

Public Types

typedef DerivativeMaterialPropertyNameInterface::SymbolName SymbolName
 

Public Member Functions

 ComputeRSphericalFiniteStrain (const InputParameters &parameters)
 
virtual void initialSetup () override
 
virtual void computeProperties () override
 Computes the current and old deformation gradients with the assumptions for 1D spherical symmetry geometries: \( \epsilon_{\theta} = \epsilon_{\phi} = \frac{u_r}{r} \).
 
 CreateMooseEnumClass (DecompMethod, TaylorExpansion, EigenSolution, HughesWinget)
 
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 ()
 
static MooseEnum decompositionType ()
 

Protected Member Functions

virtual void computeQpIncrements (RankTwoTensor &e, RankTwoTensor &r) override
 
virtual void computeQpStrain ()
 
virtual void initQpStatefulProperties () override
 
void subtractEigenstrainIncrementFromStrain (RankTwoTensor &strain)
 
virtual void displacementIntegrityCheck ()
 

Protected Attributes

const VariableValue_disp_old_0
 the old value of the first component of the displacements vector
 
std::vector< RankTwoTensor_Fhat
 Incremental deformation gradient.
 
const DecompMethod _decomposition_method
 Method for determining rotation and strain increments.
 
const bool _use_hw
 Flag if using HughesWinget method.
 
MaterialProperty< RankTwoTensor > * _def_grad_mid
 For HughesWinget kinematics.
 
MaterialProperty< RankTwoTensor > * _f_bar
 
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

ComputeRSphericalFiniteStrain defines a strain increment and a rotation increment for finite strains in 1D spherical symmetry geometries.

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

Definition at line 20 of file ComputeRSphericalFiniteStrain.h.

Constructor & Destructor Documentation

◆ ComputeRSphericalFiniteStrain()

ComputeRSphericalFiniteStrain::ComputeRSphericalFiniteStrain ( const InputParameters parameters)

Definition at line 28 of file ComputeRSphericalFiniteStrain.C.

29 : ComputeFiniteStrain(parameters), _disp_old_0(coupledValueOld("displacements", 0))
30{
31}
ComputeFiniteStrain defines a strain increment and rotation increment, for finite strains.
const VariableValue & _disp_old_0
the old value of the first component of the displacements vector

Member Function Documentation

◆ computeProperties()

void ComputeRSphericalFiniteStrain::computeProperties ( )
overridevirtual

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

Definition at line 45 of file ComputeRSphericalFiniteStrain.C.

46{
47 // Method from Rashid, 1993
48
49 for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
50 {
51 // Deformation gradient calculation in spherical coordinates
52 RankTwoTensor A; // Deformation gradient
53 RankTwoTensor Fbar; // Old Deformation gradient
54
55 // Step through calculating the current and old deformation gradients
56 // Only diagonal components are nonzero because this is a 1D material
57 // Note: x_disp is the radial displacement
58 A(0, 0) = (*_grad_disp[0])[_qp](0);
59 Fbar(0, 0) = (*_grad_disp_old[0])[_qp](0);
60
61 // The polar and azimuthal strains are functions of radial displacement
62 if (!MooseUtils::relativeFuzzyEqual(_q_point[_qp](0), 0.0))
63 {
64 A(1, 1) = (*_disp[0])[_qp] / _q_point[_qp](0);
65 Fbar(1, 1) = _disp_old_0[_qp] / _q_point[_qp](0);
66 }
67
68 // The polar and azimuthal strains are equivalent in this 1D problem
69 A(2, 2) = A(1, 1);
70 Fbar(2, 2) = Fbar(1, 1);
71
72 // Gauss point deformation gradient
74 _deformation_gradient[_qp].addIa(1.0);
75
76 // very nearly A = gradU - gradUold, adapted to spherical coords
77 A -= Fbar;
78
79 // Fbar = ( I + gradUold)
80 Fbar.addIa(1.0);
81
82 // Incremental deformation gradient _Fhat = I + A Fbar^-1
83 _Fhat[_qp] = A * Fbar.inverse();
84 _Fhat[_qp].addIa(1.0);
85
87 }
88}
virtual void computeQpStrain()
std::vector< RankTwoTensor > _Fhat
Incremental deformation gradient.
std::vector< const VariableGradient * > _grad_disp_old
MaterialProperty< RankTwoTensor > & _deformation_gradient
std::vector< const VariableGradient * > _grad_disp
Gradient of displacements.
std::vector< const VariableValue * > _disp
Displacement variables.
void addIa(const T &a)
RankTwoTensorTempl< T > inverse() const

◆ computeQpIncrements()

void ComputeRSphericalFiniteStrain::computeQpIncrements ( RankTwoTensor e,
RankTwoTensor r 
)
overrideprotectedvirtual

Reimplemented from ComputeFiniteStrain.

Definition at line 91 of file ComputeRSphericalFiniteStrain.C.

93{
94 for (unsigned int i = 0; i < 3; ++i)
95 total_strain_increment(i, i) = std::log(_Fhat[_qp](i, i));
96
97 rotation_increment.setToIdentity();
98}

◆ computeQpStrain()

void ComputeFiniteStrain::computeQpStrain ( )
protectedvirtualinherited

Definition at line 118 of file ComputeFiniteStrain.C.

119{
120 RankTwoTensor total_strain_increment;
121
122 // three ways to calculate these increments: TaylorExpansion(default), EigenSolution, or
123 // HughesWinget
124 computeQpIncrements(total_strain_increment, _rotation_increment[_qp]);
125
126 _strain_increment[_qp] = total_strain_increment;
127
128 // Remove the eigenstrain increment
130
131 if (_dt > 0)
132 _strain_rate[_qp] = _strain_increment[_qp] / _dt;
133 else
134 _strain_rate[_qp].zero();
135
136 // if HughesWinget, rotate old strains here
137 RankTwoTensor mechanical_strain_old = _mechanical_strain_old[_qp];
138 RankTwoTensor total_strain_old = _total_strain_old[_qp];
139 if (_use_hw)
140 {
141 mechanical_strain_old = _rotation_increment[_qp] * _mechanical_strain_old[_qp] *
143 total_strain_old =
145 }
146
147 // Update strain in intermediate configuration
148 _mechanical_strain[_qp] = mechanical_strain_old + _strain_increment[_qp];
149 _total_strain[_qp] = total_strain_old + total_strain_increment;
150
151 // Rotate strain to current configuration, unless HughesWinget
152 if (!_use_hw)
153 {
154 _mechanical_strain[_qp] =
156 _total_strain[_qp] =
157 _rotation_increment[_qp] * _total_strain[_qp] * _rotation_increment[_qp].transpose();
158 }
159
160 if (_global_strain)
161 _total_strain[_qp] += (*_global_strain)[_qp];
162}
const bool _use_hw
Flag if using HughesWinget method.
virtual void computeQpIncrements(RankTwoTensor &e, RankTwoTensor &r)
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
MaterialProperty< RankTwoTensor > & _mechanical_strain
const MaterialProperty< RankTwoTensor > *const _global_strain
MaterialProperty< RankTwoTensor > & _total_strain
RankTwoTensorTempl< T > transpose() const

Referenced by Compute1DFiniteStrain::computeProperties(), Compute2DFiniteStrain::computeProperties(), ComputeFiniteStrain::computeProperties(), and computeProperties().

◆ CreateMooseEnumClass()

ComputeFiniteStrain::CreateMooseEnumClass ( DecompMethod  ,
TaylorExpansion  ,
EigenSolution  ,
HughesWinget   
)
inherited

◆ decompositionType()

MooseEnum ComputeFiniteStrain::decompositionType ( )
staticinherited

Definition at line 17 of file ComputeFiniteStrain.C.

18{
19 return MooseEnum(getDecompMethodOptions(), "TaylorExpansion");
20}

Referenced by AbaqusUMATStress::validParams(), ComputeFiniteStrain::validParams(), and QuasiStaticSolidMechanicsPhysicsBase::validParams().

◆ displacementIntegrityCheck()

void ComputeStrainBase::displacementIntegrityCheck ( )
protectedvirtualinherited

Reimplemented in Compute2DFiniteStrain, Compute2DIncrementalStrain, and Compute2DSmallStrain.

Definition at line 83 of file ComputeStrainBase.C.

84{
85 // Checking for consistency between mesh size and length of the provided displacements vector
86 if (_ndisp != _mesh.dimension())
87 paramError(
88 "displacements",
89 "The number of variables supplied in 'displacements' must match the mesh dimension.");
90}
unsigned int _ndisp
Coupled displacement variables.

Referenced by ComputeStrainBase::initialSetup().

◆ initialSetup()

void ComputeRSphericalFiniteStrain::initialSetup ( )
overridevirtual

Definition at line 34 of file ComputeRSphericalFiniteStrain.C.

35{
37
38 const auto & subdomainIDs = _mesh.meshSubdomains();
39 for (auto subdomainID : subdomainIDs)
40 if (_fe_problem.getCoordSystem(subdomainID) != Moose::COORD_RSPHERICAL)
41 mooseError("The coordinate system must be set to RSPHERICAL for 1D R spherical simulations.");
42}
void mooseError(Args &&... args)
COORD_RSPHERICAL
if(subdm)

◆ 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 ComputeRSphericalFiniteStrain::validParams ( )
static

Definition at line 20 of file ComputeRSphericalFiniteStrain.C.

21{
23 params.addClassDescription("Compute a strain increment and rotation increment for finite strains "
24 "in 1D spherical symmetry problems.");
25 return params;
26}
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

◆ _decomposition_method

const DecompMethod ComputeFiniteStrain::_decomposition_method
protectedinherited

Method for determining rotation and strain increments.

Definition at line 38 of file ComputeFiniteStrain.h.

Referenced by ComputeFiniteStrain::computeQpIncrements().

◆ _def_grad_mid

MaterialProperty<RankTwoTensor>* ComputeFiniteStrain::_def_grad_mid
protectedinherited

For HughesWinget kinematics.

Definition at line 44 of file ComputeFiniteStrain.h.

◆ _deformation_gradient

MaterialProperty<RankTwoTensor>& ComputeIncrementalStrainBase::_deformation_gradient
protectedinherited

◆ _disp

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

◆ _disp_old_0

const VariableValue& ComputeRSphericalFiniteStrain::_disp_old_0
protected

the old value of the first component of the displacements vector

Definition at line 37 of file ComputeRSphericalFiniteStrain.h.

Referenced by computeProperties().

◆ _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

◆ _f_bar

MaterialProperty<RankTwoTensor>* ComputeFiniteStrain::_f_bar
protectedinherited

Definition at line 45 of file ComputeFiniteStrain.h.

◆ _Fhat

std::vector<RankTwoTensor> ComputeFiniteStrain::_Fhat
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

◆ _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

◆ _use_hw

const bool ComputeFiniteStrain::_use_hw
protectedinherited

◆ _volumetric_locking_correction

const bool ComputeStrainBase::_volumetric_locking_correction
protectedinherited

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