www.mooseframework.org
ADComputeRSphericalFiniteStrain.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 template <ComputeStage compute_stage>
22 InputParameters
24 {
25  InputParameters params = ADComputeFiniteStrain<compute_stage>::validParams();
26  params.addClassDescription("Compute a strain increment and rotation increment for finite strains "
27  "in 1D spherical symmetry problems.");
28  return params;
29 }
30 
31 template <ComputeStage compute_stage>
33  const InputParameters & parameters)
34  : ADComputeFiniteStrain<compute_stage>(parameters),
35  _disp_old_0(coupledValueOld("displacements", 0))
36 {
37 }
38 
39 template <ComputeStage compute_stage>
40 void
42 {
44 
45  const auto & subdomainIDs = _mesh.meshSubdomains();
46  for (auto subdomainID : subdomainIDs)
47  if (_fe_problem.getCoordSystem(subdomainID) != Moose::COORD_RSPHERICAL)
48  mooseError("The coordinate system must be set to RSPHERICAL for 1D R spherical simulations.");
49 }
50 
51 template <ComputeStage compute_stage>
52 void
54 {
55  for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
56  {
57  // Deformation gradient calculation in cylindrical coordinates
58  ADRankTwoTensor A; // Deformation gradient
59  RankTwoTensor Fbar; // Old Deformation gradient
60 
61  // Step through calculating the current and old deformation gradients
62  // Only diagonal components are nonzero because this is a 1D material
63  // Note: x_disp is the radial displacement
64  A(0, 0) = (*_grad_disp[0])[_qp](0);
65  Fbar(0, 0) = (*_grad_disp_old[0])[_qp](0);
66 
67  // The polar and azimuthal strains are functions of radial displacement
68  if (!MooseUtils::relativeFuzzyEqual(_q_point[_qp](0), 0.0))
69  {
70  A(1, 1) = (*_disp[0])[_qp] / _q_point[_qp](0);
71  Fbar(1, 1) = _disp_old_0[_qp] / _q_point[_qp](0);
72  }
73 
74  // The polar and azimuthal strains are equivalent in this 1D problem
75  A(2, 2) = A(1, 1);
76  Fbar(2, 2) = Fbar(1, 1);
77 
78  // very nearly A = gradU - gradUold, adapted to cylindrical coords
79  A -= Fbar;
80 
81  // Fbar = ( I + gradUold)
82  Fbar.addIa(1.0);
83 
84  // Incremental deformation gradient _Fhat = I + A Fbar^-1
85  _Fhat[_qp] = A * Fbar.inverse();
86  _Fhat[_qp].addIa(1.0);
87 
88  computeQpStrain();
89  }
90 }
ADComputeRSphericalFiniteStrain::computeProperties
virtual void computeProperties()
Computes the current and old deformation gradients with the assumptions for 1D spherical symmetry geo...
Definition: ADComputeRSphericalFiniteStrain.C:53
ADComputeRSphericalFiniteStrain.h
defineADLegacyParams
defineADLegacyParams(ADComputeRSphericalFiniteStrain)
ADComputeFiniteStrain::validParams
static InputParameters validParams()
Definition: ADComputeFiniteStrain.C:28
registerADMooseObject
registerADMooseObject("TensorMechanicsApp", ADComputeRSphericalFiniteStrain)
ADComputeFiniteStrain
ADComputeFiniteStrain defines a strain increment and rotation increment, for finite strains.
Definition: ADComputeFiniteStrain.h:21
ADComputeRSphericalFiniteStrain::ADComputeRSphericalFiniteStrain
ADComputeRSphericalFiniteStrain(const InputParameters &parameters)
Definition: ADComputeRSphericalFiniteStrain.C:32
ADComputeIncrementalStrainBase::initialSetup
void initialSetup() override
Definition: ADComputeIncrementalStrainBase.C:41
ADComputeRSphericalFiniteStrain::validParams
static InputParameters validParams()
Definition: ADComputeRSphericalFiniteStrain.C:23
RankTwoTensorTempl< Real >
ADComputeRSphericalFiniteStrain
ADComputeRSphericalFiniteStrain defines a strain increment and a rotation increment for finite strain...
Definition: ADComputeRSphericalFiniteStrain.h:15
ADComputeRSphericalFiniteStrain::initialSetup
virtual void initialSetup()
Definition: ADComputeRSphericalFiniteStrain.C:41