www.mooseframework.org
ComputePlaneSmallStrain.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 "UserObject.h"
12 
13 registerMooseObject("SolidMechanicsApp", ComputePlaneSmallStrain);
14 
17 {
19  params.addClassDescription("Compute a small strain under generalized plane strain assumptions "
20  "where the out of plane strain is generally nonzero.");
21  params.addParam<UserObjectName>("subblock_index_provider",
22  "SubblockIndexProvider user object name");
23  params.addCoupledVar("scalar_out_of_plane_strain",
24  "Scalar variable for generalized plane strain");
25  params.addCoupledVar("out_of_plane_strain", "Nonlinear variable for plane stress condition");
26 
27  return params;
28 }
29 
31  : Compute2DSmallStrain(parameters),
32  _subblock_id_provider(isParamValid("subblock_index_provider")
33  ? &getUserObject<SubblockIndexProvider>("subblock_index_provider")
34  : nullptr),
35  _scalar_out_of_plane_strain_coupled(isCoupledScalar("scalar_out_of_plane_strain")),
36  _out_of_plane_strain_coupled(isCoupled("out_of_plane_strain")),
37  _out_of_plane_strain(_out_of_plane_strain_coupled ? coupledValue("out_of_plane_strain") : _zero)
38 {
40  paramError("_out_of_plane_strain_coupled",
41  "Must define only one of out_of_plane_strain or scalar_out_of_plane_strain");
42 
44  {
45  const auto nscalar_strains = coupledScalarComponents("scalar_out_of_plane_strain");
46  _scalar_out_of_plane_strain.resize(nscalar_strains);
47  for (unsigned int i = 0; i < nscalar_strains; ++i)
48  _scalar_out_of_plane_strain[i] = &coupledScalarValue("scalar_out_of_plane_strain", i);
49  }
50 }
51 
52 Real
54 {
57  else
58  return _out_of_plane_strain[_qp];
59 }
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
ComputePlaneSmallStrain(const InputParameters &parameters)
Abstract base class for user objects that provide an index for a given element that is independent of...
registerMooseObject("SolidMechanicsApp", ComputePlaneSmallStrain)
const bool _scalar_out_of_plane_strain_coupled
Whether out-of-plane strain scalar variables are coupled.
unsigned int getCurrentSubblockIndex() const
gets its subblock index for current element
const VariableValue & coupledScalarValue(const std::string &var_name, unsigned int comp=0) const
Compute2DSmallStrain defines a strain tensor, assuming small strains, in 2D geometries / simulations...
void paramError(const std::string &param, Args... args) const
const bool _out_of_plane_strain_coupled
Whether an out-of-plane strain variable is coupled.
static InputParameters validParams()
void addCoupledVar(const std::string &name, const std::string &doc_string)
const VariableValue & _out_of_plane_strain
The out-of-plane strain variable.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
unsigned int coupledScalarComponents(const std::string &var_name) const
void addClassDescription(const std::string &doc_string)
ComputePlaneSmallStrain defines small strains under generalized plane strain and plane stress assumpt...
std::vector< const VariableValue * > _scalar_out_of_plane_strain
The out-of-plane strain scalar variables.
static InputParameters validParams()