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

#include <strforce_impl.h>

Inheritance diagram for AbsoluteInternalDispForce:
Collaboration diagram for AbsoluteInternalDispForce:

Public Member Functions

 AbsoluteInternalDispForce (unsigned int uL, const StructDispNode *pN1, const StructDispNode *pN2, const TplDriveCaller< Vec3 > *pDC, flag fOut)
 
 ~AbsoluteInternalDispForce (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)
 
virtual void GetConnectedNodes (std::vector< const Node * > &connectedNodes) const
 
- 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 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)
 

Protected Attributes

TplDriveOwner< Vec3f
 
const StructDispNodepNode1
 
const StructDispNodepNode2
 
- Protected Attributes inherited from WithLabel
unsigned int uLabel
 
std::string sName
 
- Protected Attributes inherited from ToBeOutput
flag fOutput
 

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
}
 

Detailed Description

Definition at line 107 of file strforce_impl.h.

Constructor & Destructor Documentation

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

Definition at line 214 of file strforce.cc.

References NO_OP.

219 : Elem(uL, fOut),
220 Force(uL, fOut),
221 f(pDC),
222 pNode1(pN1),
223 pNode2(pN2)
224 #ifdef USE_NETCDF
225 ,
226 Var_F(0)
227 #endif // USE_NETCDF
228 {
229  NO_OP;
230 }
Force(unsigned int uL, flag fOut)
Definition: force.h:87
#define NO_OP
Definition: myassert.h:74
const StructDispNode * pNode2
TplDriveOwner< Vec3 > f
Elem(unsigned int uL, flag fOut)
Definition: elem.cc:41
const StructDispNode * pNode1
AbsoluteInternalDispForce::~AbsoluteInternalDispForce ( void  )

Definition at line 233 of file strforce.cc.

References NO_OP.

235 {
236  NO_OP;
237 }
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

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

Implements Elem.

Definition at line 268 of file strforce.cc.

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

Referenced by AssRes().

272 {
273  DEBUGCOUT("Entering AbsoluteDispForce::AssRes()" << std::endl);
274 
275  integer iNumRows;
276  integer iNumCols;
277  WorkSpaceDim(&iNumRows, &iNumCols);
278  WorkVec.ResizeReset(iNumRows);
279 
280  /* Indici delle incognite del nodo */
281  integer iFirstMomentumIndex1 = pNode1->iGetFirstMomentumIndex();
282  integer iFirstMomentumIndex2 = pNode2->iGetFirstMomentumIndex();
283  for (integer iCnt = 1; iCnt <= 3; iCnt++) {
284  WorkVec.PutRowIndex(iCnt, iFirstMomentumIndex1 + iCnt);
285  WorkVec.PutRowIndex(3 + iCnt, iFirstMomentumIndex2 + iCnt);
286  }
287 
288  Vec3 fTmp(f.Get());
289  WorkVec.Add(1, fTmp);
290  WorkVec.Sub(3 + 1, fTmp);
291 
292  return WorkVec;
293 }
Definition: matvec3.h:98
virtual void ResizeReset(integer)
Definition: vh.cc:55
void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: strforce.cc:240
virtual void Sub(integer iRow, const Vec3 &v)
Definition: vh.cc:78
const StructDispNode * pNode2
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
TplDriveOwner< Vec3 > f
long int integer
Definition: colamd.c:51
const StructDispNode * pNode1

Here is the call graph for this function:

SubVectorHandler & AbsoluteInternalDispForce::AssRes ( SubVectorHandler WorkVec,
const VectorHandler XCurr,
const VectorHandler XPrimeCurr,
const VectorHandler ,
InverseDynamics::Order  iOrder 
)
virtual

Reimplemented from Elem.

Definition at line 297 of file strforce.cc.

References AssRes(), and DEBUGCOUT.

302 {
303  DEBUGCOUT("Entering AbsoluteDispForce::AssRes()" << std::endl);
304 
305  return AssRes(WorkVec, 1., XCurr, XPrimeCurr);
306 }
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: strforce.cc:268
#define DEBUGCOUT(msg)
Definition: myassert.h:232

Here is the call graph for this function:

void AbsoluteInternalDispForce::GetConnectedNodes ( std::vector< const Node * > &  connectedNodes) const
virtual

Reimplemented from Elem.

Definition at line 385 of file strforce.cc.

References pNode1, and pNode2.

386 {
387  connectedNodes.resize(2);
388  connectedNodes[0] = pNode1;
389  connectedNodes[1] = pNode2;
390 }
const StructDispNode * pNode2
const StructDispNode * pNode1
virtual Force::Type AbsoluteInternalDispForce::GetForceType ( void  ) const
inlinevirtual

Implements Force.

Definition at line 126 of file strforce_impl.h.

References Force::ABSOLUTEINTERNALDISPFORCE.

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

Implements SubjectToInitialAssembly.

Definition at line 359 of file strforce.cc.

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

361 {
362  DEBUGCOUT("Entering AbsoluteDispForce::InitialAssRes()" << std::endl);
363 
364  integer iNumRows;
365  integer iNumCols;
366  InitialWorkSpaceDim(&iNumRows, &iNumCols);
367  WorkVec.ResizeReset(iNumRows);
368 
369  /* Indici delle incognite del nodo */
370  integer iFirstPositionIndex1 = pNode1->iGetFirstPositionIndex();
371  integer iFirstPositionIndex2 = pNode2->iGetFirstPositionIndex();
372  for (integer iCnt = 1; iCnt <= 3; iCnt++) {
373  WorkVec.PutRowIndex(iCnt, iFirstPositionIndex1 + iCnt);
374  WorkVec.PutRowIndex(3 + iCnt, iFirstPositionIndex2 + iCnt);
375  }
376 
377  Vec3 fTmp(f.Get());
378  WorkVec.Add(1, fTmp);
379  WorkVec.Sub(3 + 1, fTmp);
380 
381  return WorkVec;
382 }
Definition: matvec3.h:98
virtual void ResizeReset(integer)
Definition: vh.cc:55
virtual void Sub(integer iRow, const Vec3 &v)
Definition: vh.cc:78
const StructDispNode * pNode2
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
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: strforce.cc:247
TplDriveOwner< Vec3 > f
long int integer
Definition: colamd.c:51
const StructDispNode * pNode1

Here is the call graph for this function:

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

Implements SubjectToInitialAssembly.

Definition at line 247 of file strforce.cc.

Referenced by InitialAssRes().

250 {
251  *piNumRows = 6;
252  *piNumCols = 1;
253 }
void AbsoluteInternalDispForce::Output ( OutputHandler OH) const
virtual

Reimplemented from ToBeOutput.

Definition at line 330 of file strforce.cc.

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

331 {
332  if (bToBeOutput()) {
333 #ifdef USE_NETCDF
335  Var_F->put_rec(f.Get().pGetVec(), OH.GetCurrentStep());
336  }
337 #endif // USE_NETCDF
338 
339  if (OH.UseText(OutputHandler::FORCES)) {
340  Vec3 fTmp(f.Get());
341  OH.Forces()
342  << GetLabel()
343  << " " << pNode1->GetLabel()
344  << " " << fTmp
345  << " " << pNode1->GetXCurr()
346  << " " << pNode2->GetLabel()
347  << " " << -fTmp
348  << " " << pNode2->GetXCurr()
349  << std::endl;
350  }
351 
352  /* TODO: NetCDF */
353  }
354 }
virtual bool bToBeOutput(void) const
Definition: output.cc:890
Definition: matvec3.h:98
bool UseNetCDF(int out) const
Definition: output.cc:491
const StructDispNode * pNode2
long GetCurrentStep(void) const
Definition: output.h:116
T Get(const doublereal &dVar) const
Definition: tpldrive.h:109
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
const doublereal * pGetVec(void) const
Definition: matvec3.h:192
TplDriveOwner< Vec3 > f
unsigned int GetLabel(void) const
Definition: withlab.cc:62
const StructDispNode * pNode1
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 AbsoluteInternalDispForce::OutputPrepare ( OutputHandler OH)
virtual

Reimplemented from ToBeOutput.

Definition at line 309 of file strforce.cc.

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

310 {
311  if (bToBeOutput()) {
312 #ifdef USE_NETCDF
315 
316  std::ostringstream os;
317  os << "elem.force." << GetLabel();
318  (void)OH.CreateVar(os.str(), "internal absolute displacement");
319 
320  // joint sub-data
321  os << '.';
322  Var_F = OH.CreateVar<Vec3>(os.str() + "F", "N",
323  "force components (x, y, z)");
324  }
325 #endif // USE_NETCDF
326  }
327 }
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 & AbsoluteInternalDispForce::Restart ( std::ostream &  out) const
virtual

Implements Elem.

Definition at line 257 of file strforce.cc.

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

258 {
259  Force::Restart(out) << ", absolute internal displacement, "
260  << pNode1->GetLabel() << ", "
261  << pNode2->GetLabel() << ", ",
262  f.pGetDriveCaller()->Restart(out) << ';' << std::endl;
263  return out;
264 }
virtual std::ostream & Restart(std::ostream &out) const
Definition: force.cc:52
const StructDispNode * pNode2
TplDriveCaller< T > * pGetDriveCaller(void) const
Definition: tpldrive.h:105
virtual std::ostream & Restart(std::ostream &out) const =0
TplDriveOwner< Vec3 > f
unsigned int GetLabel(void) const
Definition: withlab.cc:62
const StructDispNode * pNode1

Here is the call graph for this function:

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

Implements Elem.

Definition at line 240 of file strforce.cc.

Referenced by AssRes().

241 {
242  *piNumRows = 6;
243  *piNumCols = 1;
244 }

Member Data Documentation

TplDriveOwner<Vec3> AbsoluteInternalDispForce::f
protected

Definition at line 109 of file strforce_impl.h.

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

const StructDispNode* AbsoluteInternalDispForce::pNode1
protected

Definition at line 110 of file strforce_impl.h.

Referenced by AssRes(), GetConnectedNodes(), InitialAssRes(), Output(), and Restart().

const StructDispNode* AbsoluteInternalDispForce::pNode2
protected

Definition at line 111 of file strforce_impl.h.

Referenced by AssRes(), GetConnectedNodes(), InitialAssRes(), Output(), and Restart().


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