Compute2DFiniteStrain.C
Go to the documentation of this file.
1 /****************************************************************/
2 /* MOOSE - Multiphysics Object Oriented Simulation Environment */
3 /* */
4 /* All contents are licensed under LGPL V2.1 */
5 /* See LICENSE for full restrictions */
6 /****************************************************************/
7
9
11
12 template <>
13 InputParameters
15 {
16  InputParameters params = validParams<ComputeFiniteStrain>();
18  "Compute a strain increment and rotation increment for finite strains in 2D geometries.");
19  return params;
20 }
21
22 Compute2DFiniteStrain::Compute2DFiniteStrain(const InputParameters & parameters)
23  : ComputeFiniteStrain(parameters)
24 {
25 }
26
27 void
29 {
30  RankTwoTensor ave_Fhat;
31  Real ave_dfgrd_det = 0.0;
32
33  for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
34  {
35  // Deformation gradient calculation for 2D problems
36  // Note: x_disp is the radial displacement, y_disp is the axial displacement
43
44  // Compute the displacement gradient (2,2) value for plane strain, generalized plane strain, or
45  // axisymmetric problems
48
49  // Gauss point deformation gradient
52
54
56
57  // Incremental deformation gradient _Fhat = I + A Fbar^-1
58  _Fhat[_qp] = A * Fbar.inverse();
60
62  {
63  // Calculate average _Fhat for volumetric locking correction
64  ave_Fhat += _Fhat[_qp] * _JxW[_qp] * _coord[_qp];
65
67  ave_dfgrd_det += _deformation_gradient[_qp].det() * _JxW[_qp] * _coord[_qp];
68  }
69  }
71  {
72  // needed for volumetric locking correction
73  ave_Fhat /= _current_elem_volume;
75  ave_dfgrd_det /= _current_elem_volume;
76  }
77  for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
78  {
80  {
81  // Finalize volumetric locking correction
82  _Fhat[_qp] *= std::cbrt(ave_Fhat.det() / _Fhat[_qp].det());
83  // Volumetric locking correction
85  }
86
88  }
89 }
virtual void computeProperties()