MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
AbsoluteForce Class Reference

#include <strforce_impl.h>

Inheritance diagram for AbsoluteForce:
Collaboration diagram for AbsoluteForce:

Public Member Functions

 AbsoluteForce (unsigned int uL, const StructNode *pN, const TplDriveCaller< Vec3 > *pDC, const Vec3 &TmpArm, flag fOut)
 
 ~AbsoluteForce (void)
 
virtual Force::Type GetForceType (void) const
 
virtual std::ostream & Restart (std::ostream &out) const
 
void WorkSpaceDim (integer *piNumRows, integer *piNumCols) const
 
virtual VariableSubMatrixHandlerAssJac (VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual SubVectorHandlerAssRes (SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual SubVectorHandlerAssRes (SubVectorHandler &WorkVec, const VectorHandler &, const VectorHandler &, const VectorHandler &, InverseDynamics::Order iOrder)
 
virtual void OutputPrepare (OutputHandler &OH)
 
virtual void Output (OutputHandler &OH) const
 
virtual void InitialWorkSpaceDim (integer *piNumRows, integer *piNumCols) const
 
virtual VariableSubMatrixHandlerInitialAssJac (VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
 
virtual SubVectorHandlerInitialAssRes (SubVectorHandler &WorkVec, const VectorHandler &XCurr)
 
- Public Member Functions inherited from Elem
 Elem (unsigned int uL, flag fOut)
 
virtual ~Elem (void)
 
virtual unsigned int iGetNumDof (void) const
 
virtual std::ostream & DescribeDof (std::ostream &out, const char *prefix="", bool bInitial=false) const
 
virtual void DescribeDof (std::vector< std::string > &desc, bool bInitial=false, int i=-1) const
 
virtual std::ostream & DescribeEq (std::ostream &out, const char *prefix="", bool bInitial=false) const
 
virtual void DescribeEq (std::vector< std::string > &desc, bool bInitial=false, int i=-1) const
 
virtual DofOrder::Order GetDofType (unsigned int) const
 
virtual void AssMats (VariableSubMatrixHandler &WorkMatA, VariableSubMatrixHandler &WorkMatB, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual bool bInverseDynamics (void) const
 
void SetInverseDynamicsFlags (unsigned uIDF)
 
unsigned GetInverseDynamicsFlags (void) const
 
bool bIsErgonomy (void) const
 
bool bIsRightHandSide (void) const
 
virtual VariableSubMatrixHandlerAssJac (VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
 
virtual int GetNumConnectedNodes (void) const
 
- Public Member Functions inherited from WithLabel
 WithLabel (unsigned int uL=0, const std::string &sN="")
 
virtual ~WithLabel (void)
 
void PutLabel (unsigned int uL)
 
void PutName (const std::string &sN)
 
unsigned int GetLabel (void) const
 
const std::string & GetName (void) const
 
- Public Member Functions inherited from SimulationEntity
 SimulationEntity (void)
 
virtual ~SimulationEntity (void)
 
virtual bool bIsValidIndex (unsigned int i) const
 
virtual DofOrder::Order GetEqType (unsigned int i) const
 
virtual void SetValue (DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *h=0)
 
virtual HintParseHint (DataManager *pDM, const char *s) const
 
virtual void BeforePredict (VectorHandler &, VectorHandler &, VectorHandler &, VectorHandler &) const
 
virtual void AfterPredict (VectorHandler &X, VectorHandler &XP)
 
virtual void Update (const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual void DerivativesUpdate (const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual void Update (const VectorHandler &XCurr, InverseDynamics::Order iOrder)
 
virtual void AfterConvergence (const VectorHandler &X, const VectorHandler &XP)
 
virtual void AfterConvergence (const VectorHandler &X, const VectorHandler &XP, const VectorHandler &XPP)
 
virtual unsigned int iGetNumPrivData (void) const
 
virtual unsigned int iGetPrivDataIdx (const char *s) const
 
virtual doublereal dGetPrivData (unsigned int i) const
 
virtual std::ostream & OutputAppend (std::ostream &out) const
 
virtual void ReadInitialState (MBDynParser &HP)
 
- Public Member Functions inherited from ToBeOutput
 ToBeOutput (flag fOut=fDefaultOut)
 
virtual ~ToBeOutput (void)
 
virtual void Output (OutputHandler &OH, const VectorHandler &X, const VectorHandler &XP) const
 
virtual flag fToBeOutput (void) const
 
virtual bool bToBeOutput (void) const
 
virtual void SetOutputFlag (flag f=flag(1))
 
- Public Member Functions inherited from StructuralForce
 StructuralForce (unsigned int uL, const StructNode *pN, const TplDriveCaller< Vec3 > *pDC, flag fOut)
 
virtual ~StructuralForce (void)
 
virtual void GetConnectedNodes (std::vector< const Node * > &connectedNodes) const
 
- Public Member Functions inherited from Force
 Force (unsigned int uL, flag fOut)
 
virtual ~Force (void)
 
virtual Elem::Type GetElemType (void) const
 
virtual unsigned int iGetInitialNumDof (void) const
 
- Public Member Functions inherited from InitialAssemblyElem
 InitialAssemblyElem (unsigned int uL, flag fOut)
 
virtual ~InitialAssemblyElem (void)
 
- Public Member Functions inherited from SubjectToInitialAssembly
 SubjectToInitialAssembly (void)
 
virtual ~SubjectToInitialAssembly (void)
 

Protected Attributes

const Vec3 Arm
 
- Protected Attributes inherited from WithLabel
unsigned int uLabel
 
std::string sName
 
- Protected Attributes inherited from ToBeOutput
flag fOutput
 
- Protected Attributes inherited from StructuralForce
TplDriveOwner< Vec3f
 
const StructNodepNode
 

Additional Inherited Members

- Public Types inherited from Elem
enum  Type {
  UNKNOWN = -1, AIRPROPERTIES = 0, INDUCEDVELOCITY, AUTOMATICSTRUCTURAL,
  GRAVITY, BODY, JOINT, JOINT_REGULARIZATION,
  BEAM, PLATE, FORCE, INERTIA,
  ELECTRICBULK, ELECTRIC, THERMAL, HYDRAULIC,
  BULK, LOADABLE, DRIVEN, EXTERNAL,
  AEROMODAL, AERODYNAMIC, GENEL, SOCKETSTREAM_OUTPUT,
  RTAI_OUTPUT = SOCKETSTREAM_OUTPUT, LASTELEMTYPE
}
 
- Public Types inherited from SimulationEntity
typedef std::vector< Hint * > Hints
 
- Public Types inherited from ToBeOutput
enum  { OUTPUT = 0x1U, OUTPUT_MASK = 0xFU, OUTPUT_PRIVATE = 0x10U, OUTPUT_PRIVATE_MASK = ~OUTPUT_MASK }
 
- Public Types inherited from StructuralForce
enum  { OUTPUT_REL = ToBeOutput::OUTPUT_PRIVATE }
 
- Public Types inherited from Force
enum  Type {
  UNKNOWN = -1, ABSTRACTFORCE = 0, ABSTRACTINTERNALFORCE, ABSOLUTEDISPFORCE,
  ABSOLUTEINTERNALDISPFORCE, ABSOLUTEFORCE, FOLLOWERFORCE, ABSOLUTECOUPLE,
  FOLLOWERCOUPLE, ABSOLUTEINTERNALFORCE, FOLLOWERINTERNALFORCE, ABSOLUTEINTERNALCOUPLE,
  FOLLOWERINTERNALCOUPLE, TOTALFORCE, TOTALINTERNALFORCE, EXTERNALSTRUCTURAL,
  MODALFORCE, EXTERNALMODAL, LASTFORCETYPE
}
 

Detailed Description

Definition at line 209 of file strforce_impl.h.

Constructor & Destructor Documentation

AbsoluteForce::AbsoluteForce ( unsigned int  uL,
const StructNode pN,
const TplDriveCaller< Vec3 > *  pDC,
const Vec3 TmpArm,
flag  fOut 
)

Definition at line 435 of file strforce.cc.

References NO_OP.

440 : Elem(uL, fOut),
441 StructuralForce(uL, pN, pDC, fOut),
442 Arm(TmpArm)
443 #ifdef USE_NETCDF
444 ,
445 Var_A(0)
446 #endif // USE_NETCDF
447 {
448  NO_OP;
449 }
#define NO_OP
Definition: myassert.h:74
StructuralForce(unsigned int uL, const StructNode *pN, const TplDriveCaller< Vec3 > *pDC, flag fOut)
Definition: strforce.cc:398
const Vec3 Arm
Elem(unsigned int uL, flag fOut)
Definition: elem.cc:41
AbsoluteForce::~AbsoluteForce ( void  )

Definition at line 452 of file strforce.cc.

References NO_OP.

453 {
454  NO_OP;
455 }
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

VariableSubMatrixHandler & AbsoluteForce::AssJac ( VariableSubMatrixHandler WorkMat,
doublereal  dCoef,
const VectorHandler XCurr,
const VectorHandler XPrimeCurr 
)
virtual

Implements Elem.

Definition at line 484 of file strforce.cc.

References Arm, DEBUGCOUT, StructuralForce::f, TplDriveOwner< T >::Get(), StructNode::GetRRef(), StructDispNode::iGetFirstMomentumIndex(), StructDispNode::iGetFirstPositionIndex(), MatCrossCross, StructuralForce::pNode, FullSubMatrixHandler::PutColIndex(), FullSubMatrixHandler::PutRowIndex(), FullSubMatrixHandler::ResizeReset(), VariableSubMatrixHandler::SetFull(), and FullSubMatrixHandler::Sub().

488 {
489  DEBUGCOUT("Entering AbsoluteForce::AssJac()" << std::endl);
490 
491  FullSubMatrixHandler& WM = WorkMat.SetFull();
492 
493  /* Dimensiona e resetta la matrice di lavoro */
494  WM.ResizeReset(3, 3);
495 
496  integer iFirstPositionIndex = pNode->iGetFirstPositionIndex() + 3;
497  integer iFirstMomentumIndex = pNode->iGetFirstMomentumIndex() + 3;
498  for (integer iCnt = 1; iCnt <= 3; iCnt++) {
499  WM.PutRowIndex(iCnt, iFirstMomentumIndex + iCnt);
500  WM.PutColIndex(iCnt, iFirstPositionIndex + iCnt);
501  }
502 
503  /* Dati */
504  Vec3 TmpArm(pNode->GetRRef()*Arm);
505 
506  /* | F/\ | | F |
507  * | | Delta_g = | |
508  * | (d/\F)/\ | | d/\F |
509  */
510 
511  WM.Sub(1, 1, Mat3x3(MatCrossCross, f.Get(), TmpArm*dCoef));
512 
513  return WorkMat;
514 }
void PutColIndex(integer iSubCol, integer iCol)
Definition: submat.h:325
virtual const Mat3x3 & GetRRef(void) const
Definition: strnode.h:1006
Definition: matvec3.h:98
FullSubMatrixHandler & SetFull(void)
Definition: submat.h:1168
#define DEBUGCOUT(msg)
Definition: myassert.h:232
T Get(const doublereal &dVar) const
Definition: tpldrive.h:109
TplDriveOwner< Vec3 > f
const StructNode * pNode
const Vec3 Arm
virtual integer iGetFirstMomentumIndex(void) const =0
virtual integer iGetFirstPositionIndex(void) const
Definition: strnode.h:452
virtual void ResizeReset(integer, integer)
Definition: submat.cc:182
const MatCrossCross_Manip MatCrossCross
Definition: matvec3.cc:640
void PutRowIndex(integer iSubRow, integer iRow)
Definition: submat.h:311
void Sub(integer iRow, integer iCol, const Vec3 &v)
Definition: submat.cc:215
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

SubVectorHandler & AbsoluteForce::AssRes ( SubVectorHandler WorkVec,
doublereal  dCoef,
const VectorHandler XCurr,
const VectorHandler XPrimeCurr 
)
virtual

Implements Elem.

Definition at line 519 of file strforce.cc.

References VectorHandler::Add(), Arm, grad::Cross(), DEBUGCOUT, StructuralForce::f, TplDriveOwner< T >::Get(), StructNode::GetRCurr(), StructDispNode::iGetFirstMomentumIndex(), StructuralForce::pNode, SubVectorHandler::PutRowIndex(), R, VectorHandler::ResizeReset(), and WorkSpaceDim().

523 {
524  DEBUGCOUT("Entering AbsoluteForce::AssRes()" << std::endl);
525 
526  integer iNumRows;
527  integer iNumCols;
528  WorkSpaceDim(&iNumRows, &iNumCols);
529  WorkVec.ResizeReset(iNumRows);
530 
531  /* Indici delle incognite del nodo */
532  integer iFirstMomentumIndex = pNode->iGetFirstMomentumIndex();
533  for (integer iCnt = 1; iCnt <= 6; iCnt++) {
534  WorkVec.PutRowIndex(iCnt, iFirstMomentumIndex + iCnt);
535  }
536 
537  const Mat3x3& R(pNode->GetRCurr());
538  Vec3 F(f.Get());
539  Vec3 M((R*Arm).Cross(F));
540 
541  WorkVec.Add(1, F);
542  WorkVec.Add(4, M);
543 
544  return WorkVec;
545 }
Definition: matvec3.h:98
virtual void ResizeReset(integer)
Definition: vh.cc:55
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
virtual void PutRowIndex(integer iSubRow, integer iRow)=0
#define DEBUGCOUT(msg)
Definition: myassert.h:232
T Get(const doublereal &dVar) const
Definition: tpldrive.h:109
TplDriveOwner< Vec3 > f
const StructNode * pNode
const Vec3 Arm
virtual integer iGetFirstMomentumIndex(void) const =0
VectorExpression< VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >, 3 > Cross(const VectorExpression< VectorLhsExpr, 3 > &u, const VectorExpression< VectorRhsExpr, 3 > &v)
Definition: matvec.h:3248
virtual void Add(integer iRow, const Vec3 &v)
Definition: vh.cc:63
long int integer
Definition: colamd.c:51
void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: strforce.cc:458
Mat3x3 R

Here is the call graph for this function:

SubVectorHandler & AbsoluteForce::AssRes ( SubVectorHandler WorkVec,
const VectorHandler ,
const VectorHandler ,
const VectorHandler ,
InverseDynamics::Order  iOrder 
)
virtual

Reimplemented from Elem.

Definition at line 549 of file strforce.cc.

References VectorHandler::Add(), Arm, grad::Cross(), DEBUGCOUT, StructuralForce::f, TplDriveOwner< T >::Get(), StructNode::GetRCurr(), StructDispNode::iGetFirstPositionIndex(), StructuralForce::pNode, SubVectorHandler::PutRowIndex(), R, VectorHandler::ResizeReset(), and WorkSpaceDim().

554 {
555  DEBUGCOUT("Entering AbsoluteForce::AssRes()" << std::endl);
556 
557  integer iNumRows;
558  integer iNumCols;
559  WorkSpaceDim(&iNumRows, &iNumCols);
560  WorkVec.ResizeReset(iNumRows);
561 
562  /* Indici delle incognite del nodo */
563  integer iFirstMomentumIndex = pNode->iGetFirstPositionIndex();
564  for (integer iCnt = 1; iCnt <= 6; iCnt++) {
565  WorkVec.PutRowIndex(iCnt, iFirstMomentumIndex + iCnt);
566  }
567 
568  const Mat3x3& R(pNode->GetRCurr());
569  Vec3 F(f.Get());
570  Vec3 M((R*Arm).Cross(F));
571 
572  WorkVec.Add(1, F);
573  WorkVec.Add(4, M);
574 
575  return WorkVec;
576 }
Definition: matvec3.h:98
virtual void ResizeReset(integer)
Definition: vh.cc:55
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
virtual void PutRowIndex(integer iSubRow, integer iRow)=0
#define DEBUGCOUT(msg)
Definition: myassert.h:232
T Get(const doublereal &dVar) const
Definition: tpldrive.h:109
TplDriveOwner< Vec3 > f
const StructNode * pNode
const Vec3 Arm
virtual integer iGetFirstPositionIndex(void) const
Definition: strnode.h:452
VectorExpression< VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >, 3 > Cross(const VectorExpression< VectorLhsExpr, 3 > &u, const VectorExpression< VectorRhsExpr, 3 > &v)
Definition: matvec.h:3248
virtual void Add(integer iRow, const Vec3 &v)
Definition: vh.cc:63
long int integer
Definition: colamd.c:51
void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: strforce.cc:458
Mat3x3 R

Here is the call graph for this function:

virtual Force::Type AbsoluteForce::GetForceType ( void  ) const
inlinevirtual

Implements Force.

Definition at line 227 of file strforce_impl.h.

References Force::ABSOLUTEFORCE.

227  {
228  return Force::ABSOLUTEFORCE;
229  };
VariableSubMatrixHandler & AbsoluteForce::InitialAssJac ( VariableSubMatrixHandler WorkMat,
const VectorHandler XCurr 
)
virtual

Reimplemented from Force.

Definition at line 629 of file strforce.cc.

References Arm, DEBUGCOUT, StructuralForce::f, TplDriveOwner< T >::Get(), StructNode::GetRRef(), StructNode::GetWRef(), StructDispNode::iGetFirstPositionIndex(), MatCross, MatCrossCross, StructuralForce::pNode, FullSubMatrixHandler::PutColIndex(), FullSubMatrixHandler::PutRowIndex(), FullSubMatrixHandler::ResizeReset(), VariableSubMatrixHandler::SetFull(), and FullSubMatrixHandler::Sub().

631 {
632  DEBUGCOUT("Entering AbsoluteForce::InitialAssJac()" << std::endl);
633 
634  FullSubMatrixHandler& WM = WorkMat.SetFull();
635 
636  /* Dimensiona e resetta la matrice di lavoro */
637  WM.ResizeReset(6, 6);
638 
639  integer iFirstPositionIndex = pNode->iGetFirstPositionIndex() + 3;
640  integer iFirstVelocityIndex = iFirstPositionIndex + 6;
641  for (integer iCnt = 1; iCnt <= 3; iCnt++) {
642  WM.PutRowIndex(iCnt, iFirstPositionIndex + iCnt);
643  WM.PutRowIndex(3+iCnt, iFirstVelocityIndex + iCnt);
644  WM.PutColIndex(iCnt, iFirstPositionIndex + iCnt);
645  WM.PutColIndex(3+iCnt, iFirstVelocityIndex + iCnt);
646  }
647 
648  /* Dati */
649  Vec3 TmpArm(pNode->GetRRef()*Arm);
650  Vec3 TmpDir = f.Get();
651  const Vec3& Omega(pNode->GetWRef());
652 
653  /* | F/\ | | F |
654  * | | Delta_g = | |
655  * | (d/\F)/\ | | d/\F |
656  */
657 
658  Mat3x3 MTmp(MatCrossCross, TmpDir, TmpArm);
659 
660  WM.Sub(1, 1, MTmp);
661  WM.Sub(4, 1, Mat3x3(MatCrossCross, TmpDir, Omega)*Mat3x3(MatCross, TmpArm));
662  WM.Sub(4, 4, MTmp);
663 
664  return WorkMat;
665 }
void PutColIndex(integer iSubCol, integer iCol)
Definition: submat.h:325
virtual const Mat3x3 & GetRRef(void) const
Definition: strnode.h:1006
Definition: matvec3.h:98
const MatCross_Manip MatCross
Definition: matvec3.cc:639
FullSubMatrixHandler & SetFull(void)
Definition: submat.h:1168
virtual const Vec3 & GetWRef(void) const
Definition: strnode.h:1024
#define DEBUGCOUT(msg)
Definition: myassert.h:232
T Get(const doublereal &dVar) const
Definition: tpldrive.h:109
TplDriveOwner< Vec3 > f
const StructNode * pNode
const Vec3 Arm
virtual integer iGetFirstPositionIndex(void) const
Definition: strnode.h:452
virtual void ResizeReset(integer, integer)
Definition: submat.cc:182
const MatCrossCross_Manip MatCrossCross
Definition: matvec3.cc:640
void PutRowIndex(integer iSubRow, integer iRow)
Definition: submat.h:311
void Sub(integer iRow, integer iCol, const Vec3 &v)
Definition: submat.cc:215
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

SubVectorHandler & AbsoluteForce::InitialAssRes ( SubVectorHandler WorkVec,
const VectorHandler XCurr 
)
virtual

Implements SubjectToInitialAssembly.

Definition at line 670 of file strforce.cc.

References VectorHandler::Add(), Arm, grad::Cross(), DEBUGCOUT, StructuralForce::f, TplDriveOwner< T >::Get(), StructNode::GetRCurr(), StructNode::GetWCurr(), StructDispNode::iGetFirstPositionIndex(), InitialWorkSpaceDim(), StructuralForce::pNode, SubVectorHandler::PutRowIndex(), R, and VectorHandler::ResizeReset().

672 {
673  DEBUGCOUT("Entering AbsoluteForce::InitialAssRes()" << std::endl);
674 
675  integer iNumRows;
676  integer iNumCols;
677  InitialWorkSpaceDim(&iNumRows, &iNumCols);
678  WorkVec.ResizeReset(iNumRows);
679 
680  /* Indici delle incognite del nodo */
681  integer iFirstPositionIndex = pNode->iGetFirstPositionIndex();
682  integer iFirstVelocityIndex = iFirstPositionIndex + 6;
683  for (integer iCnt = 1; iCnt <= 6; iCnt++) {
684  WorkVec.PutRowIndex(iCnt, iFirstPositionIndex + iCnt);
685  WorkVec.PutRowIndex(6+iCnt, iFirstVelocityIndex + iCnt);
686  }
687 
688  /* Dati */
689  const Mat3x3& R(pNode->GetRCurr());
690  Vec3 TmpDir(f.Get());
691  Vec3 TmpArm(R*Arm);
692  const Vec3& Omega(pNode->GetWCurr());
693 
694  WorkVec.Add(1, TmpDir);
695  WorkVec.Add(4, TmpArm.Cross(TmpDir));
696  /* In 7 non c'e' nulla */
697  WorkVec.Add(10, (Omega.Cross(TmpArm)).Cross(TmpDir));
698 
699  return WorkVec;
700 }
Definition: matvec3.h:98
virtual void ResizeReset(integer)
Definition: vh.cc:55
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
virtual void PutRowIndex(integer iSubRow, integer iRow)=0
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: strforce.cc:465
#define DEBUGCOUT(msg)
Definition: myassert.h:232
T Get(const doublereal &dVar) const
Definition: tpldrive.h:109
TplDriveOwner< Vec3 > f
const StructNode * pNode
const Vec3 Arm
virtual integer iGetFirstPositionIndex(void) const
Definition: strnode.h:452
virtual const Vec3 & GetWCurr(void) const
Definition: strnode.h:1030
VectorExpression< VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >, 3 > Cross(const VectorExpression< VectorLhsExpr, 3 > &u, const VectorExpression< VectorRhsExpr, 3 > &v)
Definition: matvec.h:3248
virtual void Add(integer iRow, const Vec3 &v)
Definition: vh.cc:63
long int integer
Definition: colamd.c:51
Mat3x3 R

Here is the call graph for this function:

void AbsoluteForce::InitialWorkSpaceDim ( integer piNumRows,
integer piNumCols 
) const
virtual

Implements SubjectToInitialAssembly.

Definition at line 465 of file strforce.cc.

Referenced by InitialAssRes().

468 {
469  *piNumRows = 12;
470  *piNumCols = 6;
471 }
void AbsoluteForce::Output ( OutputHandler OH) const
virtual

Reimplemented from ToBeOutput.

Definition at line 603 of file strforce.cc.

References Arm, ToBeOutput::bToBeOutput(), StructuralForce::f, OutputHandler::FORCES, OutputHandler::Forces(), TplDriveOwner< T >::Get(), OutputHandler::GetCurrentStep(), WithLabel::GetLabel(), StructNode::GetRCurr(), StructDispNode::GetXCurr(), Vec3::pGetVec(), StructuralForce::pNode, OutputHandler::UseNetCDF(), and OutputHandler::UseText().

604 {
605  if (bToBeOutput()) {
606 #ifdef USE_NETCDF
608  Var_F->put_rec(f.Get().pGetVec(), OH.GetCurrentStep());
609  Var_A->put_rec((pNode->GetXCurr() + pNode->GetRCurr()*Arm).pGetVec(), OH.GetCurrentStep());
610  }
611 #endif // USE_NETCDF
612 
613  if (OH.UseText(OutputHandler::FORCES)) {
614  OH.Forces()
615  << GetLabel()
616  << " " << pNode->GetLabel()
617  << " " << f.Get()
618  << " " << pNode->GetXCurr() + pNode->GetRCurr()*Arm
619  << std::endl;
620  }
621 
622  /* TODO: NetCDF */
623  }
624 }
virtual bool bToBeOutput(void) const
Definition: output.cc:890
bool UseNetCDF(int out) const
Definition: output.cc:491
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
long GetCurrentStep(void) const
Definition: output.h:116
T Get(const doublereal &dVar) const
Definition: tpldrive.h:109
TplDriveOwner< Vec3 > f
const StructNode * pNode
const Vec3 Arm
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
const doublereal * pGetVec(void) const
Definition: matvec3.h:192
unsigned int GetLabel(void) const
Definition: withlab.cc:62
std::ostream & Forces(void) const
Definition: output.h:450
bool UseText(int out) const
Definition: output.cc:446

Here is the call graph for this function:

void AbsoluteForce::OutputPrepare ( OutputHandler OH)
virtual

Reimplemented from ToBeOutput.

Definition at line 579 of file strforce.cc.

References ASSERT, ToBeOutput::bToBeOutput(), OutputHandler::FORCES, WithLabel::GetLabel(), OutputHandler::IsOpen(), OutputHandler::NETCDF, and OutputHandler::UseNetCDF().

580 {
581  if (bToBeOutput()) {
582 #ifdef USE_NETCDF
585 
586  std::ostringstream os;
587  os << "elem.force." << GetLabel();
588  (void)OH.CreateVar(os.str(), "absolute");
589 
590  // joint sub-data
591  os << '.';
592  Var_F = OH.CreateVar<Vec3>(os.str() + "F", "N",
593  "global force components (x, y, z)");
594 
595  Var_A = OH.CreateVar<Vec3>(os.str() + "Arm", "m",
596  "arm in global frame (x, y, z)");
597  }
598 #endif // USE_NETCDF
599  }
600 }
virtual bool bToBeOutput(void) const
Definition: output.cc:890
Definition: matvec3.h:98
bool UseNetCDF(int out) const
Definition: output.cc:491
bool IsOpen(int out) const
Definition: output.cc:395
#define ASSERT(expression)
Definition: colamd.c:977
unsigned int GetLabel(void) const
Definition: withlab.cc:62

Here is the call graph for this function:

std::ostream & AbsoluteForce::Restart ( std::ostream &  out) const
virtual

Implements Elem.

Definition at line 475 of file strforce.cc.

References Arm, StructuralForce::f, WithLabel::GetLabel(), TplDriveOwner< T >::pGetDriveCaller(), StructuralForce::pNode, TplDriveCaller< T >::Restart(), Force::Restart(), and Vec3::Write().

476 {
477  Force::Restart(out) << ", absolute, "
478  << pNode->GetLabel() << ", position, reference, node, ",
479  Arm.Write(out, ", ") << ", ";
480  return f.pGetDriveCaller()->Restart(out) << ';' << std::endl;
481 }
std::ostream & Write(std::ostream &out, const char *sFill=" ") const
Definition: matvec3.cc:738
virtual std::ostream & Restart(std::ostream &out) const
Definition: force.cc:52
TplDriveCaller< T > * pGetDriveCaller(void) const
Definition: tpldrive.h:105
TplDriveOwner< Vec3 > f
const StructNode * pNode
const Vec3 Arm
virtual std::ostream & Restart(std::ostream &out) const =0
unsigned int GetLabel(void) const
Definition: withlab.cc:62

Here is the call graph for this function:

void AbsoluteForce::WorkSpaceDim ( integer piNumRows,
integer piNumCols 
) const
virtual

Implements Elem.

Definition at line 458 of file strforce.cc.

Referenced by AssRes().

459 {
460  *piNumRows = 6;
461  *piNumCols = 3;
462 }

Member Data Documentation

const Vec3 AbsoluteForce::Arm
protected

Definition at line 211 of file strforce_impl.h.

Referenced by AssJac(), AssRes(), InitialAssJac(), InitialAssRes(), Output(), and Restart().


The documentation for this class was generated from the following files: