Multidisciplinary-design Adaptation and Sensitivity Toolkit (MAST)
MAST::KinematicCouplingConstraint Class Reference

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.

#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 ()
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...
unsigned int n_constrain_nodes () const

Protected Attributes

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

Constructor & Destructor Documentation

◆ KinematicCouplingConstraint()

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.

◆ ~KinematicCouplingConstraint()

MAST::KinematicCouplingConstraint::~KinematicCouplingConstraint ( )

Definition at line 39 of file kinematic_coupling_constraint.cpp.

Member Function Documentation

◆ get_dof_constraint_row()

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.

◆ n_constrain_nodes()

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

Definition at line 86 of file kinematic_coupling_constraint.h.

Member Data Documentation

◆ _constrain_rotations

bool MAST::KinematicCouplingConstraint::_constrain_rotations

Definition at line 106 of file kinematic_coupling_constraint.h.

◆ _masters

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

Definition at line 105 of file kinematic_coupling_constraint.h.

◆ _slave

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

Definition at line 104 of file kinematic_coupling_constraint.h.

◆ _sys_init

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

Definition at line 103 of file kinematic_coupling_constraint.h.

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