www.mooseframework.org
ComputeAxisymmetric1DIncrementalStrain.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 
13 
15 
16 InputParameters
18 {
19  InputParameters params = Compute1DIncrementalStrain::validParams();
20  params.addClassDescription(
21  "Compute strain increment for small strains in an axisymmetric 1D problem");
22  params.addParam<UserObjectName>("subblock_index_provider",
23  "SubblockIndexProvider user object name");
24  params.addCoupledVar("scalar_out_of_plane_strain", "Scalar variable for axisymmetric 1D problem");
25  params.addCoupledVar("out_of_plane_strain", "Nonlinear variable for axisymmetric 1D problem");
26 
27  return params;
28 }
29 
31  const InputParameters & parameters)
32  : Compute1DIncrementalStrain(parameters),
33  _disp_old_0(coupledValueOld("displacements", 0)),
34  _subblock_id_provider(isParamValid("subblock_index_provider")
35  ? &getUserObject<SubblockIndexProvider>("subblock_index_provider")
36  : nullptr),
37  _has_out_of_plane_strain(isParamValid("out_of_plane_strain")),
38  _out_of_plane_strain(_has_out_of_plane_strain ? coupledValue("out_of_plane_strain") : _zero),
39  _out_of_plane_strain_old(_has_out_of_plane_strain ? coupledValueOld("out_of_plane_strain")
40  : _zero),
41  _has_scalar_out_of_plane_strain(isParamValid("scalar_out_of_plane_strain")),
42  _nscalar_strains(coupledScalarComponents("scalar_out_of_plane_strain"))
43 {
45  mooseError("Must define only one of out_of_plane_strain or scalar_out_of_plane_strain");
46 
48  {
51  for (unsigned int i = 0; i < _nscalar_strains; ++i)
52  {
53  _scalar_out_of_plane_strain[i] = &coupledScalarValue("scalar_out_of_plane_strain", i);
54  _scalar_out_of_plane_strain_old[i] = &coupledScalarValueOld("scalar_out_of_plane_strain", i);
55  }
56  }
57 }
58 
59 void
61 {
63 
64  if (getBlockCoordSystem() != Moose::COORD_RZ)
65  mooseError("The coordinate system must be set to RZ for Axisymmetric 1D simulations");
66 }
67 
68 Real
70 {
73  else
74  return _out_of_plane_strain[_qp];
75 }
76 
77 Real
79 {
82  else
83  return _out_of_plane_strain_old[_qp];
84 }
85 
86 Real
88 {
89  if (!MooseUtils::absoluteFuzzyEqual(_q_point[_qp](0), 0.0))
90  return (*_disp[0])[_qp] / _q_point[_qp](0);
91  else
92  return 0.0;
93 }
94 
95 Real
97 {
98  if (!MooseUtils::absoluteFuzzyEqual(_q_point[_qp](0), 0.0))
99  return _disp_old_0[_qp] / _q_point[_qp](0);
100  else
101  return 0.0;
102 }
ComputeAxisymmetric1DIncrementalStrain::computeGradDispZZOld
Real computeGradDispZZOld() override
Computes the old dUz/dz for axisymmetric problems, where .
Definition: ComputeAxisymmetric1DIncrementalStrain.C:96
ComputeAxisymmetric1DIncrementalStrain::ComputeAxisymmetric1DIncrementalStrain
ComputeAxisymmetric1DIncrementalStrain(const InputParameters &parameters)
Definition: ComputeAxisymmetric1DIncrementalStrain.C:30
ComputeAxisymmetric1DIncrementalStrain::_has_out_of_plane_strain
bool _has_out_of_plane_strain
Definition: ComputeAxisymmetric1DIncrementalStrain.h:60
ComputeAxisymmetric1DIncrementalStrain.h
SubblockIndexProvider
Abstract base class for user objects that provide an index for a given element that is independent of...
Definition: SubblockIndexProvider.h:24
ComputeStrainBase::_disp
std::vector< const VariableValue * > _disp
Definition: ComputeStrainBase.h:41
ComputeAxisymmetric1DIncrementalStrain::_has_scalar_out_of_plane_strain
bool _has_scalar_out_of_plane_strain
Definition: ComputeAxisymmetric1DIncrementalStrain.h:64
ComputeAxisymmetric1DIncrementalStrain::computeGradDispYY
Real computeGradDispYY() override
Computes the current dUy/dy for axisymmetric problems.
Definition: ComputeAxisymmetric1DIncrementalStrain.C:69
ComputeAxisymmetric1DIncrementalStrain::_nscalar_strains
unsigned int _nscalar_strains
Definition: ComputeAxisymmetric1DIncrementalStrain.h:65
ComputeAxisymmetric1DIncrementalStrain::initialSetup
void initialSetup() override
Definition: ComputeAxisymmetric1DIncrementalStrain.C:60
ComputeAxisymmetric1DIncrementalStrain::_disp_old_0
const VariableValue & _disp_old_0
the old value of the first component of the displacements vector
Definition: ComputeAxisymmetric1DIncrementalStrain.h:53
ComputeAxisymmetric1DIncrementalStrain::computeGradDispZZ
Real computeGradDispZZ() override
Computes the current dUz/dz for axisymmetric problems, where .
Definition: ComputeAxisymmetric1DIncrementalStrain.C:87
ComputeAxisymmetric1DIncrementalStrain::_out_of_plane_strain_old
const VariableValue & _out_of_plane_strain_old
Definition: ComputeAxisymmetric1DIncrementalStrain.h:62
ComputeAxisymmetric1DIncrementalStrain::computeGradDispYYOld
Real computeGradDispYYOld() override
Computes the old dUy/dy for axisymmetric problems.
Definition: ComputeAxisymmetric1DIncrementalStrain.C:78
ComputeIncrementalStrainBase::initialSetup
void initialSetup() override
Definition: ComputeIncrementalStrainBase.C:38
Compute1DIncrementalStrain::validParams
static InputParameters validParams()
Definition: Compute1DIncrementalStrain.C:17
ComputeAxisymmetric1DIncrementalStrain
ComputeAxisymmetric1DIncrementalStrain defines a strain increment only for incremental small strains ...
Definition: ComputeAxisymmetric1DIncrementalStrain.h:25
ComputeAxisymmetric1DIncrementalStrain::_out_of_plane_strain
const VariableValue & _out_of_plane_strain
Definition: ComputeAxisymmetric1DIncrementalStrain.h:61
Compute1DIncrementalStrain
Compute1DIncrementalStrain defines a strain increment only for incremental small strains in 1D proble...
Definition: Compute1DIncrementalStrain.h:25
ComputeAxisymmetric1DIncrementalStrain::_scalar_out_of_plane_strain
std::vector< const VariableValue * > _scalar_out_of_plane_strain
Definition: ComputeAxisymmetric1DIncrementalStrain.h:66
defineLegacyParams
defineLegacyParams(ComputeAxisymmetric1DIncrementalStrain)
ComputeAxisymmetric1DIncrementalStrain::getCurrentSubblockIndex
unsigned int getCurrentSubblockIndex() const
gets its subblock index for current element
Definition: ComputeAxisymmetric1DIncrementalStrain.h:50
registerMooseObject
registerMooseObject("TensorMechanicsApp", ComputeAxisymmetric1DIncrementalStrain)
ComputeAxisymmetric1DIncrementalStrain::validParams
static InputParameters validParams()
Definition: ComputeAxisymmetric1DIncrementalStrain.C:17
ComputeAxisymmetric1DIncrementalStrain::_scalar_out_of_plane_strain_old
std::vector< const VariableValue * > _scalar_out_of_plane_strain_old
Definition: ComputeAxisymmetric1DIncrementalStrain.h:67