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

#include <GlobalStrain.h>

Inheritance diagram for GlobalStrain:
[legend]

Public Member Functions

 GlobalStrain (const InputParameters &parameters)
 
virtual void reinit ()
 
virtual void computeResidual ()
 
virtual void computeJacobian ()
 
virtual void computeOffDiagJacobian (unsigned int)
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

virtual void assignComponentIndices (Order var_order)
 

Protected Attributes

const GlobalStrainUserObjectInterface_pst
 
const RankTwoTensor_pst_residual
 
const RankFourTensor_pst_jacobian
 
const VectorValue< bool > & _periodic_dir
 
std::vector< std::pair< unsigned int, unsigned int > > _components
 
const unsigned int _dim
 

Detailed Description

Definition at line 27 of file GlobalStrain.h.

Constructor & Destructor Documentation

◆ GlobalStrain()

GlobalStrain::GlobalStrain ( const InputParameters &  parameters)

Definition at line 35 of file GlobalStrain.C.

36  : ScalarKernel(parameters),
37  _pst(getUserObject<GlobalStrainUserObjectInterface>("global_strain_uo")),
41  _components(_var.order()),
42  _dim(_mesh.dimension())
43 {
44  if ((_dim == 1 && _var.order() != FIRST) || (_dim == 2 && _var.order() != THIRD) ||
45  (_dim == 3 && _var.order() != SIXTH))
46  mooseError("PerdiodicStrain ScalarKernel is only compatible with scalar variables of order "
47  "FIRST in 1D, THIRD in 2D, and SIXTH in 3D. Please change the order of the scalar"
48  "variable according to the mesh dimension.");
49 
50  assignComponentIndices(_var.order());
51 }

Member Function Documentation

◆ assignComponentIndices()

void GlobalStrain::assignComponentIndices ( Order  var_order)
protectedvirtual

Definition at line 83 of file GlobalStrain.C.

84 {
85  switch (order)
86  {
87  case 1:
88  _components[0].first = 0;
89  _components[0].second = 0;
90  break;
91 
92  case 3:
93  _components[0].first = 0;
94  _components[0].second = 0;
95  _components[1].first = 1;
96  _components[1].second = 1;
97  _components[2].first = 0;
98  _components[2].second = 1;
99  break;
100 
101  case 6:
102  _components[0].first = 0;
103  _components[0].second = 0;
104  _components[1].first = 1;
105  _components[1].second = 1;
106  _components[2].first = 2;
107  _components[2].second = 2;
108  _components[3].first = 1;
109  _components[3].second = 2;
110  _components[4].first = 0;
111  _components[4].second = 2;
112  _components[5].first = 0;
113  _components[5].second = 1;
114  break;
115 
116  default:
117  mooseError("PerdiodicStrain ScalarKernel is only compatible with FIRST, THIRD, and SIXTH "
118  "order scalar variables.");
119  }
120 }

Referenced by GlobalStrain().

◆ computeJacobian()

void GlobalStrain::computeJacobian ( )
virtual

Definition at line 65 of file GlobalStrain.C.

66 {
67  DenseMatrix<Number> & ke = _assembly.jacobianBlock(_var.number(), _var.number());
68  for (_i = 0; _i < ke.m(); ++_i)
69  for (_j = 0; _j < ke.m(); ++_j)
70  // periodic direction check is not done for jacobian calculations to avoid zero pivot error
71  ke(_i, _j) += _pst_jacobian(_components[_i].first,
72  _components[_i].second,
73  _components[_j].first,
74  _components[_j].second);
75 }

◆ computeOffDiagJacobian()

void GlobalStrain::computeOffDiagJacobian ( unsigned int  )
virtual

Definition at line 78 of file GlobalStrain.C.

79 {
80 }

◆ computeResidual()

void GlobalStrain::computeResidual ( )
virtual

Definition at line 54 of file GlobalStrain.C.

55 {
56  DenseVector<Number> & re = _assembly.residualBlock(_var.number());
57  for (_i = 0; _i < re.size(); ++_i)
58  {
59  if (_periodic_dir(_components[_i].first) || _periodic_dir(_components[_i].second))
60  re(_i) += _pst_residual(_components[_i].first, _components[_i].second);
61  }
62 }

◆ reinit()

virtual void GlobalStrain::reinit ( )
inlinevirtual

Definition at line 34 of file GlobalStrain.h.

34 {};

◆ validParams()

InputParameters GlobalStrain::validParams ( )
static

Definition at line 25 of file GlobalStrain.C.

26 {
27  InputParameters params = ScalarKernel::validParams();
28  params.addClassDescription("Scalar Kernel to solve for the global strain");
29  params.addRequiredParam<UserObjectName>("global_strain_uo",
30  "The name of the GlobalStrainUserObject");
31 
32  return params;
33 }

Member Data Documentation

◆ _components

std::vector<std::pair<unsigned int, unsigned int> > GlobalStrain::_components
protected

Definition at line 47 of file GlobalStrain.h.

Referenced by assignComponentIndices(), computeJacobian(), and computeResidual().

◆ _dim

const unsigned int GlobalStrain::_dim
protected

Definition at line 48 of file GlobalStrain.h.

Referenced by GlobalStrain().

◆ _periodic_dir

const VectorValue<bool>& GlobalStrain::_periodic_dir
protected

Definition at line 45 of file GlobalStrain.h.

Referenced by computeResidual().

◆ _pst

const GlobalStrainUserObjectInterface& GlobalStrain::_pst
protected

Definition at line 42 of file GlobalStrain.h.

◆ _pst_jacobian

const RankFourTensor& GlobalStrain::_pst_jacobian
protected

Definition at line 44 of file GlobalStrain.h.

Referenced by computeJacobian().

◆ _pst_residual

const RankTwoTensor& GlobalStrain::_pst_residual
protected

Definition at line 43 of file GlobalStrain.h.

Referenced by computeResidual().


The documentation for this class was generated from the following files:
GlobalStrain::_pst
const GlobalStrainUserObjectInterface & _pst
Definition: GlobalStrain.h:42
GlobalStrain::_periodic_dir
const VectorValue< bool > & _periodic_dir
Definition: GlobalStrain.h:45
GlobalStrain::_components
std::vector< std::pair< unsigned int, unsigned int > > _components
Definition: GlobalStrain.h:47
GlobalStrain::_pst_jacobian
const RankFourTensor & _pst_jacobian
Definition: GlobalStrain.h:44
GlobalStrain::_pst_residual
const RankTwoTensor & _pst_residual
Definition: GlobalStrain.h:43
GlobalStrainUserObjectInterface::getJacobian
virtual const RankFourTensor & getJacobian() const =0
GlobalStrainUserObjectInterface::getPeriodicDirections
virtual const VectorValue< bool > & getPeriodicDirections() const =0
GlobalStrain::assignComponentIndices
virtual void assignComponentIndices(Order var_order)
Definition: GlobalStrain.C:83
validParams
InputParameters validParams()
GlobalStrain::_dim
const unsigned int _dim
Definition: GlobalStrain.h:48
GlobalStrainUserObjectInterface::getResidual
virtual const RankTwoTensor & getResidual() const =0