251 const char* sKeyWords[] = {
254 "absolute" "displacement",
257 "conservative" "internal",
258 "absolute" "internal",
259 "absolute" "internal" "displacement",
260 "follower" "internal",
265 "external" "structural",
266 "external" "structural" "mapping",
270 "external" "modal" "mapping",
273 "abstract" "internal",
284 ABSOLUTEDISPLACEMENT,
287 CONSERVATIVEINTERNAL,
289 ABSOLUTEINTERNALDISPLACEMENT,
296 EXTERNALSTRUCTURALMAPPING,
300 EXTERNALMODALMAPPING,
313 if (CurrType == UNKNOWN) {
314 silent_cerr(
"Force(" << uLabel <<
"): unknown force type "
323 case CONSERVATIVEINTERNAL:
324 case ABSOLUTEINTERNAL:
325 case FOLLOWERINTERNAL:
334 silent_cerr(
"Force(" << uLabel <<
"): must be a \"force\"" << std::endl);
341 silent_cout(
"Force(" << uLabel <<
"): "
342 "deprecated \"conservative\" "
344 "use \"absolute\" instead" << std::endl);
347 case CONSERVATIVEINTERNAL:
348 silent_cout(
"Force(" << uLabel <<
"): "
349 "deprecated \"conservative internal\" "
351 "use \"absolute internal\" instead" << std::endl);
373 case ABSTRACTINTERNAL: {
386 case EXTERNALSTRUCTURAL:
390 case EXTERNALSTRUCTURALMAPPING:
402 case EXTERNALMODALMAPPING:
406 case ABSOLUTEDISPLACEMENT:
419 case ABSOLUTEINTERNALDISPLACEMENT:
423 case CONSERVATIVEINTERNAL:
424 case ABSOLUTEINTERNAL:
428 case FOLLOWERINTERNAL:
433 case TOTALINTERNAL: {
447 if (HP.
IsKeyWord(
"force" "orientation")) {
448 DEBUGCOUT(
"Force orientation matrix is supplied" << std::endl);
452 if (HP.
IsKeyWord(
"moment" "orientation")) {
453 DEBUGCOUT(
"Moment orientation matrix is supplied" << std::endl);
462 if (CurrType == TOTALINTERNAL) {
472 if (HP.
IsKeyWord(
"force" "orientation")) {
473 DEBUGCOUT(
"Force orientation matrix is supplied" << std::endl);
477 if (HP.
IsKeyWord(
"moment" "orientation")) {
478 DEBUGCOUT(
"Moment orientation matrix is supplied" << std::endl);
514 pNode1, f1, R1h, R1hr,
515 pNode2, f2, R2h, R2hr,
520 silent_cerr(
"total force not implemented yet at line " << HP.
GetLineData() <<
"; use a \"force\" and a \"couple\" element instead" << std::endl);
531 silent_cerr(
"Force(" << uLabel <<
"): "
flag fReadOutput(MBDynParser &HP, const T &t) const
Mat3x3 GetRotRel(const ReferenceFrame &rf)
const Vec3 Zero3(0., 0., 0.)
const char * psReadNodesNodes[]
#define MBDYN_EXCEPT_ARGS
Elem * ReadModalExtForce(DataManager *pDM, MBDynParser &HP, unsigned int uLabel)
const Mat3x3 Eye3(1., 0., 0., 0., 1., 0., 0., 0., 1.)
Elem * ReadModalMappingExtForce(DataManager *pDM, MBDynParser &HP, unsigned int uLabel)
Elem * ReadStructExtForce(DataManager *pDM, MBDynParser &HP, unsigned int uLabel)
Elem * ReadModalForce(DataManager *pDM, MBDynParser &HP, unsigned int uLabel)
TplDriveCaller< Vec3 > * ReadDC3D(const DataManager *pDM, MBDynParser &HP)
#define SAFENEW(pnt, item)
Vec3 GetPosRel(const ReferenceFrame &rf)
virtual bool IsKeyWord(const char *sKeyWord)
#define SAFENEWWITHCONSTRUCTOR(pnt, item, constructor)
virtual int GetWord(void)
DriveCaller * GetDriveCaller(bool bDeferred=false)
Elem * ReadStructMappingExtForce(DataManager *pDM, MBDynParser &HP, unsigned int uLabel)
Elem * ReadStructuralForce(DataManager *pDM, MBDynParser &HP, unsigned int uLabel, bool bDisp, bool bCouple, bool bFollower, bool bInternal)
virtual HighParser::ErrOut GetLineData(void) const
Node * ReadNode(MBDynParser &HP, Node::Type type) const
ScalarDof ReadScalarDof(const DataManager *pDM, MBDynParser &HP, bool bDof, bool bOrder)