www.mooseframework.org
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Compute1DIncrementalStrain Class Referenceabstract

Compute1DIncrementalStrain defines a strain increment only for incremental small strains in 1D problems, handling strains in other two directions. More...

#include <Compute1DIncrementalStrain.h>

Inheritance diagram for Compute1DIncrementalStrain:
[legend]

Public Member Functions

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

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

void computeTotalStrainIncrement (RankTwoTensor &total_strain_increment) override
 Computes the current and old deformation gradients with the assumptions for axisymmetric 1D problems, and returns the total strain increment tensor. More...
 
virtual Real computeGradDispYY ()=0
 Computes the current dUy/dY; as a virtual function, this function is overwritten for the specific geometries defined by inheriting classes. More...
 
virtual Real computeGradDispYYOld ()=0
 Computes the old dUy/dY; as a virtual function, this function is overwritten for the specific geometries defined by inheriting classes. More...
 
virtual Real computeGradDispZZ ()=0
 Computes the current dUz/dZ; as a virtual function, this function is overwritten for the specific geometries defined by inheriting classes. More...
 
virtual Real computeGradDispZZOld ()=0
 Computes the old dUz/dZ; as a virtual function, this function is overwritten for the specific geometries defined by inheriting classes. More...
 
virtual void initQpStatefulProperties () override
 
void subtractEigenstrainIncrementFromStrain (RankTwoTensor &strain)
 
virtual void displacementIntegrityCheck ()
 

Protected Attributes

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. More...
 
std::vector< const VariableValue * > _disp
 
std::vector< const VariableGradient * > _grad_disp
 
const 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
 
const bool _volumetric_locking_correction
 
const Real & _current_elem_volume
 

Detailed Description

Compute1DIncrementalStrain defines a strain increment only for incremental small strains in 1D problems, handling strains in other two directions.

Compute1DIncrementalStrain contains virtual methods to define the displacement gradients as a general nonzero value.

Definition at line 25 of file Compute1DIncrementalStrain.h.

Constructor & Destructor Documentation

◆ Compute1DIncrementalStrain()

Compute1DIncrementalStrain::Compute1DIncrementalStrain ( const InputParameters &  parameters)

Definition at line 25 of file Compute1DIncrementalStrain.C.

26  : ComputeIncrementalSmallStrain(parameters)
27 {
28 }

Member Function Documentation

◆ computeGradDispYY()

virtual Real Compute1DIncrementalStrain::computeGradDispYY ( )
protectedpure virtual

Computes the current dUy/dY; as a virtual function, this function is overwritten for the specific geometries defined by inheriting classes.

Implemented in ComputeAxisymmetric1DIncrementalStrain.

Referenced by computeTotalStrainIncrement().

◆ computeGradDispYYOld()

virtual Real Compute1DIncrementalStrain::computeGradDispYYOld ( )
protectedpure virtual

Computes the old dUy/dY; as a virtual function, this function is overwritten for the specific geometries defined by inheriting classes.

Implemented in ComputeAxisymmetric1DIncrementalStrain.

Referenced by computeTotalStrainIncrement().

◆ computeGradDispZZ()

virtual Real Compute1DIncrementalStrain::computeGradDispZZ ( )
protectedpure virtual

Computes the current dUz/dZ; as a virtual function, this function is overwritten for the specific geometries defined by inheriting classes.

Implemented in ComputeAxisymmetric1DIncrementalStrain.

Referenced by computeTotalStrainIncrement().

◆ computeGradDispZZOld()

virtual Real Compute1DIncrementalStrain::computeGradDispZZOld ( )
protectedpure virtual

Computes the old dUz/dZ; as a virtual function, this function is overwritten for the specific geometries defined by inheriting classes.

Implemented in ComputeAxisymmetric1DIncrementalStrain.

Referenced by computeTotalStrainIncrement().

◆ computeProperties()

void ComputeIncrementalSmallStrain::computeProperties ( )
overridevirtualinherited

Definition at line 33 of file ComputeIncrementalSmallStrain.C.

34 {
35  Real volumetric_strain = 0.0;
36  for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
37  {
38  RankTwoTensor total_strain_increment;
39  computeTotalStrainIncrement(total_strain_increment);
40 
41  _strain_increment[_qp] = total_strain_increment;
42 
44  volumetric_strain += total_strain_increment.trace() * _JxW[_qp] * _coord[_qp];
45  }
47  volumetric_strain /= _current_elem_volume;
48 
49  for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
50  {
51  Real trace = _strain_increment[_qp].trace();
53  {
54  _strain_increment[_qp](0, 0) += (volumetric_strain - trace) / 3.0;
55  _strain_increment[_qp](1, 1) += (volumetric_strain - trace) / 3.0;
56  _strain_increment[_qp](2, 2) += (volumetric_strain - trace) / 3.0;
57  }
58 
60 
61  // Remove the Eigen strain increment
63 
64  // strain rate
65  if (_dt > 0)
66  _strain_rate[_qp] = _strain_increment[_qp] / _dt;
67  else
68  _strain_rate[_qp].zero();
69 
70  // Update strain in intermediate configuration: rotations are not needed
72 
73  // incremental small strain does not include rotation
74  _rotation_increment[_qp].setToIdentity();
75  }
76 }

◆ computeTotalStrainIncrement()

void Compute1DIncrementalStrain::computeTotalStrainIncrement ( RankTwoTensor total_strain_increment)
overrideprotectedvirtual

Computes the current and old deformation gradients with the assumptions for axisymmetric 1D problems, and returns the total strain increment tensor.

Reimplemented from ComputeIncrementalSmallStrain.

Definition at line 31 of file Compute1DIncrementalStrain.C.

32 {
33  // Deformation gradient calculation for 1D problems
34  RankTwoTensor A(
35  (*_grad_disp[0])[_qp], (*_grad_disp[1])[_qp], (*_grad_disp[2])[_qp]); // Deformation gradient
36  RankTwoTensor Fbar((*_grad_disp_old[0])[_qp],
37  (*_grad_disp_old[1])[_qp],
38  (*_grad_disp_old[2])[_qp]); // Old Deformation gradient
39 
40  // Compute the displacement gradient dUy/dy and dUz/dz value for 1D problems
41  A(1, 1) = computeGradDispYY();
42  A(2, 2) = computeGradDispZZ();
43 
44  Fbar(1, 1) = computeGradDispYYOld();
45  Fbar(2, 2) = computeGradDispZZOld();
46 
47  // Gauss point deformation gradient
48  _deformation_gradient[_qp] = A;
49  _deformation_gradient[_qp].addIa(1.0);
50 
51  A -= Fbar; // very nearly A = gradU - gradUold, adapted to cylindrical coords
52 
53  total_strain_increment = 0.5 * (A + A.transpose());
54 }

◆ displacementIntegrityCheck()

void ComputeStrainBase::displacementIntegrityCheck ( )
protectedvirtualinherited

Reimplemented in Compute2DFiniteStrain, Compute2DIncrementalStrain, and Compute2DSmallStrain.

Definition at line 94 of file ComputeStrainBase.C.

95 {
96  // Checking for consistency between mesh size and length of the provided displacements vector
97  if (_ndisp != _mesh.dimension())
98  paramError(
99  "displacements",
100  "The number of variables supplied in 'displacements' must match the mesh dimension.");
101 }

Referenced by ComputeStrainBase::initialSetup().

◆ initialSetup()

void ComputeIncrementalStrainBase::initialSetup ( )
overrideinherited

Definition at line 38 of file ComputeIncrementalStrainBase.C.

39 {
41  for (unsigned int i = 0; i < 3; ++i)
42  {
43  if (_fe_problem.isTransient() && i < _ndisp)
44  _grad_disp_old[i] = &coupledGradientOld("displacements", i);
45  else
46  _grad_disp_old[i] = &_grad_zero;
47  }
48 }

Referenced by ComputeAxisymmetric1DFiniteStrain::initialSetup(), ComputeAxisymmetricRZIncrementalStrain::initialSetup(), ComputeRSphericalIncrementalStrain::initialSetup(), ComputeRSphericalFiniteStrain::initialSetup(), and ComputeAxisymmetric1DIncrementalStrain::initialSetup().

◆ initQpStatefulProperties()

void ComputeIncrementalStrainBase::initQpStatefulProperties ( )
overrideprotectedvirtualinherited

Reimplemented from ComputeStrainBase.

Reimplemented in ComputeCosseratIncrementalSmallStrain.

Definition at line 51 of file ComputeIncrementalStrainBase.C.

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

Referenced by ComputeCosseratIncrementalSmallStrain::initQpStatefulProperties().

◆ subtractEigenstrainIncrementFromStrain()

void ComputeIncrementalStrainBase::subtractEigenstrainIncrementFromStrain ( RankTwoTensor strain)
protectedinherited

Definition at line 59 of file ComputeIncrementalStrainBase.C.

60 {
61  for (unsigned int i = 0; i < _eigenstrains.size(); ++i)
62  {
63  strain -= (*_eigenstrains[i])[_qp];
64  strain += (*_eigenstrains_old[i])[_qp];
65  }
66 }

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

◆ validParams()

InputParameters Compute1DIncrementalStrain::validParams ( )
static

Definition at line 17 of file Compute1DIncrementalStrain.C.

18 {
19  InputParameters params = ComputeIncrementalSmallStrain::validParams();
20  params.addClassDescription("Compute strain increment for small strains in 1D problems.");
21 
22  return params;
23 }

Referenced by ComputeAxisymmetric1DIncrementalStrain::validParams().

Member Data Documentation

◆ _base_name

const std::string ComputeStrainBase::_base_name
protectedinherited

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

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

◆ _volumetric_locking_correction

const bool ComputeStrainBase::_volumetric_locking_correction
protectedinherited

The documentation for this class was generated from the following files:
Compute1DIncrementalStrain::computeGradDispYY
virtual Real computeGradDispYY()=0
Computes the current dUy/dY; as a virtual function, this function is overwritten for the specific geo...
ComputeIncrementalStrainBase::_strain_rate
MaterialProperty< RankTwoTensor > & _strain_rate
Definition: ComputeIncrementalStrainBase.h:38
ComputeStrainBase::_current_elem_volume
const Real & _current_elem_volume
Definition: ComputeStrainBase.h:56
ComputeIncrementalSmallStrain::ComputeIncrementalSmallStrain
ComputeIncrementalSmallStrain(const InputParameters &parameters)
Definition: ComputeIncrementalSmallStrain.C:27
ComputeIncrementalStrainBase::subtractEigenstrainIncrementFromStrain
void subtractEigenstrainIncrementFromStrain(RankTwoTensor &strain)
Definition: ComputeIncrementalStrainBase.C:59
ComputeIncrementalStrainBase::_mechanical_strain_old
const MaterialProperty< RankTwoTensor > & _mechanical_strain_old
Definition: ComputeIncrementalStrainBase.h:44
ComputeIncrementalStrainBase::_grad_disp_old
std::vector< const VariableGradient * > _grad_disp_old
Definition: ComputeIncrementalStrainBase.h:36
ComputeIncrementalStrainBase::_rotation_increment
MaterialProperty< RankTwoTensor > & _rotation_increment
Definition: ComputeIncrementalStrainBase.h:40
ComputeIncrementalSmallStrain::computeTotalStrainIncrement
virtual void computeTotalStrainIncrement(RankTwoTensor &total_strain_increment)
Computes the current and old deformation gradients and passes back the total strain increment tensor.
Definition: ComputeIncrementalSmallStrain.C:79
ComputeIncrementalStrainBase::_eigenstrains_old
std::vector< const MaterialProperty< RankTwoTensor > * > _eigenstrains_old
Definition: ComputeIncrementalStrainBase.h:47
ComputeStrainBase::_ndisp
unsigned int _ndisp
Coupled displacement variables.
Definition: ComputeStrainBase.h:40
Compute1DIncrementalStrain::computeGradDispZZOld
virtual Real computeGradDispZZOld()=0
Computes the old dUz/dZ; as a virtual function, this function is overwritten for the specific geometr...
ComputeStrainBase::_mechanical_strain
MaterialProperty< RankTwoTensor > & _mechanical_strain
Definition: ComputeStrainBase.h:46
ComputeStrainBase::initialSetup
void initialSetup() override
Definition: ComputeStrainBase.C:75
ComputeIncrementalStrainBase::_total_strain_old
const MaterialProperty< RankTwoTensor > & _total_strain_old
Definition: ComputeIncrementalStrainBase.h:45
ComputeIncrementalStrainBase::_deformation_gradient
MaterialProperty< RankTwoTensor > & _deformation_gradient
Definition: ComputeIncrementalStrainBase.h:42
ComputeStrainBase::_eigenstrains
std::vector< const MaterialProperty< RankTwoTensor > * > _eigenstrains
Definition: ComputeStrainBase.h:51
Compute1DIncrementalStrain::computeGradDispZZ
virtual Real computeGradDispZZ()=0
Computes the current dUz/dZ; as a virtual function, this function is overwritten for the specific geo...
RankTwoTensorTempl< Real >
ComputeStrainBase::_total_strain
MaterialProperty< RankTwoTensor > & _total_strain
Definition: ComputeStrainBase.h:48
ComputeIncrementalSmallStrain::validParams
static InputParameters validParams()
Definition: ComputeIncrementalSmallStrain.C:19
ComputeStrainBase::_volumetric_locking_correction
const bool _volumetric_locking_correction
Definition: ComputeStrainBase.h:55
ComputeIncrementalStrainBase::_strain_increment
MaterialProperty< RankTwoTensor > & _strain_increment
Definition: ComputeIncrementalStrainBase.h:39
ComputeStrainBase::_grad_disp
std::vector< const VariableGradient * > _grad_disp
Definition: ComputeStrainBase.h:42
Compute1DIncrementalStrain::computeGradDispYYOld
virtual Real computeGradDispYYOld()=0
Computes the old dUy/dY; as a virtual function, this function is overwritten for the specific geometr...