https://mooseframework.inl.gov
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ShaftConnectableUserObjectInterface Class Reference

Interface class for user objects that are connected to a shaft. More...

#include <ShaftConnectableUserObjectInterface.h>

Inheritance diagram for ShaftConnectableUserObjectInterface:
[legend]

Public Member Functions

 ShaftConnectableUserObjectInterface (const MooseObject *moose_object)
 
virtual void initialize ()
 
virtual void execute ()
 
virtual void finalize ()
 
virtual void threadJoin (const UserObject &uo)
 
virtual Real getTorque () const
 
virtual void getTorqueJacobianData (DenseMatrix< Real > &jacobian_block, std::vector< dof_id_type > &dofs_j) const
 
virtual Real getMomentOfInertia () const
 
virtual void getMomentOfInertiaJacobianData (DenseMatrix< Real > &jacobian_block, std::vector< dof_id_type > &dofs_j) const
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

virtual void setupConnections (unsigned int n_connections, unsigned int n_flow_eq)
 
virtual void setConnectionData (const std::vector< std::vector< std::vector< Real >>> &phi_face_values, const std::vector< std::vector< dof_id_type >> &flow_channel_dofs)
 Stores data computed by a volume-junction-like object associated with the conection. More...
 
virtual void setOmegaDofs (const MooseVariableScalar *omega_var)
 
virtual void setupJunctionData (std::vector< dof_id_type > &scalar_dofs)
 Stores data associated with a junction component. More...
 
virtual void computeMomentOfInertiaScalarJacobianWRTFlowDofs (const DenseMatrix< Real > &jac, const unsigned int &c)
 
virtual void computeTorqueScalarJacobianWRTFlowDofs (const DenseMatrix< Real > &jac, const unsigned int &c)
 

Protected Attributes

unsigned int _n_shaft_eq
 Number of equation in the shaft component. More...
 
unsigned int _n_connections
 Number of flow channels the shaft connected component is attached to. More...
 
unsigned int _n_flow_eq
 Number of flow variables in connected flow channels. More...
 
std::vector< dof_id_type_omega_dof
 Degrees of freedom for omega variable (from shaft) More...
 
std::vector< dof_id_type_scalar_dofs
 Degrees of freedom for scalar variables (from junction) More...
 
std::vector< std::vector< dof_id_type > > _flow_channel_dofs
 Degrees of freedom for flow channel variables, for each connection. More...
 
Real _torque
 Total torque. More...
 
Real _moment_of_inertia
 Moment of inertia. More...
 
std::vector< DenseMatrix< Real > > _torque_jacobian_flow_channel_vars
 Cached scalar residual Jacobian matrices w.r.t. More...
 
DenseMatrix< Real_torque_jacobian_scalar_vars
 Jacobian entries of torque wrt to scalar variables (from junction) More...
 
DenseMatrix< Real_torque_jacobian_omega_var
 Jacobian entries of torque wrt to omega variable (from shaft) More...
 
std::vector< DenseMatrix< Real > > _moi_jacobian_flow_channel_vars
 
DenseMatrix< Real_moi_jacobian_scalar_vars
 Jacobian entries of moment of inertia wrt to omega scalar variables (from junction) More...
 
DenseMatrix< Real_moi_jacobian_omega_var
 Jacobian entries of moment of inertia wrt to omega variable (from shaft) More...
 
std::vector< std::vector< std::vector< Real > > > _phi_face_values
 Side shape function value (i.e. side from the flow channels) More...
 

Detailed Description

Interface class for user objects that are connected to a shaft.

Definition at line 22 of file ShaftConnectableUserObjectInterface.h.

Constructor & Destructor Documentation

◆ ShaftConnectableUserObjectInterface()

ShaftConnectableUserObjectInterface::ShaftConnectableUserObjectInterface ( const MooseObject moose_object)

Definition at line 21 of file ShaftConnectableUserObjectInterface.C.

23  : _n_shaft_eq(1)
24 {
25  _omega_dof.resize(_n_shaft_eq);
28 }
DenseMatrix< Real > _moi_jacobian_omega_var
Jacobian entries of moment of inertia wrt to omega variable (from shaft)
unsigned int _n_shaft_eq
Number of equation in the shaft component.
std::vector< dof_id_type > _omega_dof
Degrees of freedom for omega variable (from shaft)
DenseMatrix< Real > _torque_jacobian_omega_var
Jacobian entries of torque wrt to omega variable (from shaft)
void resize(const unsigned int new_m, const unsigned int new_n)

Member Function Documentation

◆ computeMomentOfInertiaScalarJacobianWRTFlowDofs()

void ShaftConnectableUserObjectInterface::computeMomentOfInertiaScalarJacobianWRTFlowDofs ( const DenseMatrix< Real > &  jac,
const unsigned int c 
)
protectedvirtual

Definition at line 177 of file ShaftConnectableUserObjectInterface.C.

179 {
181  unsigned int jk = 0;
182  for (unsigned int j = 0; j < _n_flow_eq; j++)
183  {
184  for (unsigned int k = 0; k < _phi_face_values[c][j].size(); k++)
185  {
186  _moi_jacobian_flow_channel_vars[c](0, jk) = jac(0, j) * _phi_face_values[c][j][k];
187  jk++;
188  }
189  }
190 }
std::vector< std::vector< std::vector< Real > > > _phi_face_values
Side shape function value (i.e. side from the flow channels)
unsigned int _n_flow_eq
Number of flow variables in connected flow channels.
std::vector< std::vector< dof_id_type > > _flow_channel_dofs
Degrees of freedom for flow channel variables, for each connection.
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
static const std::string k
Definition: NS.h:130
std::vector< DenseMatrix< Real > > _moi_jacobian_flow_channel_vars

◆ computeTorqueScalarJacobianWRTFlowDofs()

void ShaftConnectableUserObjectInterface::computeTorqueScalarJacobianWRTFlowDofs ( const DenseMatrix< Real > &  jac,
const unsigned int c 
)
protectedvirtual

Definition at line 161 of file ShaftConnectableUserObjectInterface.C.

163 {
165  unsigned int jk = 0;
166  for (unsigned int j = 0; j < _n_flow_eq; j++)
167  {
168  for (unsigned int k = 0; k < _phi_face_values[c][j].size(); k++)
169  {
170  _torque_jacobian_flow_channel_vars[c](0, jk) = jac(0, j) * _phi_face_values[c][j][k];
171  jk++;
172  }
173  }
174 }
std::vector< std::vector< std::vector< Real > > > _phi_face_values
Side shape function value (i.e. side from the flow channels)
unsigned int _n_flow_eq
Number of flow variables in connected flow channels.
std::vector< std::vector< dof_id_type > > _flow_channel_dofs
Degrees of freedom for flow channel variables, for each connection.
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
std::vector< DenseMatrix< Real > > _torque_jacobian_flow_channel_vars
Cached scalar residual Jacobian matrices w.r.t.
static const std::string k
Definition: NS.h:130

◆ execute()

void ShaftConnectableUserObjectInterface::execute ( )
virtual

Reimplemented in ShaftConnectedMotorUserObject.

Definition at line 38 of file ShaftConnectableUserObjectInterface.C.

39 {
40 }

◆ finalize()

void ShaftConnectableUserObjectInterface::finalize ( )
virtual

Reimplemented in ShaftConnectedMotorUserObject.

Definition at line 193 of file ShaftConnectableUserObjectInterface.C.

194 {
195 }

◆ getMomentOfInertia()

Real ShaftConnectableUserObjectInterface::getMomentOfInertia ( ) const
virtual

Reimplemented in ShaftConnectedMotorUserObject.

Definition at line 84 of file ShaftConnectableUserObjectInterface.C.

85 {
86  return _moment_of_inertia;
87 }

◆ getMomentOfInertiaJacobianData()

void ShaftConnectableUserObjectInterface::getMomentOfInertiaJacobianData ( DenseMatrix< Real > &  jacobian_block,
std::vector< dof_id_type > &  dofs_j 
) const
virtual

Definition at line 90 of file ShaftConnectableUserObjectInterface.C.

92 {
93  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
94 
95  unsigned int n_dofs = 1 + _scalar_dofs.size();
96  for (unsigned int c = 0; c < _n_connections; c++)
97  n_dofs += _moi_jacobian_flow_channel_vars[c].n();
98 
99  jacobian_block.resize(_n_shaft_eq, n_dofs);
100  dofs_j.resize(n_dofs);
101 
102  unsigned int k = 0;
103  jacobian_block(0, k) = _moi_jacobian_omega_var(0, 0);
104  dofs_j[k] = _omega_dof[0];
105  k++;
106 
107  // Store Jacobian entries w.r.t. scalar variables
108  for (unsigned int j = 0; j < _scalar_dofs.size(); j++, k++)
109  {
110  jacobian_block(0, k) = _moi_jacobian_scalar_vars(0, j);
111  dofs_j[k] = _scalar_dofs[j];
112  }
113  // Store Jacobian entries w.r.t. flow variables
114  for (unsigned int c = 0; c < _n_connections; c++)
115  {
116  for (unsigned int j = 0; j < _moi_jacobian_flow_channel_vars[c].n(); j++, k++)
117  {
118  jacobian_block(0, k) = _moi_jacobian_flow_channel_vars[c](0, j);
119  dofs_j[k] = _flow_channel_dofs[c][j];
120  }
121  }
122 }
DenseMatrix< Real > _moi_jacobian_omega_var
Jacobian entries of moment of inertia wrt to omega variable (from shaft)
unsigned int _n_shaft_eq
Number of equation in the shaft component.
std::vector< dof_id_type > _omega_dof
Degrees of freedom for omega variable (from shaft)
DenseMatrix< Real > _moi_jacobian_scalar_vars
Jacobian entries of moment of inertia wrt to omega scalar variables (from junction) ...
std::vector< dof_id_type > _scalar_dofs
Degrees of freedom for scalar variables (from junction)
std::vector< std::vector< dof_id_type > > _flow_channel_dofs
Degrees of freedom for flow channel variables, for each connection.
void resize(const unsigned int new_m, const unsigned int new_n)
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
static const std::string k
Definition: NS.h:130
std::vector< DenseMatrix< Real > > _moi_jacobian_flow_channel_vars
unsigned int _n_connections
Number of flow channels the shaft connected component is attached to.

◆ getTorque()

Real ShaftConnectableUserObjectInterface::getTorque ( ) const
virtual

◆ getTorqueJacobianData()

void ShaftConnectableUserObjectInterface::getTorqueJacobianData ( DenseMatrix< Real > &  jacobian_block,
std::vector< dof_id_type > &  dofs_j 
) const
virtual

Definition at line 49 of file ShaftConnectableUserObjectInterface.C.

Referenced by ShaftComponentTorqueScalarKernel::computeJacobian().

51 {
52  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
53 
54  unsigned int n_dofs = 1 + _scalar_dofs.size();
55  for (unsigned int c = 0; c < _n_connections; c++)
57 
58  jacobian_block.resize(_n_shaft_eq, n_dofs);
59  dofs_j.resize(n_dofs);
60 
61  unsigned int k = 0;
62  jacobian_block(0, k) = _torque_jacobian_omega_var(0, 0);
63  dofs_j[k] = _omega_dof[0];
64  k++;
65 
66  // Store Jacobian entries w.r.t. scalar variables
67  for (unsigned int j = 0; j < _scalar_dofs.size(); j++, k++)
68  {
69  jacobian_block(0, k) = _torque_jacobian_scalar_vars(0, j);
70  dofs_j[k] = _scalar_dofs[j];
71  }
72  // Store Jacobian entries w.r.t. flow variables
73  for (unsigned int c = 0; c < _n_connections; c++)
74  {
75  for (unsigned int j = 0; j < _torque_jacobian_flow_channel_vars[c].n(); j++, k++)
76  {
77  jacobian_block(0, k) = _torque_jacobian_flow_channel_vars[c](0, j);
78  dofs_j[k] = _flow_channel_dofs[c][j];
79  }
80  }
81 }
DenseMatrix< Real > _torque_jacobian_scalar_vars
Jacobian entries of torque wrt to scalar variables (from junction)
unsigned int _n_shaft_eq
Number of equation in the shaft component.
std::vector< dof_id_type > _omega_dof
Degrees of freedom for omega variable (from shaft)
std::vector< dof_id_type > _scalar_dofs
Degrees of freedom for scalar variables (from junction)
DenseMatrix< Real > _torque_jacobian_omega_var
Jacobian entries of torque wrt to omega variable (from shaft)
std::vector< std::vector< dof_id_type > > _flow_channel_dofs
Degrees of freedom for flow channel variables, for each connection.
void resize(const unsigned int new_m, const unsigned int new_n)
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
std::vector< DenseMatrix< Real > > _torque_jacobian_flow_channel_vars
Cached scalar residual Jacobian matrices w.r.t.
static const std::string k
Definition: NS.h:130
unsigned int _n_connections
Number of flow channels the shaft connected component is attached to.

◆ initialize()

void ShaftConnectableUserObjectInterface::initialize ( )
virtual

◆ setConnectionData()

void ShaftConnectableUserObjectInterface::setConnectionData ( const std::vector< std::vector< std::vector< Real >>> &  phi_face_values,
const std::vector< std::vector< dof_id_type >> &  flow_channel_dofs 
)
protectedvirtual

Stores data computed by a volume-junction-like object associated with the conection.

Definition at line 136 of file ShaftConnectableUserObjectInterface.C.

139 {
140  _flow_channel_dofs = flow_channel_dofs;
141  _phi_face_values = phi_face_values;
142 }
std::vector< std::vector< std::vector< Real > > > _phi_face_values
Side shape function value (i.e. side from the flow channels)
std::vector< std::vector< dof_id_type > > _flow_channel_dofs
Degrees of freedom for flow channel variables, for each connection.

◆ setOmegaDofs()

void ShaftConnectableUserObjectInterface::setOmegaDofs ( const MooseVariableScalar omega_var)
protectedvirtual

Definition at line 145 of file ShaftConnectableUserObjectInterface.C.

146 {
147  auto && dofs = omega_var->dofIndices();
148  mooseAssert(dofs.size() == 1,
149  "There should be exactly 1 coupled DoF index for the variable '" + omega_var->name() +
150  "'.");
151  _omega_dof = dofs;
152 }
const std::string & name() const override
virtual const std::vector< dof_id_type > & dofIndices() const
std::vector< dof_id_type > _omega_dof
Degrees of freedom for omega variable (from shaft)

◆ setupConnections()

void ShaftConnectableUserObjectInterface::setupConnections ( unsigned int  n_connections,
unsigned int  n_flow_eq 
)
protectedvirtual

Definition at line 125 of file ShaftConnectableUserObjectInterface.C.

127 {
128  _n_connections = n_connections;
131 
132  _n_flow_eq = n_flow_eq;
133 }
unsigned int _n_flow_eq
Number of flow variables in connected flow channels.
std::vector< DenseMatrix< Real > > _torque_jacobian_flow_channel_vars
Cached scalar residual Jacobian matrices w.r.t.
std::vector< DenseMatrix< Real > > _moi_jacobian_flow_channel_vars
unsigned int _n_connections
Number of flow channels the shaft connected component is attached to.

◆ setupJunctionData()

void ShaftConnectableUserObjectInterface::setupJunctionData ( std::vector< dof_id_type > &  scalar_dofs)
protectedvirtual

Stores data associated with a junction component.

Definition at line 155 of file ShaftConnectableUserObjectInterface.C.

156 {
157  _scalar_dofs = scalar_dofs;
158 }
std::vector< dof_id_type > _scalar_dofs
Degrees of freedom for scalar variables (from junction)

◆ threadJoin()

void ShaftConnectableUserObjectInterface::threadJoin ( const UserObject uo)
virtual

Definition at line 198 of file ShaftConnectableUserObjectInterface.C.

199 {
200  const ShaftConnectableUserObjectInterface & sctc_uo =
201  dynamic_cast<const ShaftConnectableUserObjectInterface &>(uo);
202  _torque += sctc_uo._torque;
204 }
Interface class for user objects that are connected to a shaft.

◆ validParams()

InputParameters ShaftConnectableUserObjectInterface::validParams ( )
static

Definition at line 15 of file ShaftConnectableUserObjectInterface.C.

Referenced by ShaftConnectedMotorUserObject::validParams().

16 {
18  return params;
19 }
InputParameters emptyInputParameters()

Member Data Documentation

◆ _flow_channel_dofs

std::vector<std::vector<dof_id_type> > ShaftConnectableUserObjectInterface::_flow_channel_dofs
protected

◆ _moi_jacobian_flow_channel_vars

std::vector<DenseMatrix<Real> > ShaftConnectableUserObjectInterface::_moi_jacobian_flow_channel_vars
protected

◆ _moi_jacobian_omega_var

DenseMatrix<Real> ShaftConnectableUserObjectInterface::_moi_jacobian_omega_var
protected

Jacobian entries of moment of inertia wrt to omega variable (from shaft)

Definition at line 88 of file ShaftConnectableUserObjectInterface.h.

Referenced by getMomentOfInertiaJacobianData(), and ShaftConnectableUserObjectInterface().

◆ _moi_jacobian_scalar_vars

DenseMatrix<Real> ShaftConnectableUserObjectInterface::_moi_jacobian_scalar_vars
protected

Jacobian entries of moment of inertia wrt to omega scalar variables (from junction)

Definition at line 86 of file ShaftConnectableUserObjectInterface.h.

Referenced by getMomentOfInertiaJacobianData().

◆ _moment_of_inertia

Real ShaftConnectableUserObjectInterface::_moment_of_inertia
protected

Moment of inertia.

Definition at line 74 of file ShaftConnectableUserObjectInterface.h.

Referenced by getMomentOfInertia(), initialize(), and threadJoin().

◆ _n_connections

unsigned int ShaftConnectableUserObjectInterface::_n_connections
protected

Number of flow channels the shaft connected component is attached to.

Definition at line 61 of file ShaftConnectableUserObjectInterface.h.

Referenced by getMomentOfInertiaJacobianData(), getTorqueJacobianData(), and setupConnections().

◆ _n_flow_eq

unsigned int ShaftConnectableUserObjectInterface::_n_flow_eq
protected

Number of flow variables in connected flow channels.

Definition at line 63 of file ShaftConnectableUserObjectInterface.h.

Referenced by computeMomentOfInertiaScalarJacobianWRTFlowDofs(), computeTorqueScalarJacobianWRTFlowDofs(), and setupConnections().

◆ _n_shaft_eq

unsigned int ShaftConnectableUserObjectInterface::_n_shaft_eq
protected

Number of equation in the shaft component.

Definition at line 59 of file ShaftConnectableUserObjectInterface.h.

Referenced by getMomentOfInertiaJacobianData(), getTorqueJacobianData(), and ShaftConnectableUserObjectInterface().

◆ _omega_dof

std::vector<dof_id_type> ShaftConnectableUserObjectInterface::_omega_dof
protected

Degrees of freedom for omega variable (from shaft)

Definition at line 66 of file ShaftConnectableUserObjectInterface.h.

Referenced by getMomentOfInertiaJacobianData(), getTorqueJacobianData(), setOmegaDofs(), and ShaftConnectableUserObjectInterface().

◆ _phi_face_values

std::vector<std::vector<std::vector<Real> > > ShaftConnectableUserObjectInterface::_phi_face_values
protected

Side shape function value (i.e. side from the flow channels)

Definition at line 91 of file ShaftConnectableUserObjectInterface.h.

Referenced by computeMomentOfInertiaScalarJacobianWRTFlowDofs(), computeTorqueScalarJacobianWRTFlowDofs(), and setConnectionData().

◆ _scalar_dofs

std::vector<dof_id_type> ShaftConnectableUserObjectInterface::_scalar_dofs
protected

Degrees of freedom for scalar variables (from junction)

Definition at line 68 of file ShaftConnectableUserObjectInterface.h.

Referenced by getMomentOfInertiaJacobianData(), getTorqueJacobianData(), and setupJunctionData().

◆ _torque

Real ShaftConnectableUserObjectInterface::_torque
protected

Total torque.

Definition at line 72 of file ShaftConnectableUserObjectInterface.h.

Referenced by getTorque(), initialize(), and threadJoin().

◆ _torque_jacobian_flow_channel_vars

std::vector<DenseMatrix<Real> > ShaftConnectableUserObjectInterface::_torque_jacobian_flow_channel_vars
protected

Cached scalar residual Jacobian matrices w.r.t.

flow channel variables, for each connection (first index) and each scalar variable (second index)

Definition at line 78 of file ShaftConnectableUserObjectInterface.h.

Referenced by computeTorqueScalarJacobianWRTFlowDofs(), getTorqueJacobianData(), and setupConnections().

◆ _torque_jacobian_omega_var

DenseMatrix<Real> ShaftConnectableUserObjectInterface::_torque_jacobian_omega_var
protected

Jacobian entries of torque wrt to omega variable (from shaft)

Definition at line 82 of file ShaftConnectableUserObjectInterface.h.

Referenced by getTorqueJacobianData(), and ShaftConnectableUserObjectInterface().

◆ _torque_jacobian_scalar_vars

DenseMatrix<Real> ShaftConnectableUserObjectInterface::_torque_jacobian_scalar_vars
protected

Jacobian entries of torque wrt to scalar variables (from junction)

Definition at line 80 of file ShaftConnectableUserObjectInterface.h.

Referenced by getTorqueJacobianData().


The documentation for this class was generated from the following files: