MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
SphericalHingeJoint Class Reference

#include <spherj.h>

Inheritance diagram for SphericalHingeJoint:
Collaboration diagram for SphericalHingeJoint:

Public Member Functions

 SphericalHingeJoint (unsigned int uL, const DofOwner *pDO, const StructNode *pN1, const StructNode *pN2, const Vec3 &dTmp1, const Mat3x3 &RTmp1h, const Vec3 &dTmp2, const Mat3x3 &RTmp2h, const OrientationDescription &od, flag fOut)
 
 ~SphericalHingeJoint (void)
 
virtual Joint::Type GetJointType (void) const
 
virtual std::ostream & Restart (std::ostream &out) const
 
virtual unsigned int iGetNumDof (void) const
 
virtual DofOrder::Order GetDofType (unsigned int i) const
 
virtual void WorkSpaceDim (integer *piNumRows, integer *piNumCols) const
 
VariableSubMatrixHandlerAssJac (VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
SubVectorHandlerAssRes (SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
DofOrder::Order GetEqType (unsigned int i) const
 
void OutputPrepare (OutputHandler &OH)
 
virtual void Output (OutputHandler &OH) const
 
virtual void SetValue (DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
 
virtual HintParseHint (DataManager *pDM, const char *s) const
 
virtual unsigned int iGetInitialNumDof (void) const
 
virtual void InitialWorkSpaceDim (integer *piNumRows, integer *piNumCols) const
 
VariableSubMatrixHandlerInitialAssJac (VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
 
SubVectorHandlerInitialAssRes (SubVectorHandler &WorkVec, const VectorHandler &XCurr)
 
virtual void GetConnectedNodes (std::vector< const Node * > &connectedNodes) const
 
- Public Member Functions inherited from Elem
 Elem (unsigned int uL, flag fOut)
 
virtual ~Elem (void)
 
virtual std::ostream & DescribeDof (std::ostream &out, const char *prefix="", bool bInitial=false) const
 
virtual void DescribeDof (std::vector< std::string > &desc, bool bInitial=false, int i=-1) const
 
virtual std::ostream & DescribeEq (std::ostream &out, const char *prefix="", bool bInitial=false) const
 
virtual void DescribeEq (std::vector< std::string > &desc, bool bInitial=false, int i=-1) const
 
virtual void AssMats (VariableSubMatrixHandler &WorkMatA, VariableSubMatrixHandler &WorkMatB, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual bool bInverseDynamics (void) const
 
void SetInverseDynamicsFlags (unsigned uIDF)
 
unsigned GetInverseDynamicsFlags (void) const
 
bool bIsErgonomy (void) const
 
bool bIsRightHandSide (void) const
 
virtual VariableSubMatrixHandlerAssJac (VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
 
virtual SubVectorHandlerAssRes (SubVectorHandler &WorkVec, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr, const VectorHandler &XPrimePrimeCurr, InverseDynamics::Order iOrder=InverseDynamics::INVERSE_DYNAMICS)
 
virtual int GetNumConnectedNodes (void) const
 
- Public Member Functions inherited from WithLabel
 WithLabel (unsigned int uL=0, const std::string &sN="")
 
virtual ~WithLabel (void)
 
void PutLabel (unsigned int uL)
 
void PutName (const std::string &sN)
 
unsigned int GetLabel (void) const
 
const std::string & GetName (void) const
 
- Public Member Functions inherited from SimulationEntity
 SimulationEntity (void)
 
virtual ~SimulationEntity (void)
 
virtual bool bIsValidIndex (unsigned int i) const
 
virtual void BeforePredict (VectorHandler &, VectorHandler &, VectorHandler &, VectorHandler &) const
 
virtual void AfterPredict (VectorHandler &X, VectorHandler &XP)
 
virtual void Update (const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual void DerivativesUpdate (const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual void AfterConvergence (const VectorHandler &X, const VectorHandler &XP)
 
virtual void AfterConvergence (const VectorHandler &X, const VectorHandler &XP, const VectorHandler &XPP)
 
virtual unsigned int iGetNumPrivData (void) const
 
virtual unsigned int iGetPrivDataIdx (const char *s) const
 
virtual doublereal dGetPrivData (unsigned int i) const
 
virtual std::ostream & OutputAppend (std::ostream &out) const
 
virtual void ReadInitialState (MBDynParser &HP)
 
- Public Member Functions inherited from ToBeOutput
 ToBeOutput (flag fOut=fDefaultOut)
 
virtual ~ToBeOutput (void)
 
virtual void Output (OutputHandler &OH, const VectorHandler &X, const VectorHandler &XP) const
 
virtual flag fToBeOutput (void) const
 
virtual bool bToBeOutput (void) const
 
virtual void SetOutputFlag (flag f=flag(1))
 
- Public Member Functions inherited from Joint
 Joint (unsigned int uL, const DofOwner *pD, flag fOut)
 
virtual ~Joint (void)
 
virtual Elem::Type GetElemType (void) const
 
std::ostream & Output (std::ostream &out, const char *sJointName, unsigned int uLabel, const Vec3 &FLocal, const Vec3 &MLocal, const Vec3 &FGlobal, const Vec3 &MGlobal) const
 
virtual void SetInitialValue (VectorHandler &)
 
virtual void Update (const VectorHandler &XCurr, InverseDynamics::Order iOrder=InverseDynamics::INVERSE_DYNAMICS)
 
bool bIsPrescribedMotion (void) const
 
bool bIsTorque (void) const
 
- Public Member Functions inherited from ElemGravityOwner
 ElemGravityOwner (unsigned int uL, flag fOut)
 
virtual ~ElemGravityOwner (void)
 
virtual doublereal dGetM (void) const
 
Vec3 GetS (void) const
 
Mat3x3 GetJ (void) const
 
Vec3 GetB (void) const
 
Vec3 GetG (void) const
 
- Public Member Functions inherited from GravityOwner
 GravityOwner (void)
 
virtual ~GravityOwner (void)
 
void PutGravity (const Gravity *pG)
 
virtual bool bGetGravity (const Vec3 &X, Vec3 &Acc) const
 
- Public Member Functions inherited from ElemWithDofs
 ElemWithDofs (unsigned int uL, const DofOwner *pDO, flag fOut)
 
virtual ~ElemWithDofs (void)
 
- Public Member Functions inherited from DofOwnerOwner
 DofOwnerOwner (const DofOwner *pDO)
 
virtual ~DofOwnerOwner ()
 
virtual const DofOwnerpGetDofOwner (void) const
 
virtual integer iGetFirstIndex (void) const
 
- Public Member Functions inherited from InitialAssemblyElem
 InitialAssemblyElem (unsigned int uL, flag fOut)
 
virtual ~InitialAssemblyElem (void)
 
- Public Member Functions inherited from SubjectToInitialAssembly
 SubjectToInitialAssembly (void)
 
virtual ~SubjectToInitialAssembly (void)
 

Protected Attributes

OrientationDescription od
 
- Protected Attributes inherited from WithLabel
unsigned int uLabel
 
std::string sName
 
- Protected Attributes inherited from ToBeOutput
flag fOutput
 
- Protected Attributes inherited from GravityOwner
GravitypGravity
 

Private Attributes

const StructNodepNode1
 
const StructNodepNode2
 
Vec3 d1
 
Mat3x3 R1h
 
Vec3 d2
 
Mat3x3 R2h
 
Vec3 F
 

Additional Inherited Members

- Public Types inherited from Elem
enum  Type {
  UNKNOWN = -1, AIRPROPERTIES = 0, INDUCEDVELOCITY, AUTOMATICSTRUCTURAL,
  GRAVITY, BODY, JOINT, JOINT_REGULARIZATION,
  BEAM, PLATE, FORCE, INERTIA,
  ELECTRICBULK, ELECTRIC, THERMAL, HYDRAULIC,
  BULK, LOADABLE, DRIVEN, EXTERNAL,
  AEROMODAL, AERODYNAMIC, GENEL, SOCKETSTREAM_OUTPUT,
  RTAI_OUTPUT = SOCKETSTREAM_OUTPUT, LASTELEMTYPE
}
 
- Public Types inherited from SimulationEntity
typedef std::vector< Hint * > Hints
 
- Public Types inherited from ToBeOutput
enum  { OUTPUT = 0x1U, OUTPUT_MASK = 0xFU, OUTPUT_PRIVATE = 0x10U, OUTPUT_PRIVATE_MASK = ~OUTPUT_MASK }
 
- Public Types inherited from Joint
enum  Type {
  UNKNOWN = -1, DISTANCE = 0, DISTANCEWITHOFFSET, CLAMP,
  SPHERICALHINGE, PIN, UNIVERSALHINGE, UNIVERSALROTATION,
  UNIVERSALPIN, PLANEHINGE, PLANEROTATION, PLANEPIN,
  AXIALROTATION, PLANEDISP, PLANEDISPPIN, INPLANE,
  INPLANECONTACT, J_INLINE, ROD, RODBEZIER,
  DEFORMABLEHINGE, DEFORMABLEDISPJOINT, DEFORMABLEJOINT, DEFORMABLEAXIALJOINT,
  VISCOUSBODY, LINEARVELOCITY, ANGULARVELOCITY, LINEARACCELERATION,
  ANGULARACCELERATION, PRISMATIC, DRIVEHINGE, DRIVEDISP,
  DRIVEDISPPIN, IMPOSEDORIENTATION, IMPOSEDDISP, IMPOSEDDISPPIN,
  IMPOSEDKINEMATICS, BEAMSLIDER, BRAKE, GIMBAL,
  POINT_SURFACE_CONTACT, TOTALJOINT, TOTALPINJOINT, TOTALEQUATION,
  TOTALREACTION, MODAL, SCREWJOINT, LASTJOINTTYPE
}
 
- Protected Member Functions inherited from Joint
virtual void OutputPrepare_int (const std::string &type, OutputHandler &OH, std::string &name)
 
- Protected Member Functions inherited from ElemGravityOwner
virtual Vec3 GetS_int (void) const
 
virtual Mat3x3 GetJ_int (void) const
 
virtual Vec3 GetB_int (void) const
 
virtual Vec3 GetG_int (void) const
 

Detailed Description

Definition at line 42 of file spherj.h.

Constructor & Destructor Documentation

SphericalHingeJoint::SphericalHingeJoint ( unsigned int  uL,
const DofOwner pDO,
const StructNode pN1,
const StructNode pN2,
const Vec3 dTmp1,
const Mat3x3 RTmp1h,
const Vec3 dTmp2,
const Mat3x3 RTmp2h,
const OrientationDescription od,
flag  fOut 
)

Definition at line 43 of file spherj.cc.

References NO_OP.

50 : Elem(uL, fOut),
51 Joint(uL, pDO, fOut),
52 pNode1(pN1), pNode2(pN2),
53 #ifdef USE_NETCDF
54 Var_Phi(0),
55 #endif // USE_NETCDF
56 d1(dTmp1), R1h(RTmp1h),
57 d2(dTmp2), R2h(RTmp2h),
58 F(Zero3),
59 od(od)
60 {
61  NO_OP;
62 }
const Vec3 Zero3(0., 0., 0.)
const StructNode * pNode1
Definition: spherj.h:44
Joint(unsigned int uL, const DofOwner *pD, flag fOut)
Definition: joint.cc:83
#define NO_OP
Definition: myassert.h:74
OrientationDescription od
Definition: spherj.h:56
const StructNode * pNode2
Definition: spherj.h:45
Elem(unsigned int uL, flag fOut)
Definition: elem.cc:41
SphericalHingeJoint::~SphericalHingeJoint ( void  )

Definition at line 66 of file spherj.cc.

References NO_OP.

67 {
68  NO_OP;
69 };
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

VariableSubMatrixHandler & SphericalHingeJoint::AssJac ( VariableSubMatrixHandler WorkMat,
doublereal  dCoef,
const VectorHandler XCurr,
const VectorHandler XPrimeCurr 
)
virtual

Implements Elem.

Definition at line 89 of file spherj.cc.

References d1, d2, DEBUGCOUT, F, StructNode::GetRRef(), DofOwnerOwner::iGetFirstIndex(), StructDispNode::iGetFirstMomentumIndex(), StructDispNode::iGetFirstPositionIndex(), MatCrossCross, pNode1, pNode2, SparseSubMatrixHandler::PutCross(), SparseSubMatrixHandler::PutDiag(), SparseSubMatrixHandler::PutMat3x3(), SparseSubMatrixHandler::ResizeReset(), and VariableSubMatrixHandler::SetSparse().

93 {
94  DEBUGCOUT("Entering SphericalHingeJoint::AssJac()" << std::endl);
95 
96  SparseSubMatrixHandler& WM = WorkMat.SetSparse();
97  WM.ResizeReset(54, 1);
98 
99  integer iNode1FirstPosIndex = pNode1->iGetFirstPositionIndex();
100  integer iNode1FirstMomIndex = pNode1->iGetFirstMomentumIndex();
101  integer iNode2FirstPosIndex = pNode2->iGetFirstPositionIndex();
102  integer iNode2FirstMomIndex = pNode2->iGetFirstMomentumIndex();
103  integer iFirstReactionIndex = iGetFirstIndex();
104 
105  Vec3 dTmp1(pNode1->GetRRef()*d1);
106  Vec3 dTmp2(pNode2->GetRRef()*d2);
107 
108 
109  /*
110  * L'equazione di vincolo afferma che il punto in cui si trova la
111  * cerniera deve essere consistente con la posizione dei due nodi:
112  * x2 + d2 = x1 + d1
113  *
114  * con: d2 = R2 * d2_0
115  * d1 = R1 * d1_0
116  *
117  * La forza e' data dalla reazione vincolare F, nel sistema globale
118  * La coppia dovuta all'eccentricita' e' data rispettivamente da:
119  * -d1 /\ F per il nodo 1,
120  * d2 /\ F per il nodo 2
121  *
122  *
123  * x1 g1 x2 g2 F
124  * Q1 | 0 0 0 0 I | | x1 | | -F |
125  * G1 | 0 cF/\d1/\ 0 0 d1/\ | | g1 | | -d1/\F |
126  * Q2 | 0 0 0 -cF/\d2/\ -I | | x2 | = | F |
127  * G2 | 0 0 0 0 -d2/\ | | g2 | | d2/\F |
128  * F | -c*I c*d1/\ c*I -c*d2/\ 0 | | F | | x1+d1-x2-d2 |
129  *
130  * con d1 = R1*d01, d2 = R2*d02, c = dCoef
131  */
132 
133  /* Moltiplico la forza per il coefficiente del metodo.
134  * Nota: F, la reazione vincolare, e' stata aggiornata da AssRes */
135  Vec3 FTmp = F*dCoef;
136 
137  /* termini di reazione sul nodo 1 */
138  WM.PutDiag(1, iNode1FirstMomIndex, iFirstReactionIndex, 1.);
139  WM.PutCross(4, iNode1FirstMomIndex+3, iFirstReactionIndex, dTmp1);
140 
141  WM.PutMat3x3(10, iNode1FirstMomIndex+3,
142  iNode1FirstPosIndex+3, Mat3x3(MatCrossCross, FTmp, dTmp1));
143 
144  /* termini di reazione sul nodo 2 */
145  WM.PutDiag(19, iNode2FirstMomIndex, iFirstReactionIndex, -1.);
146  WM.PutCross(22, iNode2FirstMomIndex+3, iFirstReactionIndex, -dTmp2);
147 
148  WM.PutMat3x3(28, iNode2FirstMomIndex+3,
149  iNode2FirstPosIndex+3, Mat3x3(MatCrossCross, FTmp, -dTmp2));
150 
151  /* Modifica: divido le equazioni di vincolo per dCoef */
152 
153  /* termini di vincolo dovuti al nodo 1 */
154  WM.PutDiag(37, iFirstReactionIndex, iNode1FirstPosIndex, -1.);
155  WM.PutCross(40, iFirstReactionIndex, iNode1FirstPosIndex+3, dTmp1);
156 
157  /* termini di vincolo dovuti al nodo 1 */
158  WM.PutDiag(46, iFirstReactionIndex, iNode2FirstPosIndex, 1.);
159  WM.PutCross(49, iFirstReactionIndex, iNode2FirstPosIndex+3, -dTmp2);
160 
161  return WorkMat;
162 }
void PutMat3x3(integer iSubIt, integer iFirstRow, integer iFirstCol, const Mat3x3 &m)
Definition: submat.cc:1331
virtual const Mat3x3 & GetRRef(void) const
Definition: strnode.h:1006
Definition: matvec3.h:98
const StructNode * pNode1
Definition: spherj.h:44
void ResizeReset(integer iNewRow, integer iNewCol)
Definition: submat.cc:1084
void PutCross(integer iSubIt, integer iFirstRow, integer iFirstCol, const Vec3 &v)
Definition: submat.cc:1236
const StructNode * pNode2
Definition: spherj.h:45
#define DEBUGCOUT(msg)
Definition: myassert.h:232
virtual integer iGetFirstMomentumIndex(void) const =0
virtual integer iGetFirstPositionIndex(void) const
Definition: strnode.h:452
const MatCrossCross_Manip MatCrossCross
Definition: matvec3.cc:640
void PutDiag(integer iSubIt, integer iFirstRow, integer iFirstCol, const Vec3 &v)
Definition: submat.cc:1125
SparseSubMatrixHandler & SetSparse(void)
Definition: submat.h:1178
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

SubVectorHandler & SphericalHingeJoint::AssRes ( SubVectorHandler WorkVec,
doublereal  dCoef,
const VectorHandler XCurr,
const VectorHandler XPrimeCurr 
)
virtual

Implements Elem.

Definition at line 166 of file spherj.cc.

References VectorHandler::Add(), ASSERT, d1, d2, DEBUGCOUT, F, StructNode::GetRCurr(), StructDispNode::GetXCurr(), DofOwnerOwner::iGetFirstIndex(), StructDispNode::iGetFirstMomentumIndex(), pNode1, pNode2, SubVectorHandler::PutRowIndex(), VectorHandler::ResizeReset(), VectorHandler::Sub(), and WorkSpaceDim().

170 {
171  DEBUGCOUT("Entering SphericalHingeJoint::AssRes()" << std::endl);
172 
173  /* Dimensiona e resetta la matrice di lavoro */
174  integer iNumRows = 0;
175  integer iNumCols = 0;
176  WorkSpaceDim(&iNumRows, &iNumCols);
177  WorkVec.ResizeReset(iNumRows);
178 
179  integer iNode1FirstMomIndex = pNode1->iGetFirstMomentumIndex();
180  integer iNode2FirstMomIndex = pNode2->iGetFirstMomentumIndex();
181  integer iFirstReactionIndex = iGetFirstIndex();
182 
183  /* Indici dei nodi */
184  for (int iCnt = 1; iCnt <= 6; iCnt++) {
185  WorkVec.PutRowIndex(iCnt, iNode1FirstMomIndex+iCnt);
186  WorkVec.PutRowIndex(6+iCnt, iNode2FirstMomIndex+iCnt);
187  }
188 
189  /* Indici del vincolo */
190  for (int iCnt = 1; iCnt <= 3; iCnt++) {
191  WorkVec.PutRowIndex(12+iCnt, iFirstReactionIndex+iCnt);
192  }
193 
194  F = Vec3(XCurr, iFirstReactionIndex+1);
195 
196  const Vec3& x1(pNode1->GetXCurr());
197  const Vec3& x2(pNode2->GetXCurr());
198 
199  Vec3 dTmp1(pNode1->GetRCurr()*d1);
200  Vec3 dTmp2(pNode2->GetRCurr()*d2);
201 
202  WorkVec.Sub(1, F);
203  WorkVec.Sub(4, dTmp1.Cross(F));
204  WorkVec.Add(7, F);
205  WorkVec.Add(10, dTmp2.Cross(F));
206 
207  /* Modifica: divido le equazioni di vincolo per dCoef */
208  ASSERT(dCoef != 0.);
209  WorkVec.Add(13, (x1+dTmp1-x2-dTmp2)/dCoef);
210 
211  return WorkVec;
212 }
Definition: matvec3.h:98
virtual void ResizeReset(integer)
Definition: vh.cc:55
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
const StructNode * pNode1
Definition: spherj.h:44
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: spherj.h:86
virtual void Sub(integer iRow, const Vec3 &v)
Definition: vh.cc:78
virtual void PutRowIndex(integer iSubRow, integer iRow)=0
const StructNode * pNode2
Definition: spherj.h:45
#define DEBUGCOUT(msg)
Definition: myassert.h:232
virtual integer iGetFirstMomentumIndex(void) const =0
#define ASSERT(expression)
Definition: colamd.c:977
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
virtual void Add(integer iRow, const Vec3 &v)
Definition: vh.cc:63
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

virtual void SphericalHingeJoint::GetConnectedNodes ( std::vector< const Node * > &  connectedNodes) const
inlinevirtual

Reimplemented from Elem.

Definition at line 140 of file spherj.h.

References pNode1, and pNode2.

140  {
141  connectedNodes.resize(2);
142  connectedNodes[0] = pNode1;
143  connectedNodes[1] = pNode2;
144  };
const StructNode * pNode1
Definition: spherj.h:44
const StructNode * pNode2
Definition: spherj.h:45
virtual DofOrder::Order SphericalHingeJoint::GetDofType ( unsigned int  i) const
inlinevirtual

Reimplemented from Elem.

Definition at line 81 of file spherj.h.

References DofOrder::ALGEBRAIC, and ASSERT.

81  {
82  ASSERT(i >= 0 && i < 3);
83  return DofOrder::ALGEBRAIC;
84  };
#define ASSERT(expression)
Definition: colamd.c:977
DofOrder::Order SphericalHingeJoint::GetEqType ( unsigned int  i) const
virtual

Reimplemented from SimulationEntity.

Definition at line 215 of file spherj.cc.

References DofOrder::ALGEBRAIC, ASSERTMSGBREAK, and iGetNumDof().

215  {
216  ASSERTMSGBREAK(i >=0 and i < iGetNumDof(),
217  "INDEX ERROR in SphericalHingeJoint::GetEqType");
218  return DofOrder::ALGEBRAIC;
219 }
#define ASSERTMSGBREAK(expr, msg)
Definition: myassert.h:222
virtual unsigned int iGetNumDof(void) const
Definition: spherj.h:77

Here is the call graph for this function:

virtual Joint::Type SphericalHingeJoint::GetJointType ( void  ) const
inlinevirtual

Implements Joint.

Definition at line 70 of file spherj.h.

References Joint::SPHERICALHINGE.

70  {
71  return Joint::SPHERICALHINGE;
72  };
virtual unsigned int SphericalHingeJoint::iGetInitialNumDof ( void  ) const
inlinevirtual

Implements SubjectToInitialAssembly.

Definition at line 114 of file spherj.h.

114  {
115  return 6;
116  };
virtual unsigned int SphericalHingeJoint::iGetNumDof ( void  ) const
inlinevirtual

Reimplemented from Elem.

Definition at line 77 of file spherj.h.

Referenced by GetEqType().

77  {
78  return 3;
79  };
VariableSubMatrixHandler & SphericalHingeJoint::InitialAssJac ( VariableSubMatrixHandler WorkMat,
const VectorHandler XCurr 
)
virtual

Implements SubjectToInitialAssembly.

Definition at line 376 of file spherj.cc.

References FullSubMatrixHandler::Add(), Vec3::Cross(), d1, d2, DEBUGCOUT, F, StructNode::GetRRef(), StructNode::GetWRef(), DofOwnerOwner::iGetFirstIndex(), StructDispNode::iGetFirstPositionIndex(), InitialWorkSpaceDim(), MatCross, MatCrossCross, pNode1, pNode2, FullSubMatrixHandler::PutCoef(), FullSubMatrixHandler::PutColIndex(), FullSubMatrixHandler::PutRowIndex(), FullSubMatrixHandler::ResizeReset(), VariableSubMatrixHandler::SetFull(), and FullSubMatrixHandler::Sub().

378 {
379  DEBUGCOUT("Entering SphericalHingeJoint::InitialAssJac()" << std::endl);
380 
381  FullSubMatrixHandler& WM = WorkMat.SetFull();
382 
383  /* Dimensiona e resetta la matrice di lavoro */
384  integer iNumRows = 0;
385  integer iNumCols = 0;
386  InitialWorkSpaceDim(&iNumRows, &iNumCols);
387  WM.ResizeReset(iNumRows, iNumCols);
388 
389  /* Equazioni: vedi joints.dvi */
390 
391  /* Indici */
392  integer iNode1FirstPosIndex = pNode1->iGetFirstPositionIndex();
393  integer iNode1FirstVelIndex = iNode1FirstPosIndex+6;
394  integer iNode2FirstPosIndex = pNode2->iGetFirstPositionIndex();
395  integer iNode2FirstVelIndex = iNode2FirstPosIndex+6;
396  integer iFirstReactionIndex = iGetFirstIndex();
397  integer iReactionPrimeIndex = iFirstReactionIndex+3;
398 
399  /* Setto gli indici */
400  for (int iCnt = 1; iCnt <= 6; iCnt++) {
401  WM.PutRowIndex(iCnt, iNode1FirstPosIndex+iCnt);
402  WM.PutColIndex(iCnt, iNode1FirstPosIndex+iCnt);
403  WM.PutRowIndex(6+iCnt, iNode1FirstVelIndex+iCnt);
404  WM.PutColIndex(6+iCnt, iNode1FirstVelIndex+iCnt);
405  WM.PutRowIndex(12+iCnt, iNode2FirstPosIndex+iCnt);
406  WM.PutColIndex(12+iCnt, iNode2FirstPosIndex+iCnt);
407  WM.PutRowIndex(18+iCnt, iNode2FirstVelIndex+iCnt);
408  WM.PutColIndex(18+iCnt, iNode2FirstVelIndex+iCnt);
409  WM.PutRowIndex(24+iCnt, iFirstReactionIndex+iCnt);
410  WM.PutColIndex(24+iCnt, iFirstReactionIndex+iCnt);
411  }
412 
413  /* Matrici identita' */
414 
415  for (int iCnt = 1; iCnt <= 3; iCnt++) {
416  /* Contributo di forza all'equazione della forza, nodo 1 */
417  WM.PutCoef(iCnt, 24+iCnt, 1.);
418 
419  /* Contrib. di der. di forza all'eq. della der. della forza, nodo 1 */
420  WM.PutCoef(6+iCnt, 27+iCnt, 1.);
421 
422  /* Contributo di forza all'equazione della forza, nodo 2 */
423  WM.PutCoef(12+iCnt, 24+iCnt, -1.);
424 
425  /* Contrib. di der. di forza all'eq. della der. della forza, nodo 2 */
426  WM.PutCoef(18+iCnt, 27+iCnt, -1.);
427 
428  /* Equazione di vincolo, nodo 1 */
429  WM.PutCoef(24+iCnt, iCnt, -1.);
430 
431  /* Derivata dell'equazione di vincolo, nodo 1 */
432  WM.PutCoef(27+iCnt, 6+iCnt, -1.);
433 
434  /* Equazione di vincolo, nodo 2 */
435  WM.PutCoef(24+iCnt, 12+iCnt, 1.);
436 
437  /* Derivata dell'equazione di vincolo, nodo 2 */
438  WM.PutCoef(27+iCnt, 18+iCnt, 1.);
439  }
440 
441  /* Recupera i dati */
442  const Mat3x3& R1(pNode1->GetRRef());
443  const Mat3x3& R2(pNode2->GetRRef());
444  const Vec3& Omega1(pNode1->GetWRef());
445  const Vec3& Omega2(pNode2->GetWRef());
446  /* F e' stata aggiornata da InitialAssRes */
447  Vec3 FPrime(XCurr, iReactionPrimeIndex+1);
448 
449  /* Distanza nel sistema globale */
450  Vec3 d1Tmp(R1*d1);
451  Vec3 d2Tmp(R2*d2);
452 
453  /* Matrici F/\d1/\, -F/\d2/\ */
454  Mat3x3 FWedged1Wedge(MatCrossCross, F, d1Tmp);
455  Mat3x3 FWedged2Wedge(MatCrossCross, F, -d2Tmp);
456 
457  /* Matrici (omega1/\d1)/\, -(omega2/\d2)/\ */
458  Mat3x3 O1Wedged1Wedge(MatCross, Omega1.Cross(d1Tmp));
459  Mat3x3 O2Wedged2Wedge(MatCross, d2Tmp.Cross(Omega2));
460 
461  /* Equazione di momento, nodo 1 */
462  WM.Add(4, 4, FWedged1Wedge);
463  WM.Add(4, 25, Mat3x3(MatCross, d1Tmp));
464 
465  /* Equazione di momento, nodo 2 */
466  WM.Add(16, 16, FWedged2Wedge);
467  WM.Sub(16, 25, Mat3x3(MatCross, d2Tmp));
468 
469  /* Derivata dell'equazione di momento, nodo 1 */
470  WM.Add(10, 4, (Mat3x3(MatCross, FPrime) + Mat3x3(MatCrossCross, F, Omega1))*Mat3x3(MatCross, d1Tmp));
471  WM.Add(10, 10, FWedged1Wedge);
472  WM.Add(10, 25, O1Wedged1Wedge);
473  WM.Add(10, 28, Mat3x3(MatCross, d1Tmp));
474 
475  /* Derivata dell'equazione di momento, nodo 2 */
476  WM.Sub(22, 16, (Mat3x3(MatCross, FPrime) + Mat3x3(MatCrossCross, F, Omega2))*Mat3x3(MatCross, d2Tmp));
477  WM.Add(22, 22, FWedged2Wedge);
478  WM.Add(22, 25, O2Wedged2Wedge);
479  WM.Sub(22, 28, Mat3x3(MatCross, d2Tmp));
480 
481  /* Equazione di vincolo */
482  WM.Add(25, 4, Mat3x3(MatCross, d1Tmp));
483  WM.Sub(25, 16, Mat3x3(MatCross, d2Tmp));
484 
485  /* Derivata dell'equazione di vincolo */
486  WM.Add(28, 4, O1Wedged1Wedge);
487  WM.Add(28, 10, Mat3x3(MatCross, d1Tmp));
488  WM.Add(28, 16, O2Wedged2Wedge);
489  WM.Sub(28, 22, Mat3x3(MatCross, d2Tmp));
490 
491  return WorkMat;
492 }
void PutColIndex(integer iSubCol, integer iCol)
Definition: submat.h:325
virtual const Mat3x3 & GetRRef(void) const
Definition: strnode.h:1006
Definition: matvec3.h:98
const MatCross_Manip MatCross
Definition: matvec3.cc:639
FullSubMatrixHandler & SetFull(void)
Definition: submat.h:1168
const StructNode * pNode1
Definition: spherj.h:44
void Add(integer iRow, integer iCol, const Vec3 &v)
Definition: submat.cc:209
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: spherj.h:117
void PutCoef(integer iRow, integer iCol, const doublereal &dCoef)
Definition: submat.h:672
virtual const Vec3 & GetWRef(void) const
Definition: strnode.h:1024
const StructNode * pNode2
Definition: spherj.h:45
#define DEBUGCOUT(msg)
Definition: myassert.h:232
virtual integer iGetFirstPositionIndex(void) const
Definition: strnode.h:452
virtual void ResizeReset(integer, integer)
Definition: submat.cc:182
const MatCrossCross_Manip MatCrossCross
Definition: matvec3.cc:640
void PutRowIndex(integer iSubRow, integer iRow)
Definition: submat.h:311
void Sub(integer iRow, integer iCol, const Vec3 &v)
Definition: submat.cc:215
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

SubVectorHandler & SphericalHingeJoint::InitialAssRes ( SubVectorHandler WorkVec,
const VectorHandler XCurr 
)
virtual

Implements SubjectToInitialAssembly.

Definition at line 497 of file spherj.cc.

References VectorHandler::Add(), Vec3::Cross(), d1, d2, DEBUGCOUT, F, StructNode::GetRCurr(), StructDispNode::GetVCurr(), StructNode::GetWCurr(), StructDispNode::GetXCurr(), DofOwnerOwner::iGetFirstIndex(), StructDispNode::iGetFirstPositionIndex(), InitialWorkSpaceDim(), pNode1, pNode2, SubVectorHandler::PutRowIndex(), VectorHandler::ResizeReset(), and VectorHandler::Sub().

499 {
500  DEBUGCOUT("Entering SphericalHingeJoint::InitialAssRes()" << std::endl);
501 
502  /* Dimensiona e resetta la matrice di lavoro */
503  integer iNumRows = 0;
504  integer iNumCols = 0;
505  InitialWorkSpaceDim(&iNumRows, &iNumCols);
506  WorkVec.ResizeReset(iNumRows);
507 
508  /* Indici */
509  integer iNode1FirstPosIndex = pNode1->iGetFirstPositionIndex();
510  integer iNode1FirstVelIndex = iNode1FirstPosIndex+6;
511  integer iNode2FirstPosIndex = pNode2->iGetFirstPositionIndex();
512  integer iNode2FirstVelIndex = iNode2FirstPosIndex+6;
513  integer iFirstReactionIndex = iGetFirstIndex();
514  integer iReactionPrimeIndex = iFirstReactionIndex+3;
515 
516  /* Setta gli indici */
517  for (int iCnt = 1; iCnt <= 6; iCnt++) {
518  WorkVec.PutRowIndex(iCnt, iNode1FirstPosIndex+iCnt);
519  WorkVec.PutRowIndex(6+iCnt, iNode1FirstVelIndex+iCnt);
520  WorkVec.PutRowIndex(12+iCnt, iNode2FirstPosIndex+iCnt);
521  WorkVec.PutRowIndex(18+iCnt, iNode2FirstVelIndex+iCnt);
522  WorkVec.PutRowIndex(24+iCnt, iFirstReactionIndex+iCnt);
523  }
524 
525  /* Recupera i dati */
526  const Vec3& x1(pNode1->GetXCurr());
527  const Vec3& x2(pNode2->GetXCurr());
528  const Vec3& v1(pNode1->GetVCurr());
529  const Vec3& v2(pNode2->GetVCurr());
530  const Mat3x3& R1(pNode1->GetRCurr());
531  const Mat3x3& R2(pNode2->GetRCurr());
532  const Vec3& Omega1(pNode1->GetWCurr());
533  const Vec3& Omega2(pNode2->GetWCurr());
534  F = Vec3(XCurr, iFirstReactionIndex+1);
535  Vec3 FPrime(XCurr, iReactionPrimeIndex+1);
536 
537  /* Distanza nel sistema globale */
538  Vec3 d1Tmp(R1*d1);
539  Vec3 d2Tmp(R2*d2);
540 
541  /* Vettori omega1/\d1, -omega2/\d2 */
542  Vec3 O1Wedged1(Omega1.Cross(d1Tmp));
543  Vec3 O2Wedged2(Omega2.Cross(d2Tmp));
544 
545  /* Equazioni di equilibrio, nodo 1 */
546  WorkVec.Sub(1, F);
547  WorkVec.Add(4, F.Cross(d1Tmp)); /* Sfrutto il fatto che F/\d = -d/\F */
548 
549  /* Derivate delle equazioni di equilibrio, nodo 1 */
550  WorkVec.Sub(7, FPrime);
551  WorkVec.Add(10, FPrime.Cross(d1Tmp)-O1Wedged1.Cross(F));
552 
553  /* Equazioni di equilibrio, nodo 2 */
554  WorkVec.Add(13, F);
555  WorkVec.Add(16, d2Tmp.Cross(F));
556 
557  /* Derivate delle equazioni di equilibrio, nodo 2 */
558  WorkVec.Add(19, FPrime);
559  WorkVec.Add(22, d2Tmp.Cross(FPrime)+O2Wedged2.Cross(F));
560 
561  /* Equazione di vincolo */
562  WorkVec.Add(25, x1+d1Tmp-x2-d2Tmp);
563 
564  /* Deivata dell'equazione di vincolo */
565  WorkVec.Add(28, v1+O1Wedged1-v2-O2Wedged2);
566 
567  return WorkVec;
568 }
Definition: matvec3.h:98
virtual void ResizeReset(integer)
Definition: vh.cc:55
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
const StructNode * pNode1
Definition: spherj.h:44
virtual void Sub(integer iRow, const Vec3 &v)
Definition: vh.cc:78
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: spherj.h:117
virtual void PutRowIndex(integer iSubRow, integer iRow)=0
const StructNode * pNode2
Definition: spherj.h:45
#define DEBUGCOUT(msg)
Definition: myassert.h:232
virtual integer iGetFirstPositionIndex(void) const
Definition: strnode.h:452
virtual const Vec3 & GetWCurr(void) const
Definition: strnode.h:1030
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
virtual void Add(integer iRow, const Vec3 &v)
Definition: vh.cc:63
virtual const Vec3 & GetVCurr(void) const
Definition: strnode.h:322
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

virtual void SphericalHingeJoint::InitialWorkSpaceDim ( integer piNumRows,
integer piNumCols 
) const
inlinevirtual

Implements SubjectToInitialAssembly.

Definition at line 117 of file spherj.h.

Referenced by InitialAssJac(), and InitialAssRes().

118  {
119  *piNumRows = 30;
120  *piNumCols = 30;
121  };
void SphericalHingeJoint::Output ( OutputHandler OH) const
virtual

Reimplemented from ToBeOutput.

Definition at line 238 of file spherj.cc.

References ToBeOutput::bToBeOutput(), dRaDegr, EULER_123, EULER_313, EULER_321, F, OutputHandler::GetCurrentStep(), WithLabel::GetLabel(), StructNode::GetRCurr(), OutputHandler::JOINTS, OutputHandler::Joints(), MatR2EulerAngles123(), MatR2EulerAngles313(), MatR2EulerAngles321(), od, ORIENTATION_MATRIX, ORIENTATION_VECTOR, Joint::Output(), Vec3::pGetVec(), pNode1, pNode2, R1h, R2h, OutputHandler::UseNetCDF(), OutputHandler::UseText(), RotManip::VecRot(), and Zero3.

239 {
240  if (bToBeOutput()) {
241  Mat3x3 R1Tmp(pNode1->GetRCurr()*R1h);
242  Mat3x3 RTmp(R1Tmp.MulTM(pNode2->GetRCurr()*R2h));
243  Vec3 E;
244  switch (od) {
245  case EULER_123:
246  E = MatR2EulerAngles123(RTmp)*dRaDegr;
247  break;
248 
249  case EULER_313:
250  E = MatR2EulerAngles313(RTmp)*dRaDegr;
251  break;
252 
253  case EULER_321:
254  E = MatR2EulerAngles321(RTmp)*dRaDegr;
255  break;
256 
257  case ORIENTATION_VECTOR:
258  E = RotManip::VecRot(RTmp);
259  break;
260 
261  case ORIENTATION_MATRIX:
262  break;
263 
264  default:
265  /* impossible */
266  break;
267  }
268 
269 #ifdef USE_NETCDF
271  Var_F_local->put_rec((R1Tmp.MulTV(F)).pGetVec(), OH.GetCurrentStep());
272  Var_M_local->put_rec(Zero3.pGetVec(), OH.GetCurrentStep());
273  Var_F_global->put_rec(F.pGetVec(), OH.GetCurrentStep());
274  Var_M_global->put_rec(Zero3.pGetVec(), OH.GetCurrentStep());
275  switch (od) {
276  case EULER_123:
277  case EULER_313:
278  case EULER_321:
279  case ORIENTATION_VECTOR:
280  Var_Phi->put_rec(E.pGetVec(), OH.GetCurrentStep());
281  break;
282 
283  case ORIENTATION_MATRIX:
284  Var_Phi->put_rec(RTmp.pGetMat(), OH.GetCurrentStep());
285  break;
286 
287  default:
288  /* impossible */
289  break;
290  }
291  }
292 #endif // USE_NETCDF
293  if (OH.UseText(OutputHandler::JOINTS)) {
294  Joint::Output(OH.Joints(), "SphericalHinge", GetLabel(),
295  R1Tmp.MulTV(F), Zero3, F, Zero3)
296  << " ";
297 
298  switch (od) {
299  case EULER_123:
300  case EULER_313:
301  case EULER_321:
302  case ORIENTATION_VECTOR:
303  OH.Joints() << E;
304  break;
305 
306  case ORIENTATION_MATRIX:
307  OH.Joints() << RTmp;
308  break;
309 
310  default:
311  /* impossible */
312  break;
313  }
314 
315  OH.Joints() << std::endl;
316  }
317  }
318 }
const Vec3 Zero3(0., 0., 0.)
virtual bool bToBeOutput(void) const
Definition: output.cc:890
Definition: matvec3.h:98
bool UseNetCDF(int out) const
Definition: output.cc:491
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
const StructNode * pNode1
Definition: spherj.h:44
Vec3 VecRot(const Mat3x3 &Phi)
Definition: Rot.cc:136
OrientationDescription od
Definition: spherj.h:56
const StructNode * pNode2
Definition: spherj.h:45
Vec3 MatR2EulerAngles313(const Mat3x3 &R)
Definition: matvec3.cc:927
long GetCurrentStep(void) const
Definition: output.h:116
Vec3 MatR2EulerAngles123(const Mat3x3 &R)
Definition: matvec3.cc:893
const doublereal dRaDegr
Definition: matvec3.cc:884
std::ostream & Joints(void) const
Definition: output.h:443
const doublereal * pGetVec(void) const
Definition: matvec3.h:192
Vec3 MatR2EulerAngles321(const Mat3x3 &R)
Definition: matvec3.cc:941
std::ostream & Output(std::ostream &out, const char *sJointName, unsigned int uLabel, const Vec3 &FLocal, const Vec3 &MLocal, const Vec3 &FGlobal, const Vec3 &MGlobal) const
Definition: joint.cc:138
unsigned int GetLabel(void) const
Definition: withlab.cc:62
bool UseText(int out) const
Definition: output.cc:446

Here is the call graph for this function:

void SphericalHingeJoint::OutputPrepare ( OutputHandler OH)
virtual

Reimplemented from ToBeOutput.

Definition at line 222 of file spherj.cc.

References ToBeOutput::bToBeOutput(), OutputHandler::JOINTS, od, Joint::OutputPrepare_int(), and OutputHandler::UseNetCDF().

223 {
224  if (bToBeOutput()) {
225 #ifdef USE_NETCDF
227  std::string name;
228  OutputPrepare_int("spherical hinge", OH, name);
229 
230  Var_Phi = OH.CreateRotationVar(name, "", od, "global");
231 
232  }
233 #endif // USE_NETCDF
234  }
235 }
virtual bool bToBeOutput(void) const
Definition: output.cc:890
bool UseNetCDF(int out) const
Definition: output.cc:491
OrientationDescription od
Definition: spherj.h:56
virtual void OutputPrepare_int(const std::string &type, OutputHandler &OH, std::string &name)
Definition: joint.cc:107

Here is the call graph for this function:

Hint * SphericalHingeJoint::ParseHint ( DataManager pDM,
const char *  s 
) const
virtual

Reimplemented from SimulationEntity.

Definition at line 353 of file spherj.cc.

References STRLENOF.

354 {
355  if (strncasecmp(s, "offset{" /*}*/, STRLENOF("offset{" /*}*/)) == 0) {
356  s += STRLENOF("offset{" /*}*/);
357 
358  if (strcmp(&s[1], /*{*/ "}") != 0) {
359  return 0;
360  }
361 
362  switch (s[0]) {
363  case '1':
364  return new Joint::OffsetHint<1>;
365 
366  case '2':
367  return new Joint::OffsetHint<2>;
368  }
369  }
370 
371  return 0;
372 }
#define STRLENOF(s)
Definition: mbdyn.h:166
std::ostream & SphericalHingeJoint::Restart ( std::ostream &  out) const
virtual

Implements Elem.

Definition at line 73 of file spherj.cc.

References d1, d2, WithLabel::GetLabel(), Mat3x3::GetVec(), pNode1, pNode2, R1h, R2h, Joint::Restart(), Write(), and Vec3::Write().

74 {
75  Joint::Restart(out) << ", spherical hinge, "
76  << pNode1->GetLabel() << ", reference, node, ",
77  d1.Write(out, ", ") << ", hinge, reference, node, 1, ", (R1h.GetVec(1)).Write(out, ", ")
78  << ", 2, ", (R1h.GetVec(2)).Write(out, ", ") << ", "
79  << pNode2->GetLabel() << ", reference, node, ",
80  d2.Write(out, ", ") << ", hinge, reference, node, 1, ", (R2h.GetVec(1)).Write(out, ", ")
81  << ", 2, ", (R2h.GetVec(2)).Write(out, ", ") << ';' << std::endl;
82 
83  return out;
84 }
std::ostream & Write(std::ostream &out, const char *sFill=" ") const
Definition: matvec3.cc:738
const StructNode * pNode1
Definition: spherj.h:44
std::ostream & Write(std::ostream &out, const FullMatrixHandler &m, const char *s, const char *s2)
Definition: fullmh.cc:376
Vec3 GetVec(unsigned short int i) const
Definition: matvec3.h:893
const StructNode * pNode2
Definition: spherj.h:45
virtual std::ostream & Restart(std::ostream &out) const
Definition: joint.h:195
unsigned int GetLabel(void) const
Definition: withlab.cc:62

Here is the call graph for this function:

void SphericalHingeJoint::SetValue ( DataManager pDM,
VectorHandler X,
VectorHandler XP,
SimulationEntity::Hints ph = 0 
)
virtual

Reimplemented from Joint.

Definition at line 321 of file spherj.cc.

References d1, d2, StructNode::GetRCurr(), StructDispNode::GetXCurr(), pNode1, and pNode2.

324 {
325  if (ph) {
326  for (unsigned i = 0; i < ph->size(); i++) {
327  Joint::JointHint *pjh = dynamic_cast<Joint::JointHint *>((*ph)[i]);
328 
329  if (pjh == 0) {
330  continue;
331  }
332 
333  if (dynamic_cast<Joint::OffsetHint<1> *>(pjh)) {
334  const Mat3x3& R1(pNode1->GetRCurr());
335  Vec3 dTmp2(pNode2->GetRCurr()*d2);
336 
337  d1 = R1.MulTV(pNode2->GetXCurr() + dTmp2 - pNode1->GetXCurr());
338 
339  } else if (dynamic_cast<Joint::OffsetHint<2> *>(pjh)) {
340  const Mat3x3& R2(pNode2->GetRCurr());
341  Vec3 dTmp1(pNode1->GetRCurr()*d1);
342 
343  d2 = R2.MulTV(pNode1->GetXCurr() + dTmp1 - pNode2->GetXCurr());
344 
345  } else if (dynamic_cast<Joint::ReactionsHint *>(pjh)) {
346  /* TODO */
347  }
348  }
349  }
350 }
Definition: matvec3.h:98
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
const StructNode * pNode1
Definition: spherj.h:44
const StructNode * pNode2
Definition: spherj.h:45
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310

Here is the call graph for this function:

virtual void SphericalHingeJoint::WorkSpaceDim ( integer piNumRows,
integer piNumCols 
) const
inlinevirtual

Implements Elem.

Definition at line 86 of file spherj.h.

Referenced by AssRes().

86  {
87  *piNumRows = 15;
88  *piNumCols = 15;
89  };

Member Data Documentation

Vec3 SphericalHingeJoint::d1
private

Definition at line 49 of file spherj.h.

Referenced by AssJac(), AssRes(), InitialAssJac(), InitialAssRes(), Restart(), and SetValue().

Vec3 SphericalHingeJoint::d2
private

Definition at line 51 of file spherj.h.

Referenced by AssJac(), AssRes(), InitialAssJac(), InitialAssRes(), Restart(), and SetValue().

Vec3 SphericalHingeJoint::F
private

Definition at line 53 of file spherj.h.

Referenced by AssJac(), AssRes(), InitialAssJac(), InitialAssRes(), and Output().

OrientationDescription SphericalHingeJoint::od
protected

Definition at line 56 of file spherj.h.

Referenced by Output(), and OutputPrepare().

const StructNode* SphericalHingeJoint::pNode1
private
const StructNode* SphericalHingeJoint::pNode2
private
Mat3x3 SphericalHingeJoint::R1h
private

Definition at line 50 of file spherj.h.

Referenced by Output(), and Restart().

Mat3x3 SphericalHingeJoint::R2h
private

Definition at line 52 of file spherj.h.

Referenced by Output(), and Restart().


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