www.mooseframework.org
Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
GeneralizedPlaneStrainUserObject Class Reference

#include <GeneralizedPlaneStrainUserObject.h>

Inheritance diagram for GeneralizedPlaneStrainUserObject:
[legend]

Public Member Functions

 GeneralizedPlaneStrainUserObject (const InputParameters &parameters)
 
void initialize () override
 
void execute () override
 
void threadJoin (const UserObject &uo) override
 
void finalize () override
 
virtual Real returnResidual (unsigned int scalar_var_id=0) const
 
virtual Real returnReferenceResidual (unsigned int scalar_var_id=0) const
 
virtual Real returnJacobian (unsigned int scalar_var_id=0) const
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Attributes

const std::string _base_name
 
const MaterialProperty< RankFourTensor > & _Cijkl
 
const MaterialProperty< RankTwoTensor > & _stress
 
const SubblockIndexProvider_subblock_id_provider
 
const Function & _out_of_plane_pressure
 
const Real _factor
 
unsigned int _scalar_out_of_plane_strain_direction
 
std::vector< Real > _residual
 
std::vector< Real > _reference_residual
 
std::vector< Real > _jacobian
 

Detailed Description

Definition at line 27 of file GeneralizedPlaneStrainUserObject.h.

Constructor & Destructor Documentation

◆ GeneralizedPlaneStrainUserObject()

GeneralizedPlaneStrainUserObject::GeneralizedPlaneStrainUserObject ( const InputParameters &  parameters)

Definition at line 44 of file GeneralizedPlaneStrainUserObject.C.

46  : ElementUserObject(parameters),
47  _base_name(isParamValid("base_name") ? getParam<std::string>("base_name") + "_" : ""),
48  _Cijkl(getMaterialProperty<RankFourTensor>(_base_name + "elasticity_tensor")),
49  _stress(getMaterialProperty<RankTwoTensor>(_base_name + "stress")),
50  _subblock_id_provider(nullptr),
51  _out_of_plane_pressure(getFunction("out_of_plane_pressure")),
52  _factor(getParam<Real>("factor"))
53 {
54 }

Member Function Documentation

◆ execute()

void GeneralizedPlaneStrainUserObject::execute ( )
override

Definition at line 75 of file GeneralizedPlaneStrainUserObject.C.

76 {
77  const unsigned int subblock_id =
79 
80  for (unsigned int _qp = 0; _qp < _qrule->n_points(); _qp++)
81  {
82  // residual, integral of stress_zz for COORD_XYZ
83  _residual[subblock_id] += _JxW[_qp] * _coord[_qp] *
86  _out_of_plane_pressure.value(_t, _q_point[_qp]) * _factor);
87 
88  _reference_residual[subblock_id] += std::abs(
89  _JxW[_qp] * _coord[_qp] *
91 
92  // diagonal jacobian, integral of C(2, 2, 2, 2) for COORD_XYZ
93  _jacobian[subblock_id] += _JxW[_qp] * _coord[_qp] *
98  }
99 }

◆ finalize()

void GeneralizedPlaneStrainUserObject::finalize ( )
override

Definition at line 115 of file GeneralizedPlaneStrainUserObject.C.

116 {
117  gatherSum(_residual);
118  gatherSum(_reference_residual);
119  gatherSum(_jacobian);
120 }

◆ initialize()

void GeneralizedPlaneStrainUserObject::initialize ( )
override

Definition at line 57 of file GeneralizedPlaneStrainUserObject.C.

58 {
59  if (isParamValid("subblock_index_provider"))
60  _subblock_id_provider = &getUserObject<SubblockIndexProvider>("subblock_index_provider");
61  if (_assembly.coordSystem() == Moose::COORD_XYZ)
62  _scalar_out_of_plane_strain_direction = getParam<MooseEnum>("out_of_plane_direction");
63  else if (_assembly.coordSystem() == Moose::COORD_RZ)
65  else
66  mooseError("Unsupported coordinate system for generalized plane strain formulation");
67 
68  unsigned int max_size = _subblock_id_provider ? _subblock_id_provider->getMaxSubblockIndex() : 1;
69  _residual.assign(max_size, 0.0);
70  _reference_residual.assign(max_size, 0.0);
71  _jacobian.assign(max_size, 0.0);
72 }

◆ returnJacobian()

Real GeneralizedPlaneStrainUserObject::returnJacobian ( unsigned int  scalar_var_id = 0) const
virtual

Definition at line 147 of file GeneralizedPlaneStrainUserObject.C.

148 {
149  if (_jacobian.size() <= scalar_var_id)
150  mooseError("Index out of bounds!");
151 
152  return _jacobian[scalar_var_id];
153 }

Referenced by GeneralizedPlaneStrain::computeJacobian().

◆ returnReferenceResidual()

Real GeneralizedPlaneStrainUserObject::returnReferenceResidual ( unsigned int  scalar_var_id = 0) const
virtual

Definition at line 132 of file GeneralizedPlaneStrainUserObject.C.

133 {
134  // At startup, the GeneralizedPlaneStrainReferenceResidual class can ask for this value
135  // before it has been computed. Return 0.0 in this case. The only way size will stay
136  // zero is if initialize is never called.
137  if (_reference_residual.size() == 0)
138  return 0.0;
139 
140  if (_residual.size() <= scalar_var_id)
141  mooseError("Index out of bounds!");
142 
143  return _reference_residual[scalar_var_id];
144 }

Referenced by GeneralizedPlaneStrain::computeResidual(), and GeneralizedPlaneStrainReferenceResidual::computeValue().

◆ returnResidual()

Real GeneralizedPlaneStrainUserObject::returnResidual ( unsigned int  scalar_var_id = 0) const
virtual

Definition at line 123 of file GeneralizedPlaneStrainUserObject.C.

124 {
125  if (_residual.size() <= scalar_var_id)
126  mooseError("Index out of bounds!");
127 
128  return _residual[scalar_var_id];
129 }

Referenced by GeneralizedPlaneStrain::computeResidual().

◆ threadJoin()

void GeneralizedPlaneStrainUserObject::threadJoin ( const UserObject &  uo)
override

Definition at line 102 of file GeneralizedPlaneStrainUserObject.C.

103 {
104  const GeneralizedPlaneStrainUserObject & gpsuo =
105  static_cast<const GeneralizedPlaneStrainUserObject &>(uo);
106  for (unsigned int i = 0; i < _residual.size(); ++i)
107  {
108  _residual[i] += gpsuo._residual[i];
110  _jacobian[i] += gpsuo._jacobian[i];
111  }
112 }

◆ validParams()

InputParameters GeneralizedPlaneStrainUserObject::validParams ( )
static

Definition at line 23 of file GeneralizedPlaneStrainUserObject.C.

24 {
25  InputParameters params = ElementUserObject::validParams();
26  params.addClassDescription(
27  "Generalized plane strain UserObject to provide residual and diagonal Jacobian entries.");
28  params.addParam<UserObjectName>("subblock_index_provider",
29  "SubblockIndexProvider user object name");
30  params.addParam<FunctionName>(
31  "out_of_plane_pressure",
32  "0",
33  "Function used to prescribe pressure in the out-of-plane direction");
34  MooseEnum outOfPlaneDirection("x y z", "z");
35  params.addParam<MooseEnum>(
36  "out_of_plane_direction", outOfPlaneDirection, "The direction of the out-of-plane strain.");
37  params.addParam<Real>("factor", 1.0, "Scale factor applied to prescribed pressure");
38  params.addParam<std::string>("base_name", "Material properties base name");
39  params.set<ExecFlagEnum>("execute_on") = EXEC_LINEAR;
40 
41  return params;
42 }

Member Data Documentation

◆ _base_name

const std::string GeneralizedPlaneStrainUserObject::_base_name
protected

Definition at line 43 of file GeneralizedPlaneStrainUserObject.h.

◆ _Cijkl

const MaterialProperty<RankFourTensor>& GeneralizedPlaneStrainUserObject::_Cijkl
protected

Definition at line 45 of file GeneralizedPlaneStrainUserObject.h.

Referenced by execute().

◆ _factor

const Real GeneralizedPlaneStrainUserObject::_factor
protected

Definition at line 51 of file GeneralizedPlaneStrainUserObject.h.

Referenced by execute().

◆ _jacobian

std::vector<Real> GeneralizedPlaneStrainUserObject::_jacobian
protected

◆ _out_of_plane_pressure

const Function& GeneralizedPlaneStrainUserObject::_out_of_plane_pressure
protected

Definition at line 50 of file GeneralizedPlaneStrainUserObject.h.

Referenced by execute().

◆ _reference_residual

std::vector<Real> GeneralizedPlaneStrainUserObject::_reference_residual
protected

◆ _residual

std::vector<Real> GeneralizedPlaneStrainUserObject::_residual
protected

◆ _scalar_out_of_plane_strain_direction

unsigned int GeneralizedPlaneStrainUserObject::_scalar_out_of_plane_strain_direction
protected

Definition at line 52 of file GeneralizedPlaneStrainUserObject.h.

Referenced by execute(), and initialize().

◆ _stress

const MaterialProperty<RankTwoTensor>& GeneralizedPlaneStrainUserObject::_stress
protected

Definition at line 46 of file GeneralizedPlaneStrainUserObject.h.

Referenced by execute().

◆ _subblock_id_provider

const SubblockIndexProvider* GeneralizedPlaneStrainUserObject::_subblock_id_provider
protected

Definition at line 48 of file GeneralizedPlaneStrainUserObject.h.

Referenced by execute(), and initialize().


The documentation for this class was generated from the following files:
SubblockIndexProvider::getMaxSubblockIndex
virtual unsigned int getMaxSubblockIndex() const =0
The max index of subblock.
GeneralizedPlaneStrainUserObject::_residual
std::vector< Real > _residual
Definition: GeneralizedPlaneStrainUserObject.h:53
SubblockIndexProvider::getSubblockIndex
virtual unsigned int getSubblockIndex(const Elem &) const =0
The index of subblock this element is on.
GeneralizedPlaneStrainUserObject::_scalar_out_of_plane_strain_direction
unsigned int _scalar_out_of_plane_strain_direction
Definition: GeneralizedPlaneStrainUserObject.h:52
GeneralizedPlaneStrainUserObject::_out_of_plane_pressure
const Function & _out_of_plane_pressure
Definition: GeneralizedPlaneStrainUserObject.h:50
GeneralizedPlaneStrainUserObject::_Cijkl
const MaterialProperty< RankFourTensor > & _Cijkl
Definition: GeneralizedPlaneStrainUserObject.h:45
GeneralizedPlaneStrainUserObject::_base_name
const std::string _base_name
Definition: GeneralizedPlaneStrainUserObject.h:43
GeneralizedPlaneStrainUserObject::_stress
const MaterialProperty< RankTwoTensor > & _stress
Definition: GeneralizedPlaneStrainUserObject.h:46
validParams
InputParameters validParams()
GeneralizedPlaneStrainUserObject::_subblock_id_provider
const SubblockIndexProvider * _subblock_id_provider
Definition: GeneralizedPlaneStrainUserObject.h:48
GeneralizedPlaneStrainUserObject::_factor
const Real _factor
Definition: GeneralizedPlaneStrainUserObject.h:51
GeneralizedPlaneStrainUserObject
Definition: GeneralizedPlaneStrainUserObject.h:27
GeneralizedPlaneStrainUserObject::_reference_residual
std::vector< Real > _reference_residual
Definition: GeneralizedPlaneStrainUserObject.h:54
GeneralizedPlaneStrainUserObject::_jacobian
std::vector< Real > _jacobian
Definition: GeneralizedPlaneStrainUserObject.h:55