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

#include <strforce_impl.h>

Inheritance diagram for FollowerCouple:
Collaboration diagram for FollowerCouple:

Public Member Functions

 FollowerCouple (unsigned int uL, const StructNode *pN, const TplDriveCaller< Vec3 > *pDC, flag fOut)
 
 ~FollowerCouple (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)
 

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
}
 
- 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
 

Detailed Description

Definition at line 397 of file strforce_impl.h.

Constructor & Destructor Documentation

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

Definition at line 1188 of file strforce.cc.

References NO_OP.

1191 : Elem(uL, fOut),
1192 StructuralForce(uL, pN, pDC, fOut)
1193 {
1194  NO_OP;
1195 }
#define NO_OP
Definition: myassert.h:74
StructuralForce(unsigned int uL, const StructNode *pN, const TplDriveCaller< Vec3 > *pDC, flag fOut)
Definition: strforce.cc:398
Elem(unsigned int uL, flag fOut)
Definition: elem.cc:41
FollowerCouple::~FollowerCouple ( void  )

Definition at line 1198 of file strforce.cc.

References NO_OP.

1199 {
1200  NO_OP;
1201 }
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

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

Implements Elem.

Definition at line 1233 of file strforce.cc.

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

1237 {
1238  DEBUGCOUT("Entering FollowerCouple::AssJac()" << std::endl);
1239 
1240  FullSubMatrixHandler& WM = WorkMat.SetFull();
1241 
1242  /* Dimensiona e resetta la matrice di lavoro */
1243  integer iNumRows = 0;
1244  integer iNumCols = 0;
1245  WorkSpaceDim(&iNumRows, &iNumCols);
1246  WM.ResizeReset(iNumRows, iNumCols);
1247 
1248  integer iFirstRotationIndex = pNode->iGetFirstPositionIndex() + 3;
1249  integer iFirstMomentumIndex = pNode->iGetFirstMomentumIndex() + 3;
1250  for (integer iCnt = 1; iCnt <= 3; iCnt++) {
1251  WM.PutRowIndex(iCnt, iFirstMomentumIndex + iCnt); /* coppia */
1252  WM.PutColIndex(iCnt, iFirstRotationIndex + iCnt); /* rotazione */
1253  }
1254 
1255  /* Dati */
1256  const Mat3x3& R(pNode->GetRRef());
1257  Mat3x3 MWedge(MatCross, R*(f.Get()*dCoef));
1258 
1259  /* | M /\| Delta_g = | M | */
1260 
1261  WM.Add(1, 1, MWedge);
1262 
1263  return WorkMat;
1264 }
void PutColIndex(integer iSubCol, integer iCol)
Definition: submat.h:325
virtual const Mat3x3 & GetRRef(void) const
Definition: strnode.h:1006
const MatCross_Manip MatCross
Definition: matvec3.cc:639
FullSubMatrixHandler & SetFull(void)
Definition: submat.h:1168
void Add(integer iRow, integer iCol, const Vec3 &v)
Definition: submat.cc:209
void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: strforce.cc:1205
#define DEBUGCOUT(msg)
Definition: myassert.h:232
T Get(const doublereal &dVar) const
Definition: tpldrive.h:109
TplDriveOwner< Vec3 > f
const StructNode * pNode
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
long int integer
Definition: colamd.c:51
Mat3x3 R

Here is the call graph for this function:

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

Implements Elem.

Definition at line 1269 of file strforce.cc.

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

1273 {
1274  DEBUGCOUT("Entering FollowerCouple::AssRes()" << std::endl);
1275 
1276  integer iNumRows;
1277  integer iNumCols;
1278  WorkSpaceDim(&iNumRows, &iNumCols);
1279  WorkVec.ResizeReset(iNumRows);
1280 
1281  /* Indici delle incognite del nodo */
1282  integer iFirstMomentumIndex = pNode->iGetFirstMomentumIndex() + 3;
1283  for (integer iCnt = 1; iCnt <= 3; iCnt++) {
1284  WorkVec.PutRowIndex(iCnt, iFirstMomentumIndex + iCnt);
1285  }
1286 
1287  /* Dati */
1288  const Mat3x3& R(pNode->GetRCurr());
1289  WorkVec.Add(1, R*f.Get());
1290 
1291  return WorkVec;
1292 }
virtual void ResizeReset(integer)
Definition: vh.cc:55
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: strforce.cc:1205
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
virtual integer iGetFirstMomentumIndex(void) const =0
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:

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

Reimplemented from Elem.

Definition at line 1297 of file strforce.cc.

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

1302 {
1303  DEBUGCOUT("Entering FollowerCouple::AssRes()" << std::endl);
1304 
1305  integer iNumRows;
1306  integer iNumCols;
1307  WorkSpaceDim(&iNumRows, &iNumCols);
1308  WorkVec.ResizeReset(iNumRows);
1309 
1310  /* Indici delle incognite del nodo */
1311  integer iFirstMomentumIndex = pNode->iGetFirstPositionIndex()+3;
1312  for (integer iCnt = 1; iCnt <= 3; iCnt++) {
1313  WorkVec.PutRowIndex(iCnt, iFirstMomentumIndex+iCnt);
1314  }
1315 
1316  /* Dati */
1317  Mat3x3 R(pNode->GetRCurr());
1318  WorkVec.Add(1, R*f.Get());
1319 
1320  return WorkVec;
1321 }
virtual void ResizeReset(integer)
Definition: vh.cc:55
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: strforce.cc:1205
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
virtual integer iGetFirstPositionIndex(void) const
Definition: strnode.h:452
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:

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

Implements Force.

Definition at line 407 of file strforce_impl.h.

References Force::FOLLOWERCOUPLE.

407  {
408  return Force::FOLLOWERCOUPLE;
409  };
VariableSubMatrixHandler & FollowerCouple::InitialAssJac ( VariableSubMatrixHandler WorkMat,
const VectorHandler XCurr 
)
virtual

Reimplemented from Force.

Definition at line 1387 of file strforce.cc.

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

1389 {
1390  DEBUGCOUT("Entering FollowerCouple::InitialAssJac()" << std::endl);
1391 
1392  FullSubMatrixHandler& WM = WorkMat.SetFull();
1393 
1394  /* Dimensiona e resetta la matrice di lavoro */
1395  WM.ResizeReset(6, 6);
1396 
1397  integer iFirstPositionIndex = pNode->iGetFirstPositionIndex() + 3;
1398  integer iFirstVelocityIndex = iFirstPositionIndex + 6;
1399  for (integer iCnt = 1; iCnt <= 3; iCnt++) {
1400  WM.PutRowIndex(iCnt, iFirstPositionIndex + iCnt);
1401  WM.PutRowIndex(3 + iCnt, iFirstVelocityIndex + iCnt);
1402  WM.PutColIndex(iCnt, iFirstPositionIndex + iCnt);
1403  WM.PutColIndex(3 + iCnt, iFirstVelocityIndex + iCnt);
1404  }
1405 
1406  /* Dati */
1407  Vec3 TmpDir(pNode->GetRRef()*f.Get());
1408  const Vec3& Omega(pNode->GetWRef());
1409 
1410  /* | F/\ | | F |
1411  * | | Delta_g = | |
1412  * | (d/\F)/\ | | d/\F |
1413  */
1414 
1415  WM.Add(1, 1, Mat3x3(MatCross, TmpDir));
1416  WM.Add(4, 1, Mat3x3(MatCrossCross, Omega, TmpDir));
1417  WM.Add(4, 4, Mat3x3(MatCross, TmpDir));
1418 
1419  return WorkMat;
1420 }
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
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
TplDriveOwner< Vec3 > f
const StructNode * pNode
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
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

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

Implements SubjectToInitialAssembly.

Definition at line 1425 of file strforce.cc.

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

1427 {
1428  DEBUGCOUT("Entering FollowerCouple::InitialAssRes()" << std::endl);
1429 
1430  WorkVec.ResizeReset(6);
1431 
1432  /* Indici delle incognite del nodo */
1433  integer iFirstPositionIndex = pNode->iGetFirstPositionIndex() + 3;
1434  integer iFirstVelocityIndex = iFirstPositionIndex + 6;
1435  for (integer iCnt = 1; iCnt <= 3; iCnt++) {
1436  WorkVec.PutRowIndex(iCnt, iFirstPositionIndex + iCnt);
1437  WorkVec.PutRowIndex(6 + iCnt, iFirstVelocityIndex + iCnt);
1438  }
1439 
1440  /* Dati */
1441  const Mat3x3& R(pNode->GetRCurr());
1442  Vec3 TmpDir(R*f.Get());
1443  const Vec3& Omega(pNode->GetWCurr());
1444 
1445  WorkVec.Add(1, TmpDir);
1446  WorkVec.Add(4, Omega.Cross(TmpDir));
1447 
1448  return WorkVec;
1449 }
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
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
long int integer
Definition: colamd.c:51
Mat3x3 R

Here is the call graph for this function:

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

Implements SubjectToInitialAssembly.

Definition at line 1213 of file strforce.cc.

1216 {
1217  *piNumRows = 6;
1218  *piNumCols = 6;
1219 }
void FollowerCouple::Output ( OutputHandler OH) const
virtual

Reimplemented from ToBeOutput.

Definition at line 1353 of file strforce.cc.

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

1354 {
1355  if (bToBeOutput()) {
1356 #ifdef USE_NETCDF
1357  if (OH.UseNetCDF(OutputHandler::FORCES)) {
1358  if (fToBeOutput() & OUTPUT_REL) {
1359  Var_F->put_rec(f.Get().pGetVec(), OH.GetCurrentStep());
1360  } else {
1361  Var_F->put_rec((pNode->GetRCurr()*f.Get()).pGetVec(), OH.GetCurrentStep());
1362  }
1363  }
1364 #endif // USE_NETCDF
1365 
1366  if (OH.UseText(OutputHandler::FORCES)) {
1367  OH.Forces()
1368  << GetLabel()
1369  << " " << pNode->GetLabel();
1370  if (fToBeOutput() & OUTPUT_REL) {
1371  OH.Forces()
1372  << " " << f.Get()
1373  << std::endl;
1374 
1375  } else {
1376  OH.Forces()
1377  << " " << pNode->GetRCurr()*f.Get()
1378  << std::endl;
1379  }
1380  }
1381  }
1382 }
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 doublereal * pGetVec(void) const
Definition: matvec3.h:192
virtual flag fToBeOutput(void) const
Definition: output.cc:884
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 FollowerCouple::OutputPrepare ( OutputHandler OH)
virtual

Reimplemented from ToBeOutput.

Definition at line 1324 of file strforce.cc.

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

1325 {
1326  if (bToBeOutput()) {
1327 #ifdef USE_NETCDF
1328  if (OH.UseNetCDF(OutputHandler::FORCES)) {
1330 
1331  std::ostringstream os;
1332  os << "elem.couple." << GetLabel();
1333  (void)OH.CreateVar(os.str(), "follower");
1334 
1335  // joint sub-data
1336  os << '.';
1337 
1339  Var_F = OH.CreateVar<Vec3>(os.str() + "m", "Nm",
1340  "local couple components (x, y, z)");
1341 
1342  } else {
1343  Var_F = OH.CreateVar<Vec3>(os.str() + "M", "Nm",
1344  "global couple components (x, y, z)");
1345  }
1346  }
1347 #endif // USE_NETCDF
1348  }
1349 }
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 & FollowerCouple::Restart ( std::ostream &  out) const
virtual

Implements Elem.

Definition at line 1224 of file strforce.cc.

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

1225 {
1226  out << " couple: " << GetLabel() << ", follower, "
1227  << pNode->GetLabel() << ", ";
1228  return f.pGetDriveCaller()->Restart(out) << ';' << std::endl;
1229 }
TplDriveCaller< T > * pGetDriveCaller(void) const
Definition: tpldrive.h:105
TplDriveOwner< Vec3 > f
const StructNode * pNode
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 FollowerCouple::WorkSpaceDim ( integer piNumRows,
integer piNumCols 
) const
virtual

Implements Elem.

Definition at line 1205 of file strforce.cc.

Referenced by AssJac(), and AssRes().

1206 {
1207  *piNumRows = 3;
1208  *piNumCols = 3;
1209 }

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