12 #include "FEProblem.h"
13 #include "MooseMesh.h"
15 #include "libmesh/quadrature.h"
21 template <ComputeStage compute_stage>
26 params.addClassDescription(
"Compute a strain increment and rotation increment for finite strains "
27 "in 1D spherical symmetry problems.");
31 template <ComputeStage compute_stage>
33 const InputParameters & parameters)
35 _disp_old_0(coupledValueOld(
"displacements", 0))
39 template <ComputeStage compute_stage>
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.");
51 template <ComputeStage compute_stage>
55 for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
64 A(0, 0) = (*_grad_disp[0])[_qp](0);
65 Fbar(0, 0) = (*_grad_disp_old[0])[_qp](0);
68 if (!MooseUtils::relativeFuzzyEqual(_q_point[_qp](0), 0.0))
70 A(1, 1) = (*_disp[0])[_qp] / _q_point[_qp](0);
71 Fbar(1, 1) = _disp_old_0[_qp] / _q_point[_qp](0);
76 Fbar(2, 2) = Fbar(1, 1);
85 _Fhat[_qp] = A * Fbar.inverse();
86 _Fhat[_qp].addIa(1.0);