www.mooseframework.org
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)
 

Protected Member Functions

virtual Real computeGradDispZZ ()
 Computes the current out-of-plane displacement gradient; as a virtual function, this function is overwritten for the specific geometries defined by inheriting classes. More...
 
virtual Real computeGradDispZZOld ()
 Computes the old out-of-plane displacement gradient; as a virtual function, this function is overwritten for the specific geometries defined by inheriting classes. More...
 
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 computeProperties () override
 
virtual void initQpStatefulProperties () override
 
void subtractEigenstrainIncrementFromStrain (RankTwoTensor &strain)
 

Protected Attributes

const bool _scalar_out_of_plane_strain_coupled
 
const VariableValue & _scalar_out_of_plane_strain
 
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
 
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
 
std::string _base_name
 
MaterialProperty< RankTwoTensor > & _mechanical_strain
 
MaterialProperty< RankTwoTensor > & _total_strain
 
std::vector< MaterialPropertyName > _eigenstrain_names
 
std::vector< const MaterialProperty< RankTwoTensor > * > _eigenstrains
 
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 16 of file ComputePlaneIncrementalStrain.h.

Constructor & Destructor Documentation

ComputePlaneIncrementalStrain::ComputePlaneIncrementalStrain ( const InputParameters &  parameters)

Definition at line 23 of file ComputePlaneIncrementalStrain.C.

24  : Compute2DIncrementalStrain(parameters),
25  _scalar_out_of_plane_strain_coupled(isCoupledScalar("scalar_out_of_plane_strain")),
27  ? coupledScalarValue("scalar_out_of_plane_strain")
28  : _zero),
30  ? coupledScalarValueOld("scalar_out_of_plane_strain")
31  : _zero),
32  _out_of_plane_strain_coupled(isCoupled("out_of_plane_strain")),
33  _out_of_plane_strain(_out_of_plane_strain_coupled ? coupledValue("out_of_plane_strain")
34  : _zero),
35  _out_of_plane_strain_old(_out_of_plane_strain_coupled ? coupledValueOld("out_of_plane_strain")
36  : _zero)
37 {
39  mooseError("Must define only one of out_of_plane_strain or scalar_out_of_plane_strain");
40 }
Compute2DIncrementalStrain(const InputParameters &parameters)
const VariableValue & _scalar_out_of_plane_strain_old

Member Function Documentation

Real ComputePlaneIncrementalStrain::computeGradDispZZ ( )
protectedvirtual

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

Implements Compute2DIncrementalStrain.

Definition at line 43 of file ComputePlaneIncrementalStrain.C.

44 {
47  else
48  return _out_of_plane_strain[_qp];
49 }
Real ComputePlaneIncrementalStrain::computeGradDispZZOld ( )
protectedvirtual

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

Implements Compute2DIncrementalStrain.

Definition at line 52 of file ComputePlaneIncrementalStrain.C.

53 {
56  else
57  return _out_of_plane_strain_old[_qp];
58 }
const VariableValue & _scalar_out_of_plane_strain_old
void ComputeIncrementalSmallStrain::computeProperties ( )
overrideprotectedvirtualinherited

Definition at line 27 of file ComputeIncrementalSmallStrain.C.

28 {
29  Real volumetric_strain = 0.0;
30  for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
31  {
32  RankTwoTensor total_strain_increment;
33  computeTotalStrainIncrement(total_strain_increment);
34 
35  _strain_increment[_qp] = total_strain_increment;
36 
38  volumetric_strain += total_strain_increment.trace() * _JxW[_qp] * _coord[_qp];
39  }
41  volumetric_strain /= _current_elem_volume;
42 
43  for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
44  {
45  Real trace = _strain_increment[_qp].trace();
47  {
48  _strain_increment[_qp](0, 0) += (volumetric_strain - trace) / 3.0;
49  _strain_increment[_qp](1, 1) += (volumetric_strain - trace) / 3.0;
50  _strain_increment[_qp](2, 2) += (volumetric_strain - trace) / 3.0;
51  }
52 
54 
55  // Remove the Eigen strain increment
56  subtractEigenstrainIncrementFromStrain(_strain_increment[_qp]);
57 
58  // strain rate
59  if (_dt > 0)
60  _strain_rate[_qp] = _strain_increment[_qp] / _dt;
61  else
62  _strain_rate[_qp].zero();
63 
64  // Update strain in intermediate configuration: rotations are not needed
65  _mechanical_strain[_qp] = _mechanical_strain_old[_qp] + _strain_increment[_qp];
66  }
67 }
const Real & _current_elem_volume
const MaterialProperty< RankTwoTensor > & _total_strain_old
MaterialProperty< RankTwoTensor > & _strain_increment
MaterialProperty< RankTwoTensor > & _mechanical_strain
virtual void computeTotalStrainIncrement(RankTwoTensor &total_strain_increment)
Computes the current and old deformation gradients and passes back the total strain increment tensor...
MaterialProperty< RankTwoTensor > & _strain_rate
void subtractEigenstrainIncrementFromStrain(RankTwoTensor &strain)
const MaterialProperty< RankTwoTensor > & _mechanical_strain_old
MaterialProperty< RankTwoTensor > & _total_strain
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 26 of file Compute2DIncrementalStrain.C.

27 {
28  // Deformation gradient calculation for 2D problems
29  // Note: x_disp is the radial displacement, y_disp is the axial displacement
30  RankTwoTensor A(
31  (*_grad_disp[0])[_qp], (*_grad_disp[1])[_qp], (*_grad_disp[2])[_qp]); // Deformation gradient
32  RankTwoTensor Fbar((*_grad_disp_old[0])[_qp],
33  (*_grad_disp_old[1])[_qp],
34  (*_grad_disp_old[2])[_qp]); // Old Deformation gradient
35 
36  // Compute the displacement gradient (2,2) value for plane strain, generalized plane strain, or
37  // axisymmetric problems
38  A(2, 2) = computeGradDispZZ();
39  Fbar(2, 2) = computeGradDispZZOld();
40 
41  _deformation_gradient[_qp] = A;
42  _deformation_gradient[_qp].addIa(1.0);
43 
44  A -= Fbar; // very nearly A = gradU - gradUold, adapted to cylindrical coords
45 
46  total_strain_increment = 0.5 * (A + A.transpose());
47 }
MaterialProperty< RankTwoTensor > & _deformation_gradient
virtual Real computeGradDispZZOld()=0
Computes the old out-of-plane displacement gradient; as a virtual function, this function is overwrit...
std::vector< const VariableGradient * > _grad_disp_old
virtual Real computeGradDispZZ()=0
Computes the current out-of-plane displacement gradient; as a virtual function, this function is over...
std::vector< const VariableGradient * > _grad_disp
void ComputeIncrementalStrainBase::initQpStatefulProperties ( )
overrideprotectedvirtualinherited

Reimplemented from ComputeStrainBase.

Reimplemented in ComputeCosseratIncrementalSmallStrain.

Definition at line 44 of file ComputeIncrementalStrainBase.C.

Referenced by ComputeCosseratIncrementalSmallStrain::initQpStatefulProperties(), and ComputeIncrementalStrainBase::~ComputeIncrementalStrainBase().

45 {
46  _mechanical_strain[_qp].zero();
47  _total_strain[_qp].zero();
48  _deformation_gradient[_qp].zero();
49  _deformation_gradient[_qp].addIa(1.0);
50 
51  // Note that for some models (small strain), the rotation increment is
52  // never updated. Because we always have stateful properties, this method
53  // always gets called, so we can rely on this getting set here without
54  // setting it again when properties get computed.
55  _rotation_increment[_qp].zero();
56  _rotation_increment[_qp].addIa(1.0);
57 }
MaterialProperty< RankTwoTensor > & _deformation_gradient
MaterialProperty< RankTwoTensor > & _mechanical_strain
MaterialProperty< RankTwoTensor > & _rotation_increment
MaterialProperty< RankTwoTensor > & _total_strain
void ComputeIncrementalStrainBase::subtractEigenstrainIncrementFromStrain ( RankTwoTensor &  strain)
protectedinherited

Definition at line 60 of file ComputeIncrementalStrainBase.C.

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

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

Member Data Documentation

std::string ComputeStrainBase::_base_name
protectedinherited

Definition at line 33 of file ComputeStrainBase.h.

Referenced by ComputeStrainBase::ComputeStrainBase().

const Real& ComputeStrainBase::_current_elem_volume
protectedinherited
MaterialProperty<RankTwoTensor>& ComputeIncrementalStrainBase::_deformation_gradient
protectedinherited
std::vector<const VariableValue *> ComputeStrainBase::_disp
protectedinherited
std::vector<MaterialPropertyName> ComputeStrainBase::_eigenstrain_names
protectedinherited
std::vector<const MaterialProperty<RankTwoTensor> *> ComputeStrainBase::_eigenstrains
protectedinherited
std::vector<const MaterialProperty<RankTwoTensor> *> ComputeIncrementalStrainBase::_eigenstrains_old
protectedinherited
std::vector<const VariableGradient *> ComputeStrainBase::_grad_disp
protectedinherited
std::vector<const VariableGradient *> ComputeIncrementalStrainBase::_grad_disp_old
protectedinherited
MaterialProperty<RankTwoTensor>& ComputeStrainBase::_mechanical_strain
protectedinherited
const MaterialProperty<RankTwoTensor>& ComputeIncrementalStrainBase::_mechanical_strain_old
protectedinherited
unsigned int ComputeStrainBase::_ndisp
protectedinherited
const VariableValue& ComputePlaneIncrementalStrain::_out_of_plane_strain
protected

Definition at line 30 of file ComputePlaneIncrementalStrain.h.

Referenced by computeGradDispZZ().

const bool ComputePlaneIncrementalStrain::_out_of_plane_strain_coupled
protected

Definition at line 29 of file ComputePlaneIncrementalStrain.h.

Referenced by ComputePlaneIncrementalStrain().

const VariableValue& ComputePlaneIncrementalStrain::_out_of_plane_strain_old
protected

Definition at line 31 of file ComputePlaneIncrementalStrain.h.

Referenced by computeGradDispZZOld().

MaterialProperty<RankTwoTensor>& ComputeIncrementalStrainBase::_rotation_increment
protectedinherited
const VariableValue& ComputePlaneIncrementalStrain::_scalar_out_of_plane_strain
protected

Definition at line 26 of file ComputePlaneIncrementalStrain.h.

Referenced by computeGradDispZZ().

const bool ComputePlaneIncrementalStrain::_scalar_out_of_plane_strain_coupled
protected
const VariableValue& ComputePlaneIncrementalStrain::_scalar_out_of_plane_strain_old
protected

Definition at line 27 of file ComputePlaneIncrementalStrain.h.

Referenced by computeGradDispZZOld().

MaterialProperty<RankTwoTensor>& ComputeIncrementalStrainBase::_strain_increment
protectedinherited
MaterialProperty<RankTwoTensor>& ComputeIncrementalStrainBase::_strain_rate
protectedinherited
MaterialProperty<RankTwoTensor>& ComputeStrainBase::_total_strain
protectedinherited
const MaterialProperty<RankTwoTensor>& ComputeIncrementalStrainBase::_total_strain_old
protectedinherited
bool ComputeStrainBase::_volumetric_locking_correction
protectedinherited

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