MAST
MAST::KinematicCouplingConstraint Class Reference

This object stores the information about the coupling of nodes. More...

#include <kinematic_coupling_constraint.h>

Collaboration diagram for MAST::KinematicCouplingConstraint:

Public Member Functions

 KinematicCouplingConstraint (MAST::SystemInitialization &sys_init, const libMesh::Node &slave_node, const std::set< const libMesh::Node * > &master_nodes, bool constrain_rotations)
 
virtual ~KinematicCouplingConstraint ()
 
unsigned int n_constrain_nodes () const
 
void get_dof_constraint_row (std::vector< std::tuple< libMesh::dof_id_type, libMesh::DofConstraintRow, Real >> &constraints) const
 initializes the vector of libMesh::DofConstraintRow objects and rhs values for this node More...
 

Protected Attributes

MAST::SystemInitialization_sys_init
 
const libMesh::Node * _slave
 
std::set< const libMesh::Node * > _masters
 
bool _constrain_rotations
 

Detailed Description

This object stores the information about the coupling of nodes.

A slave node can be constrained to one or more nodes and the rotations of the slave can be constrained (set equal to) the rotation of the master node. In case more than one master nodes are specified, then the coefficients in the constraint equation are weighted based on inverse relationship with the geometric distance and partition-of-unity.

The constraints are defined such that the displacement of the slave nodes is identified as

\[ u_s = u_m + \theta \times (X_s - X_m), \]

where, $ \theta $ is the rotation vector $(\theta_x, \theta_y, \theta_z)$, $ u_s $ and $ X_s $ are the translation and location of the slave nodes, respectively, and likewise for the master node with subscript $ (\cdot)_m $. Note, that the rotations of the slave node are not constrained to those of the master node. The cross product is written as

\begin{eqnarray*} \theta \times dX & = & \left| \begin{array}{ccc} \hat{i} & \hat{j} & \hat{k} \\ \theta_x & \theta_y & \theta_z \\ dx & dy & dz \end{array} \right| \\ & = & \hat{i} (\theta_y dz - \theta_z dy) - \hat{j} (\theta_x dz - \theta_z dx) + \hat{k} (\theta_x dy - \theta_y dx) \end{eqnarray*}

Therefore, the constraint for displacement along the x-axis is

\[ u_{xs} = u_{xm} + (\theta_y dz - \theta_z dy), \]

for displacement along the y-axis,

\[ u_{ys} = u_{ym} + (\theta_x dz - \theta_z dx), \]

and for displacement along the z-axis,

\[ u_{zs} = u_{zm} + (\theta_x dy - \theta_y dx). \]

Definition at line 71 of file kinematic_coupling_constraint.h.

Constructor & Destructor Documentation

MAST::KinematicCouplingConstraint::KinematicCouplingConstraint ( MAST::SystemInitialization sys_init,
const libMesh::Node &  slave_node,
const std::set< const libMesh::Node * > &  master_nodes,
bool  constrain_rotations 
)

Definition at line 27 of file kinematic_coupling_constraint.cpp.

MAST::KinematicCouplingConstraint::~KinematicCouplingConstraint ( )
virtual

Definition at line 39 of file kinematic_coupling_constraint.cpp.

Here is the call graph for this function:

Member Function Documentation

void MAST::KinematicCouplingConstraint::get_dof_constraint_row ( std::vector< std::tuple< libMesh::dof_id_type, libMesh::DofConstraintRow, Real >> &  constraints) const

initializes the vector of libMesh::DofConstraintRow objects and rhs values for this node

Definition at line 46 of file kinematic_coupling_constraint.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

unsigned int MAST::KinematicCouplingConstraint::n_constrain_nodes ( ) const
inline
Returns
the number of constraints that will be added from this object

Definition at line 86 of file kinematic_coupling_constraint.h.

Here is the call graph for this function:

Member Data Documentation

bool MAST::KinematicCouplingConstraint::_constrain_rotations
protected

Definition at line 106 of file kinematic_coupling_constraint.h.

std::set<const libMesh::Node*> MAST::KinematicCouplingConstraint::_masters
protected

Definition at line 105 of file kinematic_coupling_constraint.h.

const libMesh::Node* MAST::KinematicCouplingConstraint::_slave
protected

Definition at line 104 of file kinematic_coupling_constraint.h.

MAST::SystemInitialization& MAST::KinematicCouplingConstraint::_sys_init
protected

Definition at line 103 of file kinematic_coupling_constraint.h.


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