173         return pGetConstLaw()->Restart(out) << 
';' << std::endl;
 
  185                         Var_Phi = OH.CreateRotationVar(name, 
"", 
od, 
"global");
 
  187                         Var_Omega = OH.CreateVar<
Vec3>(name + 
"Omega", 
"radian/s",
 
  188                                 "local relative angular velocity (x, y, z)");
 
  280                                 OH.
Joints() << 
" " << OmegaTmp;
 
  349                 for (
unsigned i = 0; i < ph->size(); i++) {
 
  359                                 } 
else if (dynamic_cast<Joint::ReactionsHint *>(pjh)) {
 
  388         if (strncasecmp(s, 
"hinge{" , 
STRLENOF(
"hinge{" )) == 0) {
 
  391                 if (strcmp(&s[1],  
"}") != 0) {
 
  434                 const size_t l = 
STRLENOF(
"constitutiveLaw.");
 
  435                 if (strncmp(s, 
"constitutiveLaw.", l) == 0) {
 
  503                 return GetF()(i - 6);
 
  577         DEBUGCOUT(
"Entering ElasticHingeJoint::AssJac()" << std::endl);
 
  594         for (
int iCnt = 1; iCnt <= 3; iCnt++) {
 
  597                 WM.
PutRowIndex(3 + iCnt, iNode2FirstMomIndex + iCnt);
 
  598                 WM.
PutColIndex(3 + iCnt, iNode2FirstPosIndex + iCnt);
 
  613         DEBUGCOUT(
"Entering ElasticHingeJoint::AssJac()" << std::endl);
 
  631         for (
int iCnt = 1; iCnt <= 3; iCnt++) {
 
  634                 WMA.
PutRowIndex(3 + iCnt, iNode2FirstMomIndex + iCnt);
 
  635                 WMA.
PutColIndex(3 + iCnt, iNode2FirstPosIndex + iCnt);
 
  688         DEBUGCOUT(
"Entering ElasticHingeJoint::AssRes()" << std::endl);
 
  701         for (
int iCnt = 1; iCnt <= 3; iCnt++) {
 
  702                 WorkVec.
PutRowIndex(iCnt, iNode1FirstMomIndex + iCnt);
 
  703                 WorkVec.
PutRowIndex(3 + iCnt, iNode2FirstMomIndex + iCnt);
 
  721         return AssJac(WorkMat, 1., XCurr, XCurr);
 
  732         DEBUGCOUT(
"Entering ElasticHingeJoint::AssRes()" << std::endl);
 
  751         for (
int iCnt = 1; iCnt <= 3; iCnt++) {
 
  752                 WorkVec.
PutRowIndex(iCnt, iNode1FirstMomIndex + iCnt);
 
  753                 WorkVec.
PutRowIndex(3 + iCnt, iNode2FirstMomIndex + iCnt);
 
  802         DEBUGCOUT(
"Entering ElasticHingeJoint::InitialAssJac()" << std::endl);
 
  817         for (
int iCnt = 1; iCnt <= 3; iCnt++) {
 
  820                 WM.
PutRowIndex(3 + iCnt, iNode2FirstPosIndex + iCnt);
 
  821                 WM.
PutColIndex(3 + iCnt, iNode2FirstPosIndex + iCnt);
 
  845         for (
int iCnt = 1; iCnt <= 3; iCnt++) {
 
  846                 WorkVec.
PutRowIndex(iCnt, iNode1FirstPosIndex + iCnt);
 
  847                 WorkVec.
PutRowIndex(3 + iCnt, iNode2FirstPosIndex + iCnt);
 
  872         Mat3x3 hat_R(R1h*tilde_R);
 
 1021         for (
int iCnt = 1; iCnt <= 3; iCnt++) {
 
 1024                 WM.
PutRowIndex(3 + iCnt, iNode2FirstMomIndex + iCnt);
 
 1025                 WM.
PutColIndex(3 + iCnt, iNode2FirstPosIndex + iCnt);
 
 1057         for (
int iCnt = 1; iCnt <= 3; iCnt++) {
 
 1058                 WMA.
PutRowIndex(iCnt, iNode1FirstMomIndex + iCnt);
 
 1059                 WMA.
PutColIndex(iCnt, iNode1FirstPosIndex + iCnt);
 
 1060                 WMA.
PutRowIndex(3 + iCnt, iNode2FirstMomIndex + iCnt);
 
 1061                 WMA.
PutColIndex(3 + iCnt, iNode2FirstPosIndex + iCnt);
 
 1063                 WMB.
PutRowIndex(iCnt, iNode1FirstMomIndex + iCnt);
 
 1064                 WMB.
PutColIndex(iCnt, iNode1FirstPosIndex + iCnt);
 
 1065                 WMB.
PutRowIndex(3 + iCnt, iNode2FirstMomIndex + iCnt);
 
 1066                 WMB.
PutColIndex(3 + iCnt, iNode2FirstPosIndex + iCnt);
 
 1100         for (
int iCnt = 1; iCnt <= 3; iCnt++) {
 
 1101                 WorkVec.
PutRowIndex(iCnt, iNode1FirstMomIndex + iCnt);
 
 1102                 WorkVec.
PutRowIndex(3 + iCnt, iNode2FirstMomIndex + iCnt);
 
 1133         for (
int iCnt = 1; iCnt <= 3; iCnt++) {
 
 1134                 WorkVec.
PutRowIndex(iCnt, iNode1FirstMomIndex + iCnt);
 
 1135                 WorkVec.
PutRowIndex(3 + iCnt, iNode2FirstMomIndex + iCnt);
 
 1179         integer iNode1FirstVelIndex = iNode1FirstPosIndex + 6;
 
 1181         integer iNode2FirstVelIndex = iNode2FirstPosIndex + 6;
 
 1184         for (
int iCnt = 1; iCnt <= 3; iCnt++) {
 
 1187                 WM.
PutColIndex(3 + iCnt, iNode1FirstVelIndex + iCnt);
 
 1189                 WM.
PutRowIndex(3 + iCnt, iNode2FirstPosIndex + iCnt);
 
 1190                 WM.
PutColIndex(6 + iCnt, iNode2FirstPosIndex + iCnt);
 
 1191                 WM.
PutColIndex(9 + iCnt, iNode2FirstVelIndex + iCnt);
 
 1208         WM.
Add(1, 4, MDEPrime);
 
 1209         WM.
Add(4, 10, MDEPrime);
 
 1211         WM.
Sub(1, 10, MDEPrime);
 
 1212         WM.
Sub(4, 4, MDEPrime);
 
 1233         for (
int iCnt = 1; iCnt <= 3; iCnt++) {
 
 1234                 WorkVec.
PutRowIndex(iCnt, iNode1FirstPosIndex + iCnt);
 
 1235                 WorkVec.
PutRowIndex(3 + iCnt, iNode2FirstPosIndex + iCnt);
 
 1293         Mat3x3 hat_R(R1h*tilde_R);
 
 1447         for (
int iCnt = 1; iCnt <= 3; iCnt++) {
 
 1450                 WM.
PutRowIndex(3 + iCnt, iNode2FirstMomIndex + iCnt);
 
 1451                 WM.
PutColIndex(3 + iCnt, iNode2FirstPosIndex + iCnt);
 
 1483         for (
int iCnt = 1; iCnt <= 3; iCnt++) {
 
 1484                 WMA.
PutRowIndex(iCnt, iNode1FirstMomIndex + iCnt);
 
 1485                 WMA.
PutColIndex(iCnt, iNode1FirstPosIndex + iCnt);
 
 1486                 WMA.
PutRowIndex(3 + iCnt, iNode2FirstMomIndex + iCnt);
 
 1487                 WMA.
PutColIndex(3 + iCnt, iNode2FirstPosIndex + iCnt);
 
 1489                 WMB.
PutRowIndex(iCnt, iNode1FirstMomIndex + iCnt);
 
 1490                 WMB.
PutColIndex(iCnt, iNode1FirstPosIndex + iCnt);
 
 1491                 WMB.
PutRowIndex(3 + iCnt, iNode2FirstMomIndex + iCnt);
 
 1492                 WMB.
PutColIndex(3 + iCnt, iNode2FirstPosIndex + iCnt);
 
 1527         for (
int iCnt = 1; iCnt <= 3; iCnt++) {
 
 1528                 WorkVec.
PutRowIndex(iCnt, iNode1FirstMomIndex + iCnt);
 
 1529                 WorkVec.
PutRowIndex(3 + iCnt, iNode2FirstMomIndex + iCnt);
 
 1560         for (
int iCnt = 1; iCnt <= 3; iCnt++) {
 
 1561                 WorkVec.
PutRowIndex(iCnt, iNode1FirstMomIndex + iCnt);
 
 1562                 WorkVec.
PutRowIndex(3 + iCnt, iNode2FirstMomIndex + iCnt);
 
 1613         integer iNode1FirstVelIndex = iNode1FirstPosIndex + 6;
 
 1615         integer iNode2FirstVelIndex = iNode2FirstPosIndex + 6;
 
 1618         for (
int iCnt = 1; iCnt <= 3; iCnt++) {
 
 1621                 WM.
PutColIndex(3 + iCnt, iNode1FirstVelIndex + iCnt);
 
 1623                 WM.
PutRowIndex(3 + iCnt, iNode2FirstPosIndex + iCnt);
 
 1624                 WM.
PutColIndex(6 + iCnt, iNode2FirstPosIndex + iCnt);
 
 1625                 WM.
PutColIndex(9 + iCnt, iNode2FirstVelIndex + iCnt);
 
 1667         for (
int iCnt = 1; iCnt <= 3; iCnt++) {
 
 1668                 WorkVec.
PutRowIndex(iCnt, iNode1FirstPosIndex + iCnt);
 
 1669                 WorkVec.
PutRowIndex(3 + iCnt, iNode2FirstPosIndex + iCnt);
 
 1729         Mat3x3 hat_R(R1h*tilde_R);
 
 1829         virtual std::ostream& 
Restart(std::ostream& out) 
const;
 
 1837 : dXi(dxi), pCL(pcl)
 
 1868         out << 
"invariant, " << 
dXi << 
", ";
 
 1887                 EP = Rx.
MulTV(EpsPrime);
 
~ViscoElasticHingeJointInv(void)
virtual void AssMatM(FullSubMatrixHandler &WMA, doublereal dCoef)
virtual const T & GetF(void) const 
virtual void AssVec(SubVectorHandler &WorkVec)
virtual ~ElasticHingeJoint(void)
void PutColIndex(integer iSubCol, integer iCol)
const Vec3 Zero3(0., 0., 0.)
Vec3 Cross(const Vec3 &v) const 
void Update(const VectorHandler &XCurr, InverseDynamics::Order iOrder=InverseDynamics::INVERSE_DYNAMICS)
virtual const Mat3x3 & GetRRef(void) const 
virtual bool bToBeOutput(void) const 
virtual void AssMats(FullSubMatrixHandler &WMA, FullSubMatrixHandler &WMB, doublereal dCoef)
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
virtual SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
ConstitutiveLaw< T, Tder > * pGetConstLaw(void) const 
virtual void AssVec(SubVectorHandler &WorkVec)
virtual void AssMatM(FullSubMatrixHandler &WMA, doublereal dCoef)
virtual void ResizeReset(integer)
const MatCross_Manip MatCross
bool UseNetCDF(int out) const 
FullSubMatrixHandler & SetFull(void)
virtual const Mat3x3 & GetRCurr(void) const 
virtual Node::Type GetNodeType(void) const 
virtual void AfterPredict(void)
virtual std::ostream & Restart(std::ostream &out) const 
bool bIsErgonomy(void) const 
void Add(integer iRow, integer iCol, const Vec3 &v)
virtual unsigned int iGetPrivDataIdx(const char *s) const 
Mat3x3 DRot(const Vec3 &phi)
virtual Hint * ParseHint(DataManager *pDM, const char *s) const 
std::ostream & Write(std::ostream &out, const FullMatrixHandler &m, const char *s, const char *s2)
virtual void AssMats(FullSubMatrixHandler &WMA, FullSubMatrixHandler &WMB, doublereal dCoef)
virtual SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
ViscoElasticHingeJoint(unsigned int uL, const DofOwner *pDO, const ConstitutiveLaw3D *pCL, const StructNode *pN1, const StructNode *pN2, const Mat3x3 &tilde_R1h, const Mat3x3 &tilde_R2h, const OrientationDescription &od, flag fOut)
virtual const Tder & GetFDE(void) const 
virtual void Sub(integer iRow, const Vec3 &v)
virtual void AssMatMDEPrime(FullSubMatrixHandler &WMA, FullSubMatrixHandler &WMB, doublereal dCoef)
const Tder & GetFDE(void) const 
ElasticHingeJointInv(unsigned int uL, const DofOwner *pDO, const ConstitutiveLaw3D *pCL, const StructNode *pN1, const StructNode *pN2, const Mat3x3 &tilde_R1h, const Mat3x3 &tilde_R2h, const OrientationDescription &od, flag fOut)
const Mat3x3 Eye3(1., 0., 0., 0., 1., 0., 0., 0., 1.)
virtual VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const 
virtual unsigned int iGetNumPrivData(void) const 
virtual ~ElasticHingeJointInv(void)
virtual const Vec3 & GetWRef(void) const 
std::vector< Hint * > Hints
virtual doublereal dGetPrivData(unsigned int i) const 
Vec3 GetVec(unsigned short int i) const 
virtual doublereal dGetPrivData(unsigned int i) const 
Vec3 VecRot(const Mat3x3 &Phi)
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Vec3 MulTV(const Vec3 &v) const 
InvAngularConstitutiveLaw(const doublereal &dxi, ConstitutiveLaw< Vec3, Mat3x3 > *pcl)
virtual void PutRowIndex(integer iSubRow, integer iRow)=0
virtual std::ostream & Restart(std::ostream &out) const 
virtual void Output(OutputHandler &OH) const 
virtual void AssMatM(FullSubMatrixHandler &WMA, doublereal dCoef)
ViscousHingeJointInv(unsigned int uL, const DofOwner *pDO, const ConstitutiveLaw3D *pCL, const StructNode *pN1, const StructNode *pN2, const Mat3x3 &tilde_R1h, const Mat3x3 &tilde_R2h, const OrientationDescription &od, flag fOut)
ElasticHingeJoint(unsigned int uL, const DofOwner *pDO, const ConstitutiveLaw3D *pCL, const StructNode *pN1, const StructNode *pN2, const Mat3x3 &tilde_R1h, const Mat3x3 &tilde_R2h, const OrientationDescription &od, flag fOut)
virtual void AssVec(SubVectorHandler &WorkVec)
Vec3 MatR2EulerAngles313(const Mat3x3 &R)
ViscousHingeJoint(unsigned int uL, const DofOwner *pDO, const ConstitutiveLaw3D *pCL, const StructNode *pN1, const StructNode *pN2, const Mat3x3 &tilde_R1h, const Mat3x3 &tilde_R2h, const OrientationDescription &od, flag fOut)
ConstLawType::Type GetConstLawType(void) const 
virtual ConstLawType::Type GetConstLawType(void) const =0
Matrix< T, 2, 2 > Inv(const Matrix< T, 2, 2 > &A)
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
virtual ConstitutiveLaw< T, Tder > * pCopy(void) const =0
virtual void AfterPredict(void)
virtual void AssVec(SubVectorHandler &WorkVec)
long GetCurrentStep(void) const 
virtual VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
Vec3 MatR2EulerAngles123(const Mat3x3 &R)
Mat3x3 Rot(const Vec3 &phi)
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 
~ViscoElasticHingeJoint(void)
void AfterConvergence(const T &Eps, const T &EpsPrime=mb_zero< T >())
#define ASSERT(expression)
virtual void Output(OutputHandler &OH) const 
virtual void AssVec(SubVectorHandler &WorkVec)
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const 
virtual void AssMat(FullSubMatrixHandler &WM, doublereal dCoef)
virtual void OutputPrepare_int(const std::string &type, OutputHandler &OH, std::string &name)
virtual void AfterPredict(void)
#define SAFENEWWITHCONSTRUCTOR(pnt, item, constructor)
virtual void Add(integer iRow, const Vec3 &v)
virtual void ResizeReset(integer, integer)
virtual SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
virtual ~ViscousHingeJoint(void)
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
virtual ~ViscousHingeJointInv(void)
virtual doublereal dGetPrivData(unsigned int i) const 
Mat3x3 Transpose(void) const 
const doublereal * pGetMat(void) const 
virtual void AssVec(SubVectorHandler &WorkVec)
virtual void AssMatMDEPrime(FullSubMatrixHandler &WMA, FullSubMatrixHandler &WMB, doublereal dCoef)
virtual ~InvAngularConstitutiveLaw(void)
ViscoElasticHingeJointInv(unsigned int uL, const DofOwner *pDO, const ConstitutiveLaw3D *pCL, const StructNode *pN1, const StructNode *pN2, const Mat3x3 &tilde_R1h, const Mat3x3 &tilde_R2h, const OrientationDescription &od, flag fOut)
void PutRowIndex(integer iSubRow, integer iRow)
const T & GetF(void) const 
virtual void Update(const Vec3 &Eps, const Vec3 &=Zero3)
const doublereal * pGetVec(void) const 
Vec3 MatR2EulerAngles321(const Mat3x3 &R)
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const =0
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const 
virtual ConstitutiveLaw< Vec3, Mat3x3 > * Read(const DataManager *pDM, MBDynParser &HP, ConstLawType::Type &CLType)
virtual void AssMats(VariableSubMatrixHandler &WorkMatA, VariableSubMatrixHandler &WorkMatB, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
void Sub(integer iRow, integer iCol, const Vec3 &v)
virtual const Tder & GetFDEPrime(void) const 
virtual void AfterPredict(void)
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
virtual void AfterPredict(void)
Mat3x3 MulMT(const Mat3x3 &m) const 
virtual void Update(const T &Eps, const T &EpsPrime=mb_zero< T >())=0
virtual VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
virtual ConstitutiveLaw< Vec3, Mat3x3 > * pCopy(void) const 
virtual void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *h=0)
const Tder & GetFDEPrime(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 
ConstitutiveLaw3D * GetConstLaw3D(ConstLawType::Type &clt)
virtual doublereal dGetPrivData(unsigned int i) const 
void Update(const T &Eps, const T &EpsPrime=mb_zero< T >())
virtual void Output(OutputHandler &OH) const 
unsigned int GetLabel(void) const 
virtual void AfterPredict(void)
ConstitutiveLaw< Vec3, Mat3x3 > * pCL
Mat3x3 DRot_I(const Vec3 &phi)
bool UseText(int out) const 
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
virtual doublereal GetReal(const doublereal &dDefval=0.0)