https://mooseframework.inl.gov
Loading...
Searching...
No Matches
ComputeRSphericalIncrementalStrain.C
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
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
21{
24 "Compute a strain increment for incremental strains in 1D spherical symmetry problems.");
25 return params;
26}
27
29 const InputParameters & parameters)
30 : ComputeIncrementalStrain(parameters), _disp_old_0(coupledValueOld("displacements", 0))
31{
32}
33
34void
36{
38
39 const auto & subdomainIDs = _mesh.meshSubdomains();
40 for (auto subdomainID : subdomainIDs)
41 if (_fe_problem.getCoordSystem(subdomainID) != Moose::COORD_RSPHERICAL)
42 mooseError("The coordinate system must be set to RSPHERICAL for 1D R spherical simulations.");
43}
44
45void
47 RankTwoTensor & total_strain_increment)
48{
49 // Deformation gradient calculation in cylindrical coordinates
50 RankTwoTensor A; // Deformation gradient
51 RankTwoTensor Fbar; // Old Deformation gradient
52
53 // Step through calculating the current and old deformation gradients
54 // Only diagonal components are nonzero because this is a 1D material
55 // Note: x_disp is the radial displacement
56 A(0, 0) = (*_grad_disp[0])[_qp](0);
57 Fbar(0, 0) = (*_grad_disp_old[0])[_qp](0);
58
59 // The polar and azimuthal strains are functions of radial displacement
60 if (!MooseUtils::relativeFuzzyEqual(_q_point[_qp](0), 0.0))
61 {
62 A(1, 1) = (*_disp[0])[_qp] / _q_point[_qp](0);
63 Fbar(1, 1) = _disp_old_0[_qp] / _q_point[_qp](0);
64 }
65
66 // The polar and azimuthal strains are equivalent in this 1D problem
67 A(2, 2) = A(1, 1);
68 Fbar(2, 2) = Fbar(1, 1);
69
70 // Gauss point deformation gradient
72 _deformation_gradient[_qp].addIa(1.0);
73
74 // very nearly A = gradU - gradUold, adapted to cylindrical coords
75 A -= Fbar;
76
77 total_strain_increment = 0.5 * (A + A.transpose());
78}
registerMooseObject("SolidMechanicsApp", ComputeRSphericalIncrementalStrain)
void mooseError(Args &&... args)
std::vector< const VariableGradient * > _grad_disp_old
MaterialProperty< RankTwoTensor > & _deformation_gradient
ComputeIncrementalStrain defines a strain increment and rotation increment (=1), for small strains.
static InputParameters validParams()
ComputeRSphericalIncrementalStrain defines a strain increment only for small strains in 1D spherical ...
const VariableValue & _disp_old_0
the old value of the first component of the displacements vector
virtual void computeTotalStrainIncrement(RankTwoTensor &total_strain_increment) override
Computes the current and old deformation gradients with the assumptions for 1D spherical symmetry geo...
ComputeRSphericalIncrementalStrain(const InputParameters &parameters)
std::vector< const VariableGradient * > _grad_disp
Gradient of displacements.
std::vector< const VariableValue * > _disp
Displacement variables.
void addClassDescription(const std::string &doc_string)
COORD_RSPHERICAL