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

ComputePlaneIncrementalStrain defines strain increment for small strains in a 2D planar simulation. More...

#include <ComputePlaneIncrementalStrain.h>

Inheritance diagram for ComputePlaneIncrementalStrain:
[legend]

Public Member Functions

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

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

virtual 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. More...
 
virtual 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. More...
 
unsigned int getCurrentSubblockIndex () const
 gets its subblock index for current element More...
 
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. More...
 
virtual void initQpStatefulProperties () override
 
void subtractEigenstrainIncrementFromStrain (RankTwoTensor &strain)
 

Protected Attributes

const SubblockIndexProvider_subblock_id_provider
 
const bool _scalar_out_of_plane_strain_coupled
 
unsigned int _nscalar_strains
 
std::vector< const VariableValue * > _scalar_out_of_plane_strain
 
std::vector< const VariableValue * > _scalar_out_of_plane_strain_old
 
const bool _out_of_plane_strain_coupled
 
const VariableValue & _out_of_plane_strain
 
const VariableValue & _out_of_plane_strain_old
 
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. 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

ComputePlaneIncrementalStrain defines strain increment for small strains in a 2D planar simulation.

Definition at line 24 of file ComputePlaneIncrementalStrain.h.

Constructor & Destructor Documentation

◆ ComputePlaneIncrementalStrain()

ComputePlaneIncrementalStrain::ComputePlaneIncrementalStrain ( const InputParameters &  parameters)

Definition at line 31 of file ComputePlaneIncrementalStrain.C.

32  : Compute2DIncrementalStrain(parameters),
33  _subblock_id_provider(isParamValid("subblock_index_provider")
34  ? &getUserObject<SubblockIndexProvider>("subblock_index_provider")
35  : nullptr),
36  _scalar_out_of_plane_strain_coupled(isParamValid("scalar_out_of_plane_strain")),
37  _nscalar_strains(coupledScalarComponents("scalar_out_of_plane_strain")),
38  _out_of_plane_strain_coupled(isCoupled("out_of_plane_strain")),
39  _out_of_plane_strain(_out_of_plane_strain_coupled ? coupledValue("out_of_plane_strain")
40  : _zero),
41  _out_of_plane_strain_old(_out_of_plane_strain_coupled ? coupledValueOld("out_of_plane_strain")
42  : _zero)
43 {
45  mooseError("Must define only one of out_of_plane_strain or scalar_out_of_plane_strain");
46 
48  {
51  for (unsigned int i = 0; i < _nscalar_strains; ++i)
52  {
53  _scalar_out_of_plane_strain[i] = &coupledScalarValue("scalar_out_of_plane_strain", i);
54  _scalar_out_of_plane_strain_old[i] = &coupledScalarValueOld("scalar_out_of_plane_strain", i);
55  }
56  }
57 }

Member Function Documentation

◆ computeOutOfPlaneGradDisp()

Real ComputePlaneIncrementalStrain::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 60 of file ComputePlaneIncrementalStrain.C.

61 {
64  else
65  return _out_of_plane_strain[_qp];
66 }

◆ computeOutOfPlaneGradDispOld()

Real ComputePlaneIncrementalStrain::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 69 of file ComputePlaneIncrementalStrain.C.

70 {
73  else
74  return _out_of_plane_strain_old[_qp];
75 }

◆ 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 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 ComputeIncrementalSmallStrain.

Definition at line 58 of file Compute2DIncrementalStrain.C.

59 {
60  // Deformation gradient calculation for 2D problems
61  RankTwoTensor A(
62  (*_grad_disp[0])[_qp], (*_grad_disp[1])[_qp], (*_grad_disp[2])[_qp]); // Deformation gradient
63  RankTwoTensor Fbar((*_grad_disp_old[0])[_qp],
64  (*_grad_disp_old[1])[_qp],
65  (*_grad_disp_old[2])[_qp]); // Old Deformation gradient
66 
67  // Compute the displacement gradient of the out of plane direction for plane strain,
68  // generalized plane strain, or axisymmetric problems
71 
72  _deformation_gradient[_qp] = A;
73  _deformation_gradient[_qp].addIa(1.0);
74 
75  A -= Fbar; // very nearly A = gradU - gradUold
76 
77  total_strain_increment = 0.5 * (A + A.transpose());
78 }

◆ displacementIntegrityCheck()

void Compute2DIncrementalStrain::displacementIntegrityCheck ( )
overrideprotectedvirtualinherited

Reimplemented from ComputeStrainBase.

Definition at line 81 of file Compute2DIncrementalStrain.C.

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

◆ getCurrentSubblockIndex()

unsigned int ComputePlaneIncrementalStrain::getCurrentSubblockIndex ( ) const
inlineprotected

gets its subblock index for current element

Definition at line 36 of file ComputePlaneIncrementalStrain.h.

37  {
38  return _subblock_id_provider ? _subblock_id_provider->getSubblockIndex(*_current_elem) : 0;
39  };

Referenced by computeOutOfPlaneGradDisp(), and computeOutOfPlaneGradDispOld().

◆ initialSetup()

void Compute2DIncrementalStrain::initialSetup ( )
overrideinherited

Definition at line 35 of file Compute2DIncrementalStrain.C.

36 {
37  for (unsigned int i = 0; i < 3; ++i)
38  {
39  if (_out_of_plane_direction == i)
40  {
41  _disp[i] = &_zero;
42  _grad_disp[i] = &_grad_zero;
43  }
44  else
45  {
46  _disp[i] = &coupledValue("displacements", i);
47  _grad_disp[i] = &coupledGradient("displacements", i);
48  }
49 
50  if (_fe_problem.isTransient() && i != _out_of_plane_direction)
51  _grad_disp_old[i] = &coupledGradientOld("displacements", i);
52  else
53  _grad_disp_old[i] = &_grad_zero;
54  }
55 }

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

Definition at line 17 of file ComputePlaneIncrementalStrain.C.

18 {
19  InputParameters params = Compute2DIncrementalStrain::validParams();
20  params.addClassDescription(
21  "Compute strain increment for small strain under 2D planar assumptions.");
22  params.addParam<UserObjectName>("subblock_index_provider",
23  "SubblockIndexProvider user object name");
24  params.addCoupledVar("scalar_out_of_plane_strain",
25  "Scalar variable for generalized plane strain");
26  params.addCoupledVar("out_of_plane_strain", "Nonlinear variable for plane stress condition");
27 
28  return params;
29 }

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

◆ _nscalar_strains

unsigned int ComputePlaneIncrementalStrain::_nscalar_strains
protected

Definition at line 44 of file ComputePlaneIncrementalStrain.h.

Referenced by ComputePlaneIncrementalStrain().

◆ _out_of_plane_direction

const unsigned int Compute2DIncrementalStrain::_out_of_plane_direction
protectedinherited

◆ _out_of_plane_strain

const VariableValue& ComputePlaneIncrementalStrain::_out_of_plane_strain
protected

Definition at line 49 of file ComputePlaneIncrementalStrain.h.

Referenced by computeOutOfPlaneGradDisp().

◆ _out_of_plane_strain_coupled

const bool ComputePlaneIncrementalStrain::_out_of_plane_strain_coupled
protected

Definition at line 48 of file ComputePlaneIncrementalStrain.h.

Referenced by ComputePlaneIncrementalStrain().

◆ _out_of_plane_strain_old

const VariableValue& ComputePlaneIncrementalStrain::_out_of_plane_strain_old
protected

Definition at line 50 of file ComputePlaneIncrementalStrain.h.

Referenced by computeOutOfPlaneGradDispOld().

◆ _rotation_increment

MaterialProperty<RankTwoTensor>& ComputeIncrementalStrainBase::_rotation_increment
protectedinherited

◆ _scalar_out_of_plane_strain

std::vector<const VariableValue *> ComputePlaneIncrementalStrain::_scalar_out_of_plane_strain
protected

◆ _scalar_out_of_plane_strain_coupled

const bool ComputePlaneIncrementalStrain::_scalar_out_of_plane_strain_coupled
protected

◆ _scalar_out_of_plane_strain_old

std::vector<const VariableValue *> ComputePlaneIncrementalStrain::_scalar_out_of_plane_strain_old
protected

◆ _strain_increment

MaterialProperty<RankTwoTensor>& ComputeIncrementalStrainBase::_strain_increment
protectedinherited

◆ _strain_rate

MaterialProperty<RankTwoTensor>& ComputeIncrementalStrainBase::_strain_rate
protectedinherited

◆ _subblock_id_provider

const SubblockIndexProvider* ComputePlaneIncrementalStrain::_subblock_id_provider
protected

Definition at line 39 of file ComputePlaneIncrementalStrain.h.

Referenced by getCurrentSubblockIndex().

◆ _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:
ComputeIncrementalStrainBase::_strain_rate
MaterialProperty< RankTwoTensor > & _strain_rate
Definition: ComputeIncrementalStrainBase.h:38
Compute2DIncrementalStrain::computeOutOfPlaneGradDispOld
virtual Real computeOutOfPlaneGradDispOld()=0
Computes the old out-of-plane component of the displacement gradient; as a virtual function,...
ComputeStrainBase::_current_elem_volume
const Real & _current_elem_volume
Definition: ComputeStrainBase.h:56
SubblockIndexProvider::getSubblockIndex
virtual unsigned int getSubblockIndex(const Elem &) const =0
The index of subblock this element is on.
ComputePlaneIncrementalStrain::_scalar_out_of_plane_strain_coupled
const bool _scalar_out_of_plane_strain_coupled
Definition: ComputePlaneIncrementalStrain.h:43
ComputeStrainBase::_disp
std::vector< const VariableValue * > _disp
Definition: ComputeStrainBase.h:41
ComputeIncrementalStrainBase::subtractEigenstrainIncrementFromStrain
void subtractEigenstrainIncrementFromStrain(RankTwoTensor &strain)
Definition: ComputeIncrementalStrainBase.C:59
ComputePlaneIncrementalStrain::_subblock_id_provider
const SubblockIndexProvider * _subblock_id_provider
Definition: ComputePlaneIncrementalStrain.h:39
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
Compute2DIncrementalStrain::Compute2DIncrementalStrain
Compute2DIncrementalStrain(const InputParameters &parameters)
Definition: Compute2DIncrementalStrain.C:28
ComputeStrainBase::_mechanical_strain
MaterialProperty< RankTwoTensor > & _mechanical_strain
Definition: ComputeStrainBase.h:46
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
ComputePlaneIncrementalStrain::getCurrentSubblockIndex
unsigned int getCurrentSubblockIndex() const
gets its subblock index for current element
Definition: ComputePlaneIncrementalStrain.h:36
Compute2DIncrementalStrain::_out_of_plane_direction
const unsigned int _out_of_plane_direction
Definition: Compute2DIncrementalStrain.h:57
ComputePlaneIncrementalStrain::_out_of_plane_strain_old
const VariableValue & _out_of_plane_strain_old
Definition: ComputePlaneIncrementalStrain.h:50
Compute2DIncrementalStrain::computeOutOfPlaneGradDisp
virtual Real computeOutOfPlaneGradDisp()=0
Computes the current out-of-plane component of the displacement gradient; as a virtual function,...
ComputeStrainBase::_eigenstrains
std::vector< const MaterialProperty< RankTwoTensor > * > _eigenstrains
Definition: ComputeStrainBase.h:51
ComputePlaneIncrementalStrain::_scalar_out_of_plane_strain_old
std::vector< const VariableValue * > _scalar_out_of_plane_strain_old
Definition: ComputePlaneIncrementalStrain.h:46
RankTwoTensorTempl< Real >
Compute2DIncrementalStrain::validParams
static InputParameters validParams()
Definition: Compute2DIncrementalStrain.C:17
ComputeStrainBase::_total_strain
MaterialProperty< RankTwoTensor > & _total_strain
Definition: ComputeStrainBase.h:48
ComputePlaneIncrementalStrain::_out_of_plane_strain
const VariableValue & _out_of_plane_strain
Definition: ComputePlaneIncrementalStrain.h:49
ComputePlaneIncrementalStrain::_scalar_out_of_plane_strain
std::vector< const VariableValue * > _scalar_out_of_plane_strain
Definition: ComputePlaneIncrementalStrain.h:45
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
ComputePlaneIncrementalStrain::_out_of_plane_strain_coupled
const bool _out_of_plane_strain_coupled
Definition: ComputePlaneIncrementalStrain.h:48
ComputePlaneIncrementalStrain::_nscalar_strains
unsigned int _nscalar_strains
Definition: ComputePlaneIncrementalStrain.h:44