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

#include <strforce_impl.h>

Inheritance diagram for AbsoluteInternalCouple:
Collaboration diagram for AbsoluteInternalCouple:

Public Member Functions

 AbsoluteInternalCouple (unsigned int uL, const StructNode *pN1, const StructNode *pN2, const TplDriveCaller< Vec3 > *pDC, flag fOut)
 
 ~AbsoluteInternalCouple (void)
 
virtual Force::Type GetForceType (void) const
 
virtual std::ostream & Restart (std::ostream &out) const
 
void WorkSpaceDim (integer *piNumRows, integer *piNumCols) const
 
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 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 VariableSubMatrixHandlerAssJac (VariableSubMatrixHandler &WorkMat, doublereal, const VectorHandler &, const VectorHandler &)
 
virtual unsigned int iGetInitialNumDof (void) const
 
virtual VariableSubMatrixHandlerInitialAssJac (VariableSubMatrixHandler &WorkMat, const VectorHandler &)
 
- 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 637 of file strforce_impl.h.

Constructor & Destructor Documentation

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

Definition at line 2226 of file strforce.cc.

References NO_OP.

2230 : Elem(uL, fOut),
2231 StructuralInternalForce(uL, pN1, pN2, pDC, fOut)
2232 {
2233  NO_OP;
2234 }
#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
AbsoluteInternalCouple::~AbsoluteInternalCouple ( void  )

Definition at line 2237 of file strforce.cc.

References NO_OP.

2238 {
2239  NO_OP;
2240 }
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

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

Implements Elem.

Definition at line 2275 of file strforce.cc.

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

2279 {
2280  DEBUGCOUT("Entering AbsoluteInternalCouple::AssRes()" << std::endl);
2281 
2282  integer iNumRows;
2283  integer iNumCols;
2284  WorkSpaceDim(&iNumRows, &iNumCols);
2285  WorkVec.ResizeReset(iNumRows);
2286 
2287  /* Indici delle incognite del nodo */
2288  integer iFirstMomentumIndex1 = pNode1->iGetFirstMomentumIndex() + 3;
2289  integer iFirstMomentumIndex2 = pNode2->iGetFirstMomentumIndex() + 3;
2290  for (integer iCnt = 1; iCnt <= 3; iCnt++) {
2291  WorkVec.PutRowIndex(iCnt, iFirstMomentumIndex1 + iCnt);
2292  WorkVec.PutRowIndex(3 + iCnt, iFirstMomentumIndex2 + iCnt);
2293  }
2294 
2295  /* Dati */
2296  Vec3 F(f.Get());
2297 
2298  WorkVec.Add(1, F);
2299  WorkVec.Sub(4, F);
2300 
2301  return WorkVec;
2302 }
TplDriveOwner< Vec3 > f
Definition: matvec3.h:98
virtual void ResizeReset(integer)
Definition: vh.cc:55
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
void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: strforce.cc:2243
const StructNode * pNode2
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

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

Reimplemented from Elem.

Definition at line 2306 of file strforce.cc.

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

2311 {
2312  DEBUGCOUT("Entering AbsoluteInternalCouple::AssRes()" << std::endl);
2313 
2314  integer iNumRows;
2315  integer iNumCols;
2316  WorkSpaceDim(&iNumRows, &iNumCols);
2317  WorkVec.ResizeReset(iNumRows);
2318 
2319  /* Indici delle incognite del nodo */
2320  integer iFirstMomentumIndex1 = pNode1->iGetFirstPositionIndex() + 3;
2321  integer iFirstMomentumIndex2 = pNode2->iGetFirstPositionIndex() + 3;
2322  for (integer iCnt = 1; iCnt <= 3; iCnt++) {
2323  WorkVec.PutRowIndex(iCnt, iFirstMomentumIndex1 + iCnt);
2324  WorkVec.PutRowIndex(3 + iCnt, iFirstMomentumIndex2 + iCnt);
2325  }
2326 
2327  /* Dati */
2328  Vec3 F(f.Get());
2329 
2330  WorkVec.Add(1, F);
2331  WorkVec.Sub(4, F);
2332 
2333  return WorkVec;
2334 }
TplDriveOwner< Vec3 > f
Definition: matvec3.h:98
virtual void ResizeReset(integer)
Definition: vh.cc:55
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
void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: strforce.cc:2243
const StructNode * pNode2
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

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

Implements Force.

Definition at line 649 of file strforce_impl.h.

References Force::ABSOLUTEINTERNALCOUPLE.

649  {
651  };
SubVectorHandler & AbsoluteInternalCouple::InitialAssRes ( SubVectorHandler WorkVec,
const VectorHandler XCurr 
)
virtual

Implements SubjectToInitialAssembly.

Definition at line 2385 of file strforce.cc.

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

2387 {
2388  DEBUGCOUT("Entering AbsoluteInternalCouple::InitialAssRes()" << std::endl);
2389 
2390  WorkVec.ResizeReset(6);
2391 
2392  /* Indici delle incognite del nodo */
2393  integer iFirstPositionIndex1 = pNode1->iGetFirstPositionIndex() + 3;
2394  integer iFirstPositionIndex2 = pNode2->iGetFirstPositionIndex() + 3;
2395  for (integer iCnt = 1; iCnt <= 3; iCnt++) {
2396  WorkVec.PutRowIndex(iCnt, iFirstPositionIndex1 + iCnt);
2397  WorkVec.PutRowIndex(3 + iCnt, iFirstPositionIndex2 + iCnt);
2398  }
2399 
2400  /* Dati */
2401  Vec3 F(f.Get());
2402 
2403  WorkVec.Add(1, F);
2404  WorkVec.Sub(4, F);
2405 
2406  return WorkVec;
2407 }
TplDriveOwner< Vec3 > f
Definition: matvec3.h:98
virtual void ResizeReset(integer)
Definition: vh.cc:55
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:

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

Implements SubjectToInitialAssembly.

Definition at line 2253 of file strforce.cc.

2256 {
2257  *piNumRows = 6;
2258  *piNumCols = 1;
2259 }
void AbsoluteInternalCouple::Output ( OutputHandler OH) const
virtual

Reimplemented from ToBeOutput.

Definition at line 2358 of file strforce.cc.

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

2359 {
2360  if (bToBeOutput()) {
2361 #ifdef USE_NETCDF
2362  if (OH.UseNetCDF(OutputHandler::FORCES)) {
2363  Var_F->put_rec(f.Get().pGetVec(), OH.GetCurrentStep());
2364  }
2365 #endif // USE_NETCDF
2366 
2367  if (OH.UseText(OutputHandler::FORCES)) {
2368  Vec3 F(f.Get());
2369  OH.Forces()
2370  << GetLabel()
2371  << " " << pNode1->GetLabel()
2372  << " " << F
2373  << " " << pNode2->GetLabel()
2374  << " " << -F
2375  << std::endl;
2376  }
2377 
2378  /* TODO: NetCDF */
2379  }
2380 }
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
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
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 AbsoluteInternalCouple::OutputPrepare ( OutputHandler OH)
virtual

Reimplemented from ToBeOutput.

Definition at line 2337 of file strforce.cc.

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

2338 {
2339  if (bToBeOutput()) {
2340 #ifdef USE_NETCDF
2341  if (OH.UseNetCDF(OutputHandler::FORCES)) {
2343 
2344  std::ostringstream os;
2345  os << "elem.couple." << GetLabel();
2346  (void)OH.CreateVar(os.str(), "internal absolute");
2347 
2348  // joint sub-data
2349  os << '.';
2350  Var_F = OH.CreateVar<Vec3>(os.str() + "M", "Nm",
2351  "global couple components (x, y, z)");
2352  }
2353 #endif // USE_NETCDF
2354  }
2355 }
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 & AbsoluteInternalCouple::Restart ( std::ostream &  out) const
virtual

Implements Elem.

Definition at line 2264 of file strforce.cc.

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

2265 {
2266  out << " couple: " << GetLabel() << ", absolute internal, "
2267  << pNode1->GetLabel() << ", "
2268  << pNode2->GetLabel() << ", ";
2269  return f.pGetDriveCaller()->Restart(out) << ';' << std::endl;
2270 }
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 AbsoluteInternalCouple::WorkSpaceDim ( integer piNumRows,
integer piNumCols 
) const
virtual

Implements Elem.

Definition at line 2243 of file strforce.cc.

Referenced by AssRes().

2246 {
2247  *piNumRows = 6;
2248  *piNumCols = 1;
2249 }

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