www.mooseframework.org
ComputeRSphericalFiniteStrain.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
11 #include "Assembly.h"
12 #include "FEProblem.h"
13 #include "MooseMesh.h"
14 
15 #include "libmesh/quadrature.h"
16 
18 
20 
21 InputParameters
23 {
24  InputParameters params = ComputeFiniteStrain::validParams();
25  params.addClassDescription("Compute a strain increment and rotation increment for finite strains "
26  "in 1D spherical symmetry problems.");
27  return params;
28 }
29 
31  : ComputeFiniteStrain(parameters), _disp_old_0(coupledValueOld("displacements", 0))
32 {
33 }
34 
35 void
37 {
39 
40  const auto & subdomainIDs = _mesh.meshSubdomains();
41  for (auto subdomainID : subdomainIDs)
42  if (_fe_problem.getCoordSystem(subdomainID) != Moose::COORD_RSPHERICAL)
43  mooseError("The coordinate system must be set to RSPHERICAL for 1D R spherical simulations.");
44 }
45 
46 void
48 {
49  // Method from Rashid, 1993
50  RankTwoTensor ave_Fhat;
51 
52  for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
53  {
54  // Deformation gradient calculation in cylindrical coordinates
55  RankTwoTensor A; // Deformation gradient
56  RankTwoTensor Fbar; // Old Deformation gradient
57 
58  // Step through calculating the current and old deformation gradients
59  // Only diagonal components are nonzero because this is a 1D material
60  // Note: x_disp is the radial displacement
61  A(0, 0) = (*_grad_disp[0])[_qp](0);
62  Fbar(0, 0) = (*_grad_disp_old[0])[_qp](0);
63 
64  // The polar and azimuthal strains are functions of radial displacement
65  if (!MooseUtils::relativeFuzzyEqual(_q_point[_qp](0), 0.0))
66  {
67  A(1, 1) = (*_disp[0])[_qp] / _q_point[_qp](0);
68  Fbar(1, 1) = _disp_old_0[_qp] / _q_point[_qp](0);
69  }
70 
71  // The polar and azimuthal strains are equivalent in this 1D problem
72  A(2, 2) = A(1, 1);
73  Fbar(2, 2) = Fbar(1, 1);
74 
75  // Gauss point deformation gradient
76  _deformation_gradient[_qp] = A;
77  _deformation_gradient[_qp].addIa(1.0);
78 
79  // very nearly A = gradU - gradUold, adapted to cylindrical coords
80  A -= Fbar;
81 
82  // Fbar = ( I + gradUold)
83  Fbar.addIa(1.0);
84 
85  // Incremental deformation gradient _Fhat = I + A Fbar^-1
86  _Fhat[_qp] = A * Fbar.inverse();
87  _Fhat[_qp].addIa(1.0);
88 
90  }
91 }
ComputeStrainBase::_disp
std::vector< const VariableValue * > _disp
Definition: ComputeStrainBase.h:41
registerMooseObject
registerMooseObject("TensorMechanicsApp", ComputeRSphericalFiniteStrain)
ComputeFiniteStrain
ComputeFiniteStrain defines a strain increment and rotation increment, for finite strains.
Definition: ComputeFiniteStrain.h:22
ComputeIncrementalStrainBase::_grad_disp_old
std::vector< const VariableGradient * > _grad_disp_old
Definition: ComputeIncrementalStrainBase.h:36
ComputeFiniteStrain::_Fhat
std::vector< RankTwoTensor > _Fhat
Definition: ComputeFiniteStrain.h:37
defineLegacyParams
defineLegacyParams(ComputeRSphericalFiniteStrain)
ComputeRSphericalFiniteStrain::_disp_old_0
const VariableValue & _disp_old_0
the old value of the first component of the displacements vector
Definition: ComputeRSphericalFiniteStrain.h:40
ComputeRSphericalFiniteStrain::ComputeRSphericalFiniteStrain
ComputeRSphericalFiniteStrain(const InputParameters &parameters)
Definition: ComputeRSphericalFiniteStrain.C:30
ComputeFiniteStrain::computeQpStrain
virtual void computeQpStrain()
Definition: ComputeFiniteStrain.C:105
ComputeIncrementalStrainBase::_deformation_gradient
MaterialProperty< RankTwoTensor > & _deformation_gradient
Definition: ComputeIncrementalStrainBase.h:42
ComputeRSphericalFiniteStrain::initialSetup
virtual void initialSetup()
Definition: ComputeRSphericalFiniteStrain.C:36
ComputeIncrementalStrainBase::initialSetup
void initialSetup() override
Definition: ComputeIncrementalStrainBase.C:38
ComputeRSphericalFiniteStrain.h
ComputeRSphericalFiniteStrain::computeProperties
virtual void computeProperties()
Computes the current and old deformation gradients with the assumptions for 1D spherical symmetry geo...
Definition: ComputeRSphericalFiniteStrain.C:47
ComputeRSphericalFiniteStrain::validParams
static InputParameters validParams()
Definition: ComputeRSphericalFiniteStrain.C:22
RankTwoTensorTempl< Real >
ComputeFiniteStrain::validParams
static InputParameters validParams()
Definition: ComputeFiniteStrain.C:27
ComputeStrainBase::_grad_disp
std::vector< const VariableGradient * > _grad_disp
Definition: ComputeStrainBase.h:42
ComputeRSphericalFiniteStrain
ComputeRSphericalFiniteStrain defines a strain increment and a rotation increment for finite strains ...
Definition: ComputeRSphericalFiniteStrain.h:25