https://mooseframework.inl.gov
ADComputePlaneSmallStrain.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 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  : ADCompute2DSmallStrain(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 ? adCoupledValue("out_of_plane_strain")
38  : _ad_zero)
39 {
41  mooseError("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] = &adCoupledScalarValue("scalar_out_of_plane_strain", i);
49  }
50 }
51 
52 ADReal
54 {
57  else
58  return _out_of_plane_strain[_qp];
59 }
unsigned int getCurrentSubblockIndex() const
gets its subblock index for current element
ADComputePlaneSmallStrain defines small strains under generalized plane strain and plane stress assum...
virtual ADReal computeOutOfPlaneStrain()
calculates and returns the out-of-plane strain for the current quadrature point
ADCompute2DSmallStrain defines a strain tensor, assuming small strains, in 2D geometries / simulation...
static InputParameters validParams()
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
Abstract base class for user objects that provide an index for a given element that is independent of...
DualNumber< Real, DNDerivativeType, true > ADReal
unsigned int _qp
const bool _scalar_out_of_plane_strain_coupled
Whether out-of-plane strain scalar variables are coupled.
static InputParameters validParams()
ADComputePlaneSmallStrain(const InputParameters &parameters)
std::vector< const ADVariableValue * > _scalar_out_of_plane_strain
The out-of-plane strain scalar variables.
void addCoupledVar(const std::string &name, const std::string &doc_string)
registerMooseObject("SolidMechanicsApp", ADComputePlaneSmallStrain)
const ADVariableValue & adCoupledScalarValue(const std::string &var_name, unsigned int comp=0) const
const ADVariableValue & _out_of_plane_strain
The out-of-plane strain variable.
const bool _out_of_plane_strain_coupled
Whether an out-of-plane strain variable is coupled.
unsigned int coupledScalarComponents(const std::string &var_name) const
void mooseError(Args &&... args) const
void addClassDescription(const std::string &doc_string)