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

#include <TorqueReaction.h>

Inheritance diagram for TorqueReaction:
[legend]

Public Member Functions

 TorqueReaction (const InputParameters &parameters)
 
virtual void initialize ()
 
virtual void execute ()
 
virtual Real getValue ()
 
void threadJoin (const UserObject &y)
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Attributes

AuxiliarySystem & _aux
 
std::vector< const VariableValue * > _react
 
const Point _axis_origin
 
const Point _direction_vector
 
unsigned int _nrt
 
Real _sum
 

Detailed Description

Definition at line 36 of file TorqueReaction.h.

Constructor & Destructor Documentation

◆ TorqueReaction()

TorqueReaction::TorqueReaction ( const InputParameters &  parameters)

Definition at line 39 of file TorqueReaction.C.

40  : NodalPostprocessor(parameters),
41  _aux(_fe_problem.getAuxiliarySystem()),
42  _axis_origin(getParam<RealVectorValue>("axis_origin")),
43  _direction_vector(getParam<RealVectorValue>("direction_vector"))
44 {
45  std::vector<AuxVariableName> reacts =
46  getParam<std::vector<AuxVariableName>>("reaction_force_variables");
47  _nrt = reacts.size();
48 
49  for (unsigned int i = 0; i < _nrt; ++i)
50  _react.push_back(&_aux.getFieldVariable<Real>(_tid, reacts[i]).dofValues());
51 }

Member Function Documentation

◆ execute()

void TorqueReaction::execute ( )
virtual

Definition at line 60 of file TorqueReaction.C.

61 {
62  // Tranform the node coordinates into the coordinate system specified by the user
63  Point position = (*_current_node) - _axis_origin;
64 
65  // Determine the component of the vector in the direction of the rotation direction vector
66  Point normal_position_component =
67  position - (position * _direction_vector) / _direction_vector.norm_sq() * _direction_vector;
68 
69  // Define the force vector from the reaction force/ residuals from the stress divergence kernel
70  Real _rz;
71  if (_nrt == 3)
72  _rz = (*_react[2])[_qp];
73  else
74  _rz = 0.0;
75 
76  Point force((*_react[0])[_qp], (*_react[1])[_qp], _rz);
77 
78  // Cross the normal component of the position vector with the force
79  RealVectorValue torque = normal_position_component.cross(force);
80 
81  // Find the component of the torque vector acting along the given axis of rotation direction
82  // vector
83  RealVectorValue parallel_torque_component =
84  (torque * _direction_vector) / _direction_vector.norm_sq() * _direction_vector;
85 
86  // Add the magnitude of the parallel torque component to the sum of the acting torques
87  _sum += parallel_torque_component.norm();
88 }

◆ getValue()

Real TorqueReaction::getValue ( )
virtual

Definition at line 91 of file TorqueReaction.C.

92 {
93  gatherSum(_sum);
94 
95  return _sum;
96 }

◆ initialize()

void TorqueReaction::initialize ( )
virtual

Definition at line 54 of file TorqueReaction.C.

55 {
56  _sum = 0.0;
57 }

◆ threadJoin()

void TorqueReaction::threadJoin ( const UserObject &  y)

Definition at line 99 of file TorqueReaction.C.

100 {
101  const TorqueReaction & pps = static_cast<const TorqueReaction &>(y);
102  _sum += pps._sum;
103 }

◆ validParams()

InputParameters TorqueReaction::validParams ( )
static

Definition at line 21 of file TorqueReaction.C.

22 {
23  InputParameters params = NodalPostprocessor::validParams();
24  params.addClassDescription("TorqueReaction calculates the torque in 2D and 3D"
25  "about a user-specified axis of rotation centered"
26  "at a user-specied origin.");
27  params.addRequiredParam<std::vector<AuxVariableName>>("reaction_force_variables",
28  "The reaction variables");
29  params.addParam<RealVectorValue>(
30  "axis_origin", Point(), "Origin of the axis of rotation used to calculate the torque");
31  params.addRequiredParam<RealVectorValue>("direction_vector",
32  "The direction vector of the axis "
33  "of rotation about which the "
34  "calculated torque is calculated");
35  params.set<bool>("use_displaced_mesh") = true;
36  return params;
37 }

Member Data Documentation

◆ _aux

AuxiliarySystem& TorqueReaction::_aux
protected

Definition at line 49 of file TorqueReaction.h.

Referenced by TorqueReaction().

◆ _axis_origin

const Point TorqueReaction::_axis_origin
protected

Definition at line 53 of file TorqueReaction.h.

Referenced by execute().

◆ _direction_vector

const Point TorqueReaction::_direction_vector
protected

Definition at line 54 of file TorqueReaction.h.

Referenced by execute().

◆ _nrt

unsigned int TorqueReaction::_nrt
protected

Definition at line 56 of file TorqueReaction.h.

Referenced by execute(), and TorqueReaction().

◆ _react

std::vector<const VariableValue *> TorqueReaction::_react
protected

Definition at line 51 of file TorqueReaction.h.

Referenced by execute(), and TorqueReaction().

◆ _sum

Real TorqueReaction::_sum
protected

Definition at line 58 of file TorqueReaction.h.

Referenced by execute(), getValue(), initialize(), and threadJoin().


The documentation for this class was generated from the following files:
TorqueReaction
Definition: TorqueReaction.h:36
TorqueReaction::_nrt
unsigned int _nrt
Definition: TorqueReaction.h:56
TorqueReaction::_aux
AuxiliarySystem & _aux
Definition: TorqueReaction.h:49
TorqueReaction::_axis_origin
const Point _axis_origin
Definition: TorqueReaction.h:53
TorqueReaction::_direction_vector
const Point _direction_vector
Definition: TorqueReaction.h:54
validParams
InputParameters validParams()
TorqueReaction::_sum
Real _sum
Definition: TorqueReaction.h:58
TorqueReaction::_react
std::vector< const VariableValue * > _react
Definition: TorqueReaction.h:51