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

#include <GlobalStrainUserObject.h>

Inheritance diagram for GlobalStrainUserObject:
[legend]

Public Member Functions

 GlobalStrainUserObject (const InputParameters &parameters)
 
void initialize () override
 
void execute () override
 
void threadJoin (const UserObject &uo) override
 
void finalize () override
 
virtual const RankTwoTensorgetResidual () const override
 
virtual const RankFourTensorgetJacobian () const override
 
virtual const VectorValue< bool > & getPeriodicDirections () const override
 
virtual void computeAdditionalStress ()
 Calculate additional applied stresses. More...
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Attributes

const std::string _base_name
 
const MaterialProperty< RankFourTensor > & _dstress_dstrain
 
const MaterialProperty< RankTwoTensor > & _stress
 
RankTwoTensor _applied_stress_tensor
 
RankTwoTensor _residual
 
RankFourTensor _jacobian
 
const unsigned int _dim
 
const unsigned int _ndisp
 
std::vector< unsigned int > _disp_var
 
VectorValue< bool > _periodic_dir
 

Detailed Description

Definition at line 23 of file GlobalStrainUserObject.h.

Constructor & Destructor Documentation

◆ GlobalStrainUserObject()

GlobalStrainUserObject::GlobalStrainUserObject ( const InputParameters &  parameters)

Definition at line 34 of file GlobalStrainUserObject.C.

35  : ElementUserObject(parameters),
37  _base_name(isParamValid("base_name") ? getParam<std::string>("base_name") + "_" : ""),
38  _dstress_dstrain(getMaterialProperty<RankFourTensor>(_base_name + "Jacobian_mult")),
39  _stress(getMaterialProperty<RankTwoTensor>(_base_name + "stress")),
40  _dim(_mesh.dimension()),
41  _ndisp(coupledComponents("displacements")),
44 {
45  for (unsigned int i = 0; i < _ndisp; ++i)
46  _disp_var[i] = coupled("displacements", i);
47 
48  for (unsigned int dir = 0; dir < _dim; ++dir)
49  {
50  _periodic_dir(dir) = _mesh.isTranslatedPeriodic(_disp_var[0], dir);
51 
52  for (unsigned int i = 1; i < _ndisp; ++i)
53  if (_mesh.isTranslatedPeriodic(_disp_var[i], dir) != _periodic_dir(dir))
54  mooseError("All the displacement components in a particular direction should have same "
55  "periodicity.");
56  }
57 
58  if (isParamValid("applied_stress_tensor"))
59  _applied_stress_tensor.fillFromInputVector(
60  getParam<std::vector<Real>>("applied_stress_tensor"));
61  else
63 }

Member Function Documentation

◆ computeAdditionalStress()

virtual void GlobalStrainUserObject::computeAdditionalStress ( )
inlinevirtual

Calculate additional applied stresses.

Definition at line 41 of file GlobalStrainUserObject.h.

41 {};

Referenced by execute().

◆ execute()

void GlobalStrainUserObject::execute ( )
override

Definition at line 73 of file GlobalStrainUserObject.C.

74 {
76 
77  for (unsigned int _qp = 0; _qp < _qrule->n_points(); _qp++)
78  {
79  // residual, integral of stress components
80  _residual += _JxW[_qp] * _coord[_qp] * (_stress[_qp] - _applied_stress_tensor);
81 
82  // diagonal jacobian, integral of elasticity tensor components
83  _jacobian += _JxW[_qp] * _coord[_qp] * _dstress_dstrain[_qp];
84  }
85 }

◆ finalize()

void GlobalStrainUserObject::finalize ( )
override

Definition at line 96 of file GlobalStrainUserObject.C.

97 {
98  std::vector<Real> residual(9);
99  std::vector<Real> jacobian(81);
100 
101  std::copy(&_residual(0, 0), &_residual(0, 0) + 9, residual.begin());
102  std::copy(&_jacobian(0, 0, 0, 0), &_jacobian(0, 0, 0, 0) + 81, jacobian.begin());
103 
104  gatherSum(residual);
105  gatherSum(jacobian);
106 
107  std::copy(residual.begin(), residual.end(), &_residual(0, 0));
108  std::copy(jacobian.begin(), jacobian.end(), &_jacobian(0, 0, 0, 0));
109 }

◆ getJacobian()

const RankFourTensor & GlobalStrainUserObject::getJacobian ( ) const
overridevirtual

Implements GlobalStrainUserObjectInterface.

Definition at line 118 of file GlobalStrainUserObject.C.

119 {
120  return _jacobian;
121 }

◆ getPeriodicDirections()

const VectorValue< bool > & GlobalStrainUserObject::getPeriodicDirections ( ) const
overridevirtual

Implements GlobalStrainUserObjectInterface.

Definition at line 124 of file GlobalStrainUserObject.C.

125 {
126  return _periodic_dir;
127 }

◆ getResidual()

const RankTwoTensor & GlobalStrainUserObject::getResidual ( ) const
overridevirtual

Implements GlobalStrainUserObjectInterface.

Definition at line 112 of file GlobalStrainUserObject.C.

113 {
114  return _residual;
115 }

◆ initialize()

void GlobalStrainUserObject::initialize ( )
override

Definition at line 66 of file GlobalStrainUserObject.C.

67 {
68  _residual.zero();
69  _jacobian.zero();
70 }

◆ threadJoin()

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

Definition at line 88 of file GlobalStrainUserObject.C.

89 {
90  const GlobalStrainUserObject & pstuo = static_cast<const GlobalStrainUserObject &>(uo);
91  _residual += pstuo._residual;
92  _jacobian += pstuo._jacobian;
93 }

◆ validParams()

InputParameters GlobalStrainUserObject::validParams ( )
static

Definition at line 19 of file GlobalStrainUserObject.C.

20 {
21  InputParameters params = ElementUserObject::validParams();
22  params.addClassDescription(
23  "Global Strain UserObject to provide Residual and diagonal Jacobian entry");
24  params.addParam<std::vector<Real>>("applied_stress_tensor",
25  "Vector of values defining the constant applied stress "
26  "to add, in order 11, 22, 33, 23, 13, 12");
27  params.addParam<std::string>("base_name", "Material properties base name");
28  params.addCoupledVar("displacements", "The name of the displacement variables");
29  params.set<ExecFlagEnum>("execute_on") = EXEC_LINEAR;
30 
31  return params;
32 }

Member Data Documentation

◆ _applied_stress_tensor

RankTwoTensor GlobalStrainUserObject::_applied_stress_tensor
protected

Definition at line 49 of file GlobalStrainUserObject.h.

Referenced by execute(), and GlobalStrainUserObject().

◆ _base_name

const std::string GlobalStrainUserObject::_base_name
protected

Definition at line 41 of file GlobalStrainUserObject.h.

◆ _dim

const unsigned int GlobalStrainUserObject::_dim
protected

Definition at line 53 of file GlobalStrainUserObject.h.

Referenced by GlobalStrainUserObject().

◆ _disp_var

std::vector<unsigned int> GlobalStrainUserObject::_disp_var
protected

Definition at line 55 of file GlobalStrainUserObject.h.

Referenced by GlobalStrainUserObject().

◆ _dstress_dstrain

const MaterialProperty<RankFourTensor>& GlobalStrainUserObject::_dstress_dstrain
protected

Definition at line 46 of file GlobalStrainUserObject.h.

Referenced by execute().

◆ _jacobian

RankFourTensor GlobalStrainUserObject::_jacobian
protected

Definition at line 51 of file GlobalStrainUserObject.h.

Referenced by execute(), finalize(), getJacobian(), initialize(), and threadJoin().

◆ _ndisp

const unsigned int GlobalStrainUserObject::_ndisp
protected

Definition at line 54 of file GlobalStrainUserObject.h.

Referenced by GlobalStrainUserObject().

◆ _periodic_dir

VectorValue<bool> GlobalStrainUserObject::_periodic_dir
protected

Definition at line 56 of file GlobalStrainUserObject.h.

Referenced by getPeriodicDirections(), and GlobalStrainUserObject().

◆ _residual

RankTwoTensor GlobalStrainUserObject::_residual
protected

Definition at line 50 of file GlobalStrainUserObject.h.

Referenced by execute(), finalize(), getResidual(), initialize(), and threadJoin().

◆ _stress

const MaterialProperty<RankTwoTensor>& GlobalStrainUserObject::_stress
protected

Definition at line 47 of file GlobalStrainUserObject.h.

Referenced by execute().


The documentation for this class was generated from the following files:
GlobalStrainUserObjectInterface
This class provides interface for extracting the periodic directions, residual, and jacobian values f...
Definition: GlobalStrainUserObjectInterface.h:19
GlobalStrainUserObject::_dim
const unsigned int _dim
Definition: GlobalStrainUserObject.h:53
GlobalStrainUserObject::_jacobian
RankFourTensor _jacobian
Definition: GlobalStrainUserObject.h:51
GlobalStrainUserObject::_residual
RankTwoTensor _residual
Definition: GlobalStrainUserObject.h:50
GlobalStrainUserObject::_ndisp
const unsigned int _ndisp
Definition: GlobalStrainUserObject.h:54
GlobalStrainUserObject::_applied_stress_tensor
RankTwoTensor _applied_stress_tensor
Definition: GlobalStrainUserObject.h:49
GlobalStrainUserObject::_base_name
const std::string _base_name
Definition: GlobalStrainUserObject.h:41
validParams
InputParameters validParams()
GlobalStrainUserObject::_periodic_dir
VectorValue< bool > _periodic_dir
Definition: GlobalStrainUserObject.h:56
GlobalStrainUserObject::_disp_var
std::vector< unsigned int > _disp_var
Definition: GlobalStrainUserObject.h:55
GlobalStrainUserObject::computeAdditionalStress
virtual void computeAdditionalStress()
Calculate additional applied stresses.
Definition: GlobalStrainUserObject.h:41
GlobalStrainUserObject::_dstress_dstrain
const MaterialProperty< RankFourTensor > & _dstress_dstrain
Definition: GlobalStrainUserObject.h:46
GlobalStrainUserObject
Definition: GlobalStrainUserObject.h:23
GlobalStrainUserObject::_stress
const MaterialProperty< RankTwoTensor > & _stress
Definition: GlobalStrainUserObject.h:47