54 return out <<
" force: " <<
GetLabel();
100 DEBUGCOUT(
"Entering AbstractForce::AssRes()" << std::endl);
111 WorkVec.
PutCoef(1, dAmplitude);
136 DEBUGCOUT(
"Entering AbstractForce::InitialAssRes()" << std::endl);
138 return AssRes(WorkVec, 1., XCurr, XCurr);
154 pNode1(pN1), pNode2(pN2)
194 DEBUGCOUT(
"Entering AbstractInternalForce::AssRes()" << std::endl);
207 WorkVec.
PutCoef(1, dAmplitude);
208 WorkVec.
PutCoef(2, -dAmplitude);
235 DEBUGCOUT(
"Entering AbstractInternalForce::InitialAssRes()" << std::endl);
237 return AssRes(WorkVec, 1., XCurr, XCurr);
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.)
virtual bool bToBeOutput(void) const
const char * psReadNodesNodes[]
#define MBDYN_EXCEPT_ARGS
AbstractInternalForce(unsigned int uL, const Node *pN1, const Node *pN2, const DriveCaller *pDC, flag fOut)
virtual void ResizeReset(integer)
virtual void Output(OutputHandler &OH) const
doublereal dGet(void) const
Elem * ReadModalExtForce(DataManager *pDM, MBDynParser &HP, unsigned int uLabel)
const Mat3x3 Eye3(1., 0., 0., 0., 1., 0., 0., 0., 1.)
virtual std::ostream & Restart(std::ostream &out) const
Elem * ReadModalMappingExtForce(DataManager *pDM, MBDynParser &HP, unsigned int uLabel)
virtual std::ostream & Restart(std::ostream &out) const =0
virtual void Output(OutputHandler &OH) const
Elem * ReadForce(DataManager *pDM, MBDynParser &HP, unsigned int uLabel, bool bCouple)
virtual void PutRowIndex(integer iSubRow, integer iRow)=0
Elem * ReadStructExtForce(DataManager *pDM, MBDynParser &HP, unsigned int uLabel)
Elem * ReadModalForce(DataManager *pDM, MBDynParser &HP, unsigned int uLabel)
virtual ~AbstractForce(void)
TplDriveCaller< Vec3 > * ReadDC3D(const DataManager *pDM, MBDynParser &HP)
virtual std::ostream & Restart(std::ostream &out) const
#define SAFENEW(pnt, item)
Vec3 GetPosRel(const ReferenceFrame &rf)
virtual std::ostream & Restart(std::ostream &out) const
virtual bool IsKeyWord(const char *sKeyWord)
virtual integer iGetFirstRowIndex(void) const
SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
virtual void PutCoef(integer iRow, const doublereal &dCoef)=0
#define SAFENEWWITHCONSTRUCTOR(pnt, item, constructor)
DriveCaller * pGetDriveCaller(void) const
virtual ~AbstractInternalForce(void)
virtual doublereal dGet(const doublereal &dVar) const =0
SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
virtual Node::Type GetNodeType(void) const =0
virtual int GetWord(void)
AbstractForce(unsigned int uL, const Node *pN, const DriveCaller *pDC, flag fOut)
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
SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
unsigned int GetLabel(void) const
Node * ReadNode(MBDynParser &HP, Node::Type type) const
ScalarDof ReadScalarDof(const DataManager *pDM, MBDynParser &HP, bool bDof, bool bOrder)
std::ostream & Forces(void) const
bool UseText(int out) const
SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)