3983 DEBUGCOUT(
"Entering ReadStructNode(" << uLabel <<
")" << std::endl);
3985 const char* sKeyWords[] = {
3986 "static" "displacement",
3987 "dynamic" "displacement",
4023 if (CurrType == UNKNOWN) {
4024 silent_cerr(
"StructNode(" << uLabel <<
"): "
4033 std::cout <<
"Static structural displacement node" << std::endl;
4036 std::cout <<
"Dynamic structural displacement node" << std::endl;
4039 std::cout <<
"Static structural node" << std::endl;
4042 std::cout <<
"Dynamic structural node" << std::endl;
4045 std::cout <<
"Dummy structural node" << std::endl;
4048 std::cout <<
"Modal node" << std::endl;
4051 std::cout <<
"Unknown structural node" << std::endl;
4059 if (CurrType == DUMMY) {
4063 switch (DummyType) {
4078 case RELATIVEFRAME: {
4116 pNode, pNodeRef, fh, Rh,
4117 pNodeRef2, fh2, Rh2, od, fOut));
4123 pNode, pNodeRef, fh, Rh, od, fOut));
4128 silent_cerr(
"StructNode(" << uLabel <<
"): "
4129 "unknown dummy node type "
4137 if (CurrType == STATIC_DISP || CurrType == DYNAMIC_DISP) {
4143 pedantic_cerr(
"StructNode(" << uLabel <<
"): "
4144 "missing keyword \"position\" at line "
4148 DEBUGCOUT(
"X0 =" << std::endl << X0 << std::endl);
4154 pedantic_cerr(
"StructNode(" << uLabel <<
"): "
4155 "missing keyword \"orientation\" at line "
4162 DEBUGCOUT(
"R0 =" << std::endl << R0 << std::endl);
4168 pedantic_cerr(
"StructNode(" << uLabel <<
"): "
4169 "missing keyword \"velocity\" at line "
4173 DEBUGCOUT(
"Xprime0 =" << std::endl << XPrime0 << std::endl);
4177 if (!HP.
IsKeyWord(
"angular" "velocity")) {
4178 pedantic_cerr(
"StructNode(" << uLabel <<
"): "
4179 "missing keyword \"angular velocity\" at line "
4183 DEBUGCOUT(
"Omega0 =" << std::endl << Omega0 << std::endl);
4187 if (HP.
IsKeyWord(
"prediction" "node")) {
4196 silent_cerr(
"StructNode(" << uLabel <<
"): "
4197 "prediction node allowed "
4198 "for static and dynamic nodes only, "
4205 #ifndef MBDYN_X_RELATIVE_PREDICTION
4206 silent_cerr(
"warning, relative prediction disabled; "
4207 "absolute prediction will be used" << std::endl);
4221 dPosStiff = HP.
GetReal(dPosStiff);
4222 dVelStiff = HP.
GetReal(dVelStiff);
4224 DEBUGCOUT(
"Initial position stiffness: " << dPosStiff << std::endl);
4225 DEBUGCOUT(
"Initial velocity stiffness: " << dVelStiff << std::endl);
4230 DEBUGCOUT(
"Omega rotates? : " << (bOmRot ?
"yes" :
"no") << std::endl);
4243 bool bGotAccels(
false);
4246 bool bGotInertia(
false);
4247 bool bInertia(
false);
4249 while (HP.
IsArg()) {
4252 silent_cerr(
"StructNode(" << uLabel <<
"): "
4253 "\"accelerations\" already set, "
4270 silent_cout(
"StructNode(" << uLabel <<
"): "
4271 "warning, \"accelerations\" needs \"yes\" or \"no\" "
4276 }
else if (HP.
IsKeyWord(
"output" "inertia")) {
4278 silent_cerr(
"StructNode(" << uLabel <<
"): "
4279 "\"inertia\" already set, "
4287 silent_cerr(
"StructNode(" << uLabel <<
"): "
4288 "\"inertia\" needs \"yes\" or \"no\" "
4326 pedantic_cout(
"DynamicStructNode(" << uLabel <<
") turned into static" << std::endl);
4330 pedantic_cout(
"DynamicStructDispNode(" << uLabel <<
") turned into static" << std::endl);
4331 CurrType = STATIC_DISP;
4336 silent_cerr(
"ReadStructNode(" << uLabel <<
"): semicolon expected "
4350 dPosStiff, dVelStiff,
4361 dPosStiff, dVelStiff,
4375 dPosStiff, dVelStiff,
4386 dPosStiff, dVelStiff,
4399 dPosStiff, dVelStiff,
4411 const char *description =
"structural node: ";
4417 description =
"relative frame structural node: ";
4429 out << description << uLabel
flag fReadOutput(MBDynParser &HP, const T &t) const
Mat3x3 GetRotRel(const ReferenceFrame &rf)
const Vec3 Zero3(0., 0., 0.)
std::ostream & Write(std::ostream &out, const char *sFill=" ") const
#define MBDYN_EXCEPT_ARGS
const doublereal & dGetInitialVelocityStiffness(void) const
virtual const Mat3x3 & GetRCurr(void) const
Mat3x3 GetRotAbs(const ReferenceFrame &rf)
std::ostream & Write(std::ostream &out, const FullMatrixHandler &m, const char *s, const char *s2)
Vec3 GetVelAbs(const ReferenceFrame &rf, const Vec3 &x)
const Mat3x3 Eye3(1., 0., 0., 0., 1., 0., 0., 0., 1.)
OrientationDescription ReadOptionalOrientationDescription(DataManager *pDM, MBDynParser &HP)
bool bIsStaticModel(void) const
Vec3 VecRot(const Mat3x3 &Phi)
virtual bool GetYesNoOrBool(bool bDefval=false)
doublereal dReadScale(MBDynParser &HP, enum DofOwner::Type t) const
void SetScale(const doublereal &d)
const ReferenceFrame AbsRefFrame(0, Vec3(0., 0., 0), Mat3x3(1., 0., 0., 0., 1., 0., 0., 0., 1.), Vec3(0., 0., 0), Vec3(0., 0., 0), EULER_123)
Vec3 MatR2EulerAngles313(const Mat3x3 &R)
void IncElemCount(Elem::Type type)
Vec3 GetPosRel(const ReferenceFrame &rf)
virtual bool IsKeyWord(const char *sKeyWord)
Vec3 GetOmeAbs(const ReferenceFrame &rf)
bool bDoesOmegaRotate(void) const
Vec3 GetPosAbs(const ReferenceFrame &rf)
Vec3 MatR2EulerAngles123(const Mat3x3 &R)
#define ASSERT(expression)
#define SAFENEWWITHCONSTRUCTOR(pnt, item, constructor)
virtual const Vec3 & GetXCurr(void) const
const RigidBodyKinematics * pGetRBK(void) const
const doublereal & dGetInitialPositionStiffness(void) const
virtual int GetWord(void)
std::ostream & GetLogFile(void) const
Vec3 MatR2EulerAngles321(const Mat3x3 &R)
virtual HighParser::ErrOut GetLineData(void) const
std::ostream & Write(std::ostream &out, const char *sFill=" ", const char *sFill2=NULL) const
Node * ReadNode(MBDynParser &HP, Node::Type type) const
bool bOutputAccelerations(void) const
virtual doublereal GetReal(const doublereal &dDefval=0.0)