https://mooseframework.inl.gov
Loading...
Searching...
No Matches
ComputeAxisymmetric1DSmallStrain.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 "UserObject.h"
12
14
17{
19 params.addClassDescription("Compute a small strain in an Axisymmetric 1D problem");
20 params.addParam<UserObjectName>("subblock_index_provider",
21 "SubblockIndexProvider user object name");
22 params.addCoupledVar("scalar_out_of_plane_strain", "Scalar variable for axisymmetric 1D problem");
23 params.addCoupledVar("out_of_plane_strain", "Nonlinear variable for axisymmetric 1D problem");
24
25 return params;
26}
27
29 const InputParameters & parameters)
30 : Compute1DSmallStrain(parameters),
31 _subblock_id_provider(isParamValid("subblock_index_provider")
32 ? &getUserObject<SubblockIndexProvider>("subblock_index_provider")
33 : nullptr),
34 _has_out_of_plane_strain(isCoupled("out_of_plane_strain")),
35 _out_of_plane_strain(_has_out_of_plane_strain ? coupledValue("out_of_plane_strain") : _zero),
36 _has_scalar_out_of_plane_strain(isCoupledScalar("scalar_out_of_plane_strain"))
37{
39 mooseError("Must define only one of out_of_plane_strain or scalar_out_of_plane_strain");
40
42 {
43 const auto nscalar_strains = coupledScalarComponents("scalar_out_of_plane_strain");
44 _scalar_out_of_plane_strain.resize(nscalar_strains);
45 for (unsigned int i = 0; i < nscalar_strains; ++i)
46 _scalar_out_of_plane_strain[i] = &coupledScalarValue("scalar_out_of_plane_strain", i);
47 }
48}
49
50void
52{
54
55 if (getBlockCoordSystem() != Moose::COORD_RZ)
56 mooseError("The coordinate system must be set to RZ for Axisymmetric geometries.");
57}
58
59Real
67
68Real
70{
71 if (!MooseUtils::absoluteFuzzyEqual(_q_point[_qp](0), 0.0))
72 return (*_disp[0])[_qp] / _q_point[_qp](0);
73 else
74 return 0.0;
75}
registerMooseObject("SolidMechanicsApp", ComputeAxisymmetric1DSmallStrain)
void mooseError(Args &&... args)
Compute1DSmallStrain defines a strain tensor, assuming small strains, in 1D problems,...
static InputParameters validParams()
ComputeAxisymmetric1DSmallStrain defines small strains in an Axisymmetric 1D problem.
const VariableValue & _out_of_plane_strain
The out-of-plane strain variable.
std::vector< const VariableValue * > _scalar_out_of_plane_strain
The out-of-plane strain scalar variables.
Real computeStrainYY() override
Computes the strain_yy for axisymmetric problems.
Real computeStrainZZ() override
Computes the strain_zz for axisymmetric problems, where .
const bool _has_scalar_out_of_plane_strain
Whether out-of-plane strain scalar variables are coupled.
ComputeAxisymmetric1DSmallStrain(const InputParameters &parameters)
const bool _has_out_of_plane_strain
Whether an out-of-plane strain variable is coupled.
unsigned int getCurrentSubblockIndex() const
gets its subblock index for current element
std::vector< const VariableValue * > _disp
Displacement variables.
void initialSetup() override
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
void addCoupledVar(const std::string &name, const std::string &doc_string)
Abstract base class for user objects that provide an index for a given element that is independent of...