50 pNode(pN), Dir(TmpDir), dF(0.)
66 <<
", reference, global, ",
83 if (strcmp(s,
"v") == 0) {
104 DEBUGCOUT(
"Entering LinearVelocityJoint::AssJac()" << std::endl);
113 for (
int iCnt = 1; iCnt <= 3; iCnt++) {
115 WM.
PutItem(iCnt, iFirstMomentumIndex+iCnt,
116 iFirstReactionIndex+1, d);
117 WM.
PutItem(3+iCnt, iFirstReactionIndex+1,
118 iFirstPositionIndex+iCnt, d);
131 DEBUGCOUT(
"Entering LinearVelocityJoint::AssRes()" << std::endl);
145 for (
int iCnt = 1; iCnt <= 3; iCnt++) {
146 WorkVec.
PutRowIndex(iCnt, iFirstMomentumIndex+iCnt);
152 dF = XCurr(iFirstReactionIndex+1);
175 <<
" " <<
Dir <<
" " <<
dGet() << std::endl;
185 DEBUGCOUT(
"Entering LinearVelocityJoint::InitialAssJac()" << std::endl);
193 for (
int iCnt = 1; iCnt <= 3; iCnt++) {
195 WM.
PutItem(iCnt, iFirstVelocityIndex+iCnt,
196 iFirstReactionIndex+1, d);
197 WM.
PutItem(3+iCnt, iFirstReactionIndex+1,
198 iFirstVelocityIndex+iCnt, d);
210 DEBUGCOUT(
"Entering LinearVelocityJoint::InitialAssRes()" << std::endl);
223 for (
int iCnt = 1; iCnt <= 3; iCnt++) {
224 WorkVec.
PutRowIndex(iCnt, iFirstVelocityIndex+iCnt);
230 dF = XCurr(iFirstReactionIndex+1);
260 Joint(uL, pDO, fOut),
262 pNode(pN), Dir(TmpDir), dM(0.)
296 if (strcmp(s,
"w") == 0) {
317 DEBUGCOUT(
"Entering AngularVelocityJoint::AssJac()" << std::endl);
328 for (
int iCnt = 1; iCnt <= 3; iCnt++) {
330 WM.
PutItem(iCnt, iFirstMomentumIndex+iCnt,
331 iFirstReactionIndex+1, d);
332 WM.
PutItem(3+iCnt, iFirstReactionIndex+1,
333 iFirstPositionIndex+iCnt, d);
337 iFirstPositionIndex, TmpDir*(-
dM*dCoef));
349 DEBUGCOUT(
"Entering AngularVelocityJoint::AssRes()" << std::endl);
362 for (
int iCnt = 1; iCnt <= 3; iCnt++) {
363 WorkVec.
PutRowIndex(iCnt, iFirstMomentumIndex+iCnt);
369 dM = XCurr(iFirstReactionIndex+1);
376 WorkVec.
Add(1, TmpDir*(-
dM));
381 WorkVec.
PutCoef(4, dw0-TmpDir.Dot(Omega));
394 <<
" " << Tmp <<
" " <<
dGet() << std::endl;
404 DEBUGCOUT(
"Entering AngularVelocityJoint::InitialAssJac()" << std::endl);
410 integer iFirstVelocityIndex = iFirstPositionIndex+6;
414 for(
int iCnt = 1; iCnt <= 3; iCnt++)
417 WM.
PutItem(iCnt, iFirstVelocityIndex+iCnt,
418 iFirstReactionIndex+1, d);
419 WM.
PutItem(3+iCnt, iFirstReactionIndex+1,
420 iFirstVelocityIndex+iCnt, d);
421 WM.
PutItem(6+iCnt, iFirstReactionIndex+1,
422 iFirstPositionIndex+iCnt, Tmp.
dGet(iCnt));
425 WM.
PutCross(10, iFirstVelocityIndex, iFirstPositionIndex,
Dir*(-
dM));
436 DEBUGCOUT(
"Entering AngularVelocityJoint::InitialAssRes()" << std::endl);
449 for(
int iCnt = 1; iCnt <= 3; iCnt++)
451 WorkVec.
PutRowIndex(iCnt, iFirstVelocityIndex+iCnt);
457 dM = XCurr(iFirstReactionIndex+1);
virtual unsigned int iGetNumPrivData(void) const
AngularVelocityJoint(unsigned int uL, const DofOwner *pDO, const StructNode *pN, const Vec3 &TmpDir, const DriveCaller *pDC, flag fOut)
virtual doublereal dGetPrivData(unsigned int i=0) const
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
const Vec3 Zero3(0., 0., 0.)
Vec3 Cross(const Vec3 &v) const
std::ostream & Write(std::ostream &out, const char *sFill=" ") const
virtual const Mat3x3 & GetRRef(void) const
virtual bool bToBeOutput(void) const
virtual void ResizeReset(integer)
virtual const Mat3x3 & GetRCurr(void) const
doublereal Dot(const Vec3 &v) const
doublereal dGet(void) const
~LinearVelocityJoint(void)
void ResizeReset(integer iNewRow, integer iNewCol)
VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
virtual const Vec3 & GetWRef(void) const
void PutCross(integer iSubIt, integer iFirstRow, integer iFirstCol, const Vec3 &v)
virtual std::ostream & Restart(std::ostream &out) const =0
virtual unsigned int iGetPrivDataIdx(const char *s) const
virtual void PutRowIndex(integer iSubRow, integer iRow)=0
void PutItem(integer iSubIt, integer iRow, integer iCol, const doublereal &dCoef)
void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
virtual unsigned int iGetNumPrivData(void) const
SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
virtual std::ostream & Restart(std::ostream &out) const
LinearVelocityJoint(unsigned int uL, const DofOwner *pDO, const StructNode *pN, const Vec3 &TmpDir, const DriveCaller *pDC, flag fOut)
const doublereal & dGet(unsigned short int iRow) const
virtual doublereal dGetPrivData(unsigned int i=0) const
~AngularVelocityJoint(void)
virtual integer iGetFirstMomentumIndex(void) const =0
virtual integer iGetFirstPositionIndex(void) const
virtual const Vec3 & GetWCurr(void) const
virtual std::ostream & Restart(std::ostream &out) const
std::ostream & Joints(void) const
SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
virtual std::ostream & Restart(std::ostream &out) const
#define ASSERT(expression)
virtual void PutCoef(integer iRow, const doublereal &dCoef)=0
DriveCaller * pGetDriveCaller(void) const
virtual void Add(integer iRow, const Vec3 &v)
VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
virtual const Vec3 & GetVCurr(void) const
SparseSubMatrixHandler & SetSparse(void)
virtual integer iGetFirstIndex(void) const
void Output(OutputHandler &OH) 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
unsigned int GetLabel(void) const
VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
virtual unsigned int iGetPrivDataIdx(const char *s) const
void Output(OutputHandler &OH) const