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

#include <strforce_impl.h>

Inheritance diagram for FollowerInternalCouple:
Collaboration diagram for FollowerInternalCouple:

Public Member Functions

 FollowerInternalCouple (unsigned int uL, const StructNode *pN1, const StructNode *pN2, const TplDriveCaller< Vec3 > *pDC, flag fOut)
 
 ~FollowerInternalCouple (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 StructuralInternalForce
 StructuralInternalForce (unsigned int uL, const StructNode *pN1, const StructNode *pN2, const TplDriveCaller< Vec3 > *pDC, flag fOut)
 
virtual ~StructuralInternalForce (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)
 

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 Force
enum  Type {
  UNKNOWN = -1, ABSTRACTFORCE = 0, ABSTRACTINTERNALFORCE, ABSOLUTEDISPFORCE,
  ABSOLUTEINTERNALDISPFORCE, ABSOLUTEFORCE, FOLLOWERFORCE, ABSOLUTECOUPLE,
  FOLLOWERCOUPLE, ABSOLUTEINTERNALFORCE, FOLLOWERINTERNALFORCE, ABSOLUTEINTERNALCOUPLE,
  FOLLOWERINTERNALCOUPLE, TOTALFORCE, TOTALINTERNALFORCE, EXTERNALSTRUCTURAL,
  MODALFORCE, EXTERNALMODAL, LASTFORCETYPE
}
 
- Protected Attributes inherited from WithLabel
unsigned int uLabel
 
std::string sName
 
- Protected Attributes inherited from ToBeOutput
flag fOutput
 
- Protected Attributes inherited from StructuralInternalForce
TplDriveOwner< Vec3f
 
const StructNodepNode1
 
const StructNodepNode2
 

Detailed Description

Definition at line 689 of file strforce_impl.h.

Constructor & Destructor Documentation

FollowerInternalCouple::FollowerInternalCouple ( unsigned int  uL,
const StructNode pN1,
const StructNode pN2,
const TplDriveCaller< Vec3 > *  pDC,
flag  fOut 
)

Definition at line 2414 of file strforce.cc.

References NO_OP.

2418 : Elem(uL, fOut),
2419 StructuralInternalForce(uL, pN1, pN2, pDC, fOut)
2420 {
2421  NO_OP;
2422 }
#define NO_OP
Definition: myassert.h:74
StructuralInternalForce(unsigned int uL, const StructNode *pN1, const StructNode *pN2, const TplDriveCaller< Vec3 > *pDC, flag fOut)
Definition: strforce.cc:1457
Elem(unsigned int uL, flag fOut)
Definition: elem.cc:41
FollowerInternalCouple::~FollowerInternalCouple ( void  )

Definition at line 2425 of file strforce.cc.

References NO_OP.

2426 {
2427  NO_OP;
2428 }
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

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

Implements Elem.

Definition at line 2462 of file strforce.cc.

References FullSubMatrixHandler::Add(), DEBUGCOUT, StructuralInternalForce::f, TplDriveOwner< T >::Get(), StructNode::GetRRef(), StructDispNode::iGetFirstMomentumIndex(), StructDispNode::iGetFirstPositionIndex(), MatCross, StructuralInternalForce::pNode1, StructuralInternalForce::pNode2, FullSubMatrixHandler::PutColIndex(), FullSubMatrixHandler::PutRowIndex(), FullSubMatrixHandler::ResizeReset(), VariableSubMatrixHandler::SetFull(), FullSubMatrixHandler::Sub(), and WorkSpaceDim().

2466 {
2467  DEBUGCOUT("Entering FollowerInternalCouple::AssJac()" << std::endl);
2468 
2469  FullSubMatrixHandler& WM = WorkMat.SetFull();
2470 
2471  /* Dimensiona e resetta la matrice di lavoro */
2472  integer iNumRows = 0;
2473  integer iNumCols = 0;
2474  WorkSpaceDim(&iNumRows, &iNumCols);
2475  WM.ResizeReset(iNumRows, iNumCols);
2476 
2477  integer iFirstRotationIndex1 = pNode1->iGetFirstPositionIndex() + 3;
2478  integer iFirstMomentumIndex1 = pNode1->iGetFirstMomentumIndex() + 3;
2479  integer iFirstMomentumIndex2 = pNode2->iGetFirstMomentumIndex() + 3;
2480  for (integer iCnt = 1; iCnt <= 3; iCnt++) {
2481  WM.PutRowIndex(iCnt, iFirstMomentumIndex1 + iCnt); /* coppia */
2482  WM.PutColIndex(iCnt, iFirstRotationIndex1 + iCnt); /* rotazione */
2483 
2484  WM.PutRowIndex(3 + iCnt, iFirstMomentumIndex2 + iCnt); /* coppia */
2485  }
2486 
2487  /* Dati */
2488  Mat3x3 MWedge(MatCross, pNode1->GetRRef()*(f.Get()*dCoef));
2489 
2490  /* | M /\| Delta_g = | M | */
2491 
2492  WM.Add(1, 1, MWedge);
2493  WM.Sub(4, 1, MWedge);
2494 
2495  return WorkMat;
2496 }
TplDriveOwner< Vec3 > f
void PutColIndex(integer iSubCol, integer iCol)
Definition: submat.h:325
virtual const Mat3x3 & GetRRef(void) const
Definition: strnode.h:1006
void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: strforce.cc:2431
const MatCross_Manip MatCross
Definition: matvec3.cc:639
FullSubMatrixHandler & SetFull(void)
Definition: submat.h:1168
const StructNode * pNode1
void Add(integer iRow, integer iCol, const Vec3 &v)
Definition: submat.cc:209
#define DEBUGCOUT(msg)
Definition: myassert.h:232
T Get(const doublereal &dVar) const
Definition: tpldrive.h:109
virtual integer iGetFirstMomentumIndex(void) const =0
virtual integer iGetFirstPositionIndex(void) const
Definition: strnode.h:452
virtual void ResizeReset(integer, integer)
Definition: submat.cc:182
void PutRowIndex(integer iSubRow, integer iRow)
Definition: submat.h:311
const StructNode * pNode2
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 & FollowerInternalCouple::AssRes ( SubVectorHandler WorkVec,
doublereal  dCoef,
const VectorHandler XCurr,
const VectorHandler XPrimeCurr 
)
virtual

Implements Elem.

Definition at line 2501 of file strforce.cc.

References VectorHandler::Add(), DEBUGCOUT, StructuralInternalForce::f, TplDriveOwner< T >::Get(), StructNode::GetRCurr(), StructDispNode::iGetFirstMomentumIndex(), StructuralInternalForce::pNode1, StructuralInternalForce::pNode2, SubVectorHandler::PutRowIndex(), VectorHandler::ResizeReset(), VectorHandler::Sub(), and WorkSpaceDim().

2505 {
2506  DEBUGCOUT("Entering FollowerInternalCouple::AssRes()" << std::endl);
2507 
2508  integer iNumRows;
2509  integer iNumCols;
2510  WorkSpaceDim(&iNumRows, &iNumCols);
2511  WorkVec.ResizeReset(iNumRows);
2512 
2513  /* Indici delle incognite del nodo */
2514  integer iFirstMomentumIndex1 = pNode1->iGetFirstMomentumIndex() + 3;
2515  integer iFirstMomentumIndex2 = pNode2->iGetFirstMomentumIndex() + 3;
2516  for (integer iCnt = 1; iCnt <= 3; iCnt++) {
2517  WorkVec.PutRowIndex(iCnt, iFirstMomentumIndex1 + iCnt);
2518  WorkVec.PutRowIndex(3 + iCnt, iFirstMomentumIndex2 + iCnt);
2519  }
2520 
2521  /* Dati */
2522  Vec3 M(pNode1->GetRCurr()*f.Get());
2523 
2524  WorkVec.Add(1, M);
2525  WorkVec.Sub(4, M);
2526 
2527  return WorkVec;
2528 }
TplDriveOwner< Vec3 > f
Definition: matvec3.h:98
void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: strforce.cc:2431
virtual void ResizeReset(integer)
Definition: vh.cc:55
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
const StructNode * pNode1
virtual void Sub(integer iRow, const Vec3 &v)
Definition: vh.cc:78
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
virtual integer iGetFirstMomentumIndex(void) const =0
virtual void Add(integer iRow, const Vec3 &v)
Definition: vh.cc:63
const StructNode * pNode2
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

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

Reimplemented from Elem.

Definition at line 2532 of file strforce.cc.

References VectorHandler::Add(), DEBUGCOUT, StructuralInternalForce::f, TplDriveOwner< T >::Get(), StructNode::GetRCurr(), StructDispNode::iGetFirstPositionIndex(), StructuralInternalForce::pNode1, StructuralInternalForce::pNode2, SubVectorHandler::PutRowIndex(), VectorHandler::ResizeReset(), VectorHandler::Sub(), and WorkSpaceDim().

2537 {
2538  DEBUGCOUT("Entering FollowerInternalCouple::AssRes()" << std::endl);
2539 
2540  integer iNumRows;
2541  integer iNumCols;
2542  WorkSpaceDim(&iNumRows, &iNumCols);
2543  WorkVec.ResizeReset(iNumRows);
2544 
2545  /* Indici delle incognite del nodo */
2546  integer iFirstMomentumIndex1 = pNode1->iGetFirstPositionIndex() + 3;
2547  integer iFirstMomentumIndex2 = pNode2->iGetFirstPositionIndex() + 3;
2548  for (integer iCnt = 1; iCnt <= 3; iCnt++) {
2549  WorkVec.PutRowIndex(iCnt, iFirstMomentumIndex1 + iCnt);
2550  WorkVec.PutRowIndex(3 + iCnt, iFirstMomentumIndex2 + iCnt);
2551  }
2552 
2553  /* Dati */
2554  Vec3 M(pNode1->GetRCurr()*f.Get());
2555 
2556  WorkVec.Add(1, M);
2557  WorkVec.Sub(4, M);
2558 
2559  return WorkVec;
2560 }
TplDriveOwner< Vec3 > f
Definition: matvec3.h:98
void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: strforce.cc:2431
virtual void ResizeReset(integer)
Definition: vh.cc:55
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
const StructNode * pNode1
virtual void Sub(integer iRow, const Vec3 &v)
Definition: vh.cc:78
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
virtual integer iGetFirstPositionIndex(void) const
Definition: strnode.h:452
virtual void Add(integer iRow, const Vec3 &v)
Definition: vh.cc:63
const StructNode * pNode2
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

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

Implements Force.

Definition at line 701 of file strforce_impl.h.

References Force::FOLLOWERINTERNALCOUPLE.

701  {
703  };
VariableSubMatrixHandler & FollowerInternalCouple::InitialAssJac ( VariableSubMatrixHandler WorkMat,
const VectorHandler XCurr 
)
virtual

Reimplemented from Force.

Definition at line 2627 of file strforce.cc.

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

2629 {
2630  DEBUGCOUT("Entering FollowerInternalCouple::InitialAssJac()" << std::endl);
2631 
2632  FullSubMatrixHandler& WM = WorkMat.SetFull();
2633 
2634  /* Dimensiona e resetta la matrice di lavoro */
2635  WM.ResizeReset(12, 6);
2636 
2637  integer iFirstPositionIndex1 = pNode1->iGetFirstPositionIndex() + 3;
2638  integer iFirstVelocityIndex1 = iFirstPositionIndex1 + 6;
2639  integer iFirstPositionIndex2 = pNode2->iGetFirstPositionIndex() + 3;
2640  integer iFirstVelocityIndex2 = iFirstPositionIndex2 + 6;
2641  for (integer iCnt = 1; iCnt <= 3; iCnt++) {
2642  WM.PutRowIndex(iCnt, iFirstPositionIndex1 + iCnt);
2643  WM.PutRowIndex(3 + iCnt, iFirstVelocityIndex1 + iCnt);
2644 
2645  WM.PutColIndex(iCnt, iFirstPositionIndex1 + iCnt);
2646  WM.PutColIndex(3 + iCnt, iFirstVelocityIndex1 + iCnt);
2647 
2648  WM.PutRowIndex(6 + iCnt, iFirstPositionIndex2 + iCnt);
2649  WM.PutRowIndex(9 + iCnt, iFirstVelocityIndex2 + iCnt);
2650  }
2651 
2652  /* Dati */
2653  Vec3 TmpDir(pNode1->GetRRef()*f.Get());
2654  const Vec3& Omega1(pNode1->GetWRef());
2655 
2656  /* | F/\ | | F |
2657  * | | Delta_g = | |
2658  * | (d/\F)/\ | | d/\F |
2659  */
2660 
2661  WM.Add(1, 1, Mat3x3(MatCross, TmpDir));
2662  WM.Add(4, 1, Mat3x3(MatCrossCross, Omega1, TmpDir));
2663  WM.Add(4, 4, Mat3x3(MatCross, TmpDir));
2664 
2665  WM.Sub(7, 1, Mat3x3(MatCross, TmpDir));
2666  WM.Sub(10, 1, Mat3x3(MatCrossCross, Omega1, TmpDir));
2667  WM.Sub(10, 4, Mat3x3(MatCross, TmpDir));
2668 
2669  return WorkMat;
2670 }
TplDriveOwner< Vec3 > f
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
const StructNode * pNode1
void Add(integer iRow, integer iCol, const Vec3 &v)
Definition: submat.cc:209
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
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
const StructNode * pNode2
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 & FollowerInternalCouple::InitialAssRes ( SubVectorHandler WorkVec,
const VectorHandler XCurr 
)
virtual

Implements SubjectToInitialAssembly.

Definition at line 2675 of file strforce.cc.

References VectorHandler::Add(), DEBUGCOUT, StructuralInternalForce::f, TplDriveOwner< T >::Get(), StructNode::GetRCurr(), StructNode::GetWCurr(), StructDispNode::iGetFirstPositionIndex(), StructuralInternalForce::pNode1, StructuralInternalForce::pNode2, SubVectorHandler::PutRowIndex(), VectorHandler::ResizeReset(), and VectorHandler::Sub().

2677 {
2678  DEBUGCOUT("Entering FollowerInternalCouple::InitialAssRes()" << std::endl);
2679 
2680  WorkVec.ResizeReset(12);
2681 
2682  /* Indici delle incognite del nodo */
2683  integer iFirstPositionIndex1 = pNode1->iGetFirstPositionIndex() + 3;
2684  integer iFirstVelocityIndex1 = iFirstPositionIndex1 + 6;
2685 
2686  integer iFirstPositionIndex2 = pNode2->iGetFirstPositionIndex() + 3;
2687  integer iFirstVelocityIndex2 = iFirstPositionIndex2 + 6;
2688 
2689  for (integer iCnt = 1; iCnt <= 3; iCnt++) {
2690  WorkVec.PutRowIndex(iCnt, iFirstPositionIndex1+iCnt);
2691  WorkVec.PutRowIndex(3 + iCnt, iFirstVelocityIndex1 + iCnt);
2692 
2693  WorkVec.PutRowIndex(6 + iCnt, iFirstPositionIndex2 + iCnt);
2694  WorkVec.PutRowIndex(9 + iCnt, iFirstVelocityIndex2 + iCnt);
2695  }
2696 
2697  /* Dati */
2698  Vec3 TmpDir(pNode1->GetRCurr()*f.Get());
2699  const Vec3& Omega1(pNode1->GetWCurr());
2700 
2701  WorkVec.Add(1, TmpDir);
2702  WorkVec.Add(4, Omega1.Cross(TmpDir));
2703 
2704  WorkVec.Sub(7, TmpDir);
2705  WorkVec.Sub(10, Omega1.Cross(TmpDir));
2706 
2707  return WorkVec;
2708 }
TplDriveOwner< Vec3 > f
Definition: matvec3.h:98
virtual void ResizeReset(integer)
Definition: vh.cc:55
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
const StructNode * pNode1
virtual void Sub(integer iRow, const Vec3 &v)
Definition: vh.cc:78
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
virtual integer iGetFirstPositionIndex(void) const
Definition: strnode.h:452
virtual const Vec3 & GetWCurr(void) const
Definition: strnode.h:1030
virtual void Add(integer iRow, const Vec3 &v)
Definition: vh.cc:63
const StructNode * pNode2
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

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

Implements SubjectToInitialAssembly.

Definition at line 2441 of file strforce.cc.

2444 {
2445  *piNumRows = 12;
2446  *piNumCols = 12;
2447 }
void FollowerInternalCouple::Output ( OutputHandler OH) const
virtual

Reimplemented from ToBeOutput.

Definition at line 2590 of file strforce.cc.

References ToBeOutput::bToBeOutput(), StructuralInternalForce::f, OutputHandler::FORCES, OutputHandler::Forces(), ToBeOutput::fToBeOutput(), TplDriveOwner< T >::Get(), OutputHandler::GetCurrentStep(), WithLabel::GetLabel(), StructNode::GetRCurr(), StructuralForce::OUTPUT_REL, Vec3::pGetVec(), StructuralInternalForce::pNode1, StructuralInternalForce::pNode2, OutputHandler::UseNetCDF(), and OutputHandler::UseText().

2591 {
2592  if (bToBeOutput()) {
2593 #ifdef USE_NETCDF
2594  if (OH.UseNetCDF(OutputHandler::FORCES)) {
2596  Var_F->put_rec(f.Get().pGetVec(), OH.GetCurrentStep());
2597  } else {
2598  Var_F->put_rec((pNode1->GetRCurr()*f.Get()).pGetVec(), OH.GetCurrentStep());
2599  }
2600  }
2601 #endif // USE_NETCDF
2602 
2603  if (OH.UseText(OutputHandler::FORCES)) {
2604  Vec3 F;
2606  F = f.Get();
2607  } else {
2608  F = pNode1->GetRCurr()*f.Get();
2609  }
2610 
2611  OH.Forces()
2612  << GetLabel()
2613  << " " << pNode1->GetLabel()
2614  << " " << F
2615  << " " << pNode2->GetLabel()
2616  << " " << -F
2617  << std::endl;
2618  }
2619 
2620  /* TODO: NetCDF */
2621  }
2622 }
TplDriveOwner< Vec3 > f
virtual bool bToBeOutput(void) const
Definition: output.cc:890
Definition: matvec3.h:98
bool UseNetCDF(int out) const
Definition: output.cc:491
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
const StructNode * pNode1
long GetCurrentStep(void) const
Definition: output.h:116
T Get(const doublereal &dVar) const
Definition: tpldrive.h:109
const doublereal * pGetVec(void) const
Definition: matvec3.h:192
virtual flag fToBeOutput(void) const
Definition: output.cc:884
const StructNode * pNode2
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 FollowerInternalCouple::OutputPrepare ( OutputHandler OH)
virtual

Reimplemented from ToBeOutput.

Definition at line 2563 of file strforce.cc.

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

2564 {
2565  if (bToBeOutput()) {
2566 #ifdef USE_NETCDF
2567  if (OH.UseNetCDF(OutputHandler::FORCES)) {
2569 
2570  std::ostringstream os;
2571  os << "elem.couple." << GetLabel();
2572  (void)OH.CreateVar(os.str(), "internal follower");
2573 
2574  // joint sub-data
2575  os << '.';
2577  Var_F = OH.CreateVar<Vec3>(os.str() + "m", "Nm",
2578  "local couple components (x, y, z)");
2579 
2580  } else {
2581  Var_F = OH.CreateVar<Vec3>(os.str() + "M", "Nm",
2582  "global couple components (x, y, z)");
2583  }
2584  }
2585 #endif // USE_NETCDF
2586  }
2587 }
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
virtual flag fToBeOutput(void) const
Definition: output.cc:884
unsigned int GetLabel(void) const
Definition: withlab.cc:62

Here is the call graph for this function:

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

Implements Elem.

Definition at line 2452 of file strforce.cc.

References StructuralInternalForce::f, WithLabel::GetLabel(), TplDriveOwner< T >::pGetDriveCaller(), StructuralInternalForce::pNode1, StructuralInternalForce::pNode2, and TplDriveCaller< T >::Restart().

2453 {
2454  out << " couple: " << GetLabel() << ", follower internal, "
2455  << pNode1->GetLabel() << ", "
2456  << pNode2->GetLabel() << ", ";
2457  return f.pGetDriveCaller()->Restart(out) << ';' << std::endl;
2458 }
TplDriveOwner< Vec3 > f
const StructNode * pNode1
TplDriveCaller< T > * pGetDriveCaller(void) const
Definition: tpldrive.h:105
virtual std::ostream & Restart(std::ostream &out) const =0
const StructNode * pNode2
unsigned int GetLabel(void) const
Definition: withlab.cc:62

Here is the call graph for this function:

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

Implements Elem.

Definition at line 2431 of file strforce.cc.

Referenced by AssJac(), and AssRes().

2434 {
2435  *piNumRows = 6;
2436  *piNumCols = 3;
2437 }

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