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

#include <body.h>

Inheritance diagram for StaticBody:
Collaboration diagram for StaticBody:

Public Member Functions

 StaticBody (unsigned int uL, const StaticStructNode *pNode, doublereal dMass, const Vec3 &Xgc, const Mat3x3 &J, flag fOut)
 
virtual ~StaticBody (void)
 
void WorkSpaceDim (integer *piNumRows, integer *piNumCols) const
 
virtual VariableSubMatrixHandlerAssJac (VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
void AssMats (VariableSubMatrixHandler &WorkMatA, VariableSubMatrixHandler &WorkMatB, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual SubVectorHandlerAssRes (SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual bool bInverseDynamics (void) const
 
virtual SubVectorHandlerAssRes (SubVectorHandler &WorkVec, const VectorHandler &, const VectorHandler &, const VectorHandler &, InverseDynamics::Order iOrder=InverseDynamics::INVERSE_DYNAMICS)
 
virtual void InitialWorkSpaceDim (integer *piNumRows, integer *piNumCols) const
 
virtual VariableSubMatrixHandlerInitialAssJac (VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
 
virtual SubVectorHandlerInitialAssRes (SubVectorHandler &WorkVec, const VectorHandler &XCurr)
 
virtual void SetValue (DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
 
- 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
 
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 HintParseHint (DataManager *pDM, const char *s) const
 
virtual void BeforePredict (VectorHandler &, VectorHandler &, VectorHandler &, VectorHandler &) const
 
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 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 OutputPrepare (OutputHandler &OH)
 
virtual void Output (OutputHandler &OH) const
 
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 Body
 Body (unsigned int uL, const StructNode *pNode, doublereal dMassTmp, const Vec3 &XgcTmp, const Mat3x3 &JTmp, flag fOut)
 
virtual ~Body (void)
 
virtual std::ostream & Restart (std::ostream &out) const
 
doublereal dGetM (void) const
 
Vec3 GetS (void) const
 
Mat3x3 GetJ (void) const
 
const StructNodepGetNode (void) const
 
virtual Elem::Type GetElemType (void) const
 
virtual unsigned int iGetInitialNumDof (void) const
 
virtual void AfterPredict (VectorHandler &X, VectorHandler &XP)
 
virtual unsigned int iGetNumPrivData (void) const
 
virtual unsigned int iGetPrivDataIdx (const char *s) const
 
virtual doublereal dGetPrivData (unsigned int i) const
 
virtual void GetConnectedNodes (std::vector< const Node * > &connectedNodes) const
 
- Public Member Functions inherited from ElemGravityOwner
 ElemGravityOwner (unsigned int uL, flag fOut)
 
virtual ~ElemGravityOwner (void)
 
Vec3 GetS (void) const
 
Mat3x3 GetJ (void) const
 
Vec3 GetB (void) const
 
Vec3 GetG (void) const
 
- Public Member Functions inherited from GravityOwner
 GravityOwner (void)
 
virtual ~GravityOwner (void)
 
void PutGravity (const Gravity *pG)
 
virtual bool bGetGravity (const Vec3 &X, Vec3 &Acc) 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)
 

Private Member Functions

bool AssMats (FullSubMatrixHandler &WorkMatA, FullSubMatrixHandler &WorkMatB, doublereal dCoef)
 

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 }
 
- Protected Member Functions inherited from Body
Vec3 GetS_int (void) const
 
Mat3x3 GetJ_int (void) const
 
void AssVecRBK_int (SubVectorHandler &WorkVec)
 
void AssMatsRBK_int (FullSubMatrixHandler &WMA, FullSubMatrixHandler &WMB, const doublereal &dCoef, const Vec3 &Sc)
 
- Protected Member Functions inherited from ElemGravityOwner
virtual Vec3 GetB_int (void) const
 
virtual Vec3 GetG_int (void) const
 
- Protected Attributes inherited from WithLabel
unsigned int uLabel
 
std::string sName
 
- Protected Attributes inherited from ToBeOutput
flag fOutput
 
- Protected Attributes inherited from Body
const StructNodepNode
 
doublereal dMass
 
Vec3 Xgc
 
Vec3 S0
 
Mat3x3 J0
 
Vec3 STmp
 
Mat3x3 JTmp
 
- Protected Attributes inherited from GravityOwner
GravitypGravity
 

Detailed Description

Definition at line 473 of file body.h.

Constructor & Destructor Documentation

StaticBody::StaticBody ( unsigned int  uL,
const StaticStructNode pNode,
doublereal  dMass,
const Vec3 Xgc,
const Mat3x3 J,
flag  fOut 
)

Definition at line 1659 of file body.cc.

References NO_OP.

1665 : Elem(uL, fOut),
1666 Body(uL, pNode, dMass, Xgc, J, fOut)
1667 {
1668  NO_OP;
1669 }
#define NO_OP
Definition: myassert.h:74
doublereal dMass
Definition: body.h:274
Elem(unsigned int uL, flag fOut)
Definition: elem.cc:41
Body(unsigned int uL, const StructNode *pNode, doublereal dMassTmp, const Vec3 &XgcTmp, const Mat3x3 &JTmp, flag fOut)
Definition: body.cc:722
StaticBody::~StaticBody ( void  )
virtual

Definition at line 1673 of file body.cc.

References NO_OP.

1674 {
1675  NO_OP;
1676 }
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

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

Implements Elem.

Definition at line 1680 of file body.cc.

References AssMats(), DEBUGCOUTFNAME, StructDispNode::iGetFirstMomentumIndex(), StructDispNode::iGetFirstPositionIndex(), Body::pNode, FullSubMatrixHandler::PutColIndex(), FullSubMatrixHandler::PutRowIndex(), FullSubMatrixHandler::ResizeReset(), VariableSubMatrixHandler::SetFull(), and VariableSubMatrixHandler::SetNullMatrix().

1684 {
1685  DEBUGCOUTFNAME("StaticBody::AssJac");
1686 
1687  /* Casting di WorkMat */
1688  FullSubMatrixHandler& WM = WorkMat.SetFull();
1689 
1690  /* Dimensiona e resetta la matrice di lavoro */
1691  WM.ResizeReset(6, 6);
1692 
1693  /* Setta gli indici della matrice - le incognite sono ordinate come:
1694  * - posizione (3)
1695  * - parametri di rotazione (3)
1696  * - quantita' di moto (3)
1697  * - momento della quantita' di moto
1698  * e gli indici sono consecutivi. La funzione pGetFirstPositionIndex()
1699  * ritorna il valore del primo indice -1, in modo che l'indice i-esimo
1700  * e' dato da iGetFirstPositionIndex() + i */
1701  integer iFirstPositionIndex = pNode->iGetFirstPositionIndex();
1702  integer iFirstMomentumIndex = pNode->iGetFirstMomentumIndex();
1703  for (integer iCnt = 1; iCnt <= 6; iCnt++) {
1704  WM.PutRowIndex(iCnt, iFirstMomentumIndex + iCnt);
1705  WM.PutColIndex(iCnt, iFirstPositionIndex + iCnt);
1706  }
1707 
1708  if (AssMats(WM, WM, dCoef)) {
1709  WorkMat.SetNullMatrix();
1710  }
1711 
1712  return WorkMat;
1713 }
void PutColIndex(integer iSubCol, integer iCol)
Definition: submat.h:325
#define DEBUGCOUTFNAME(fname)
Definition: myassert.h:256
FullSubMatrixHandler & SetFull(void)
Definition: submat.h:1168
bool AssMats(FullSubMatrixHandler &WorkMatA, FullSubMatrixHandler &WorkMatB, doublereal dCoef)
Definition: body.cc:1758
void SetNullMatrix(void)
Definition: submat.h:1159
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
const StructNode * pNode
Definition: body.h:273

Here is the call graph for this function:

bool StaticBody::AssMats ( FullSubMatrixHandler WorkMatA,
FullSubMatrixHandler WorkMatB,
doublereal  dCoef 
)
private

Definition at line 1758 of file body.cc.

References FullSubMatrixHandler::Add(), Body::AssMatsRBK_int(), GravityOwner::bGetGravity(), DEBUGCOUTFNAME, StructDispNode::GetXCurr(), MatCrossCross, StructDispNode::pGetRBK(), Body::pNode, Body::STmp, and Zero3.

Referenced by AssJac(), and AssMats().

1761 {
1762  DEBUGCOUTFNAME("StaticBody::AssMats");
1763 
1764  /* Se e' definita l'accelerazione di gravita',
1765  * la aggiunge (solo al residuo) */
1766  Vec3 Acceleration(Zero3);
1767  bool g = GravityOwner::bGetGravity(pNode->GetXCurr(), Acceleration);
1768 
1769  /* TODO: reference */
1770  Vec3 W(Zero3);
1771 
1772  const RigidBodyKinematics *pRBK = pNode->pGetRBK();
1773 
1774  if (!g && !pRBK) {
1775  /* Caller will set WMA & WMB to null matrix */
1776  return true;
1777  }
1778 
1779  Vec3 Sc(STmp*dCoef);
1780 
1781  if (g) {
1782  WMA.Add(3 + 1, 3 + 1, Mat3x3(MatCrossCross, Acceleration, Sc));
1783  }
1784 
1785  if (pRBK) {
1786  AssMatsRBK_int(WMA, WMB, dCoef, Sc);
1787  }
1788 
1789  return false;
1790 }
const Vec3 Zero3(0., 0., 0.)
Definition: matvec3.h:98
#define DEBUGCOUTFNAME(fname)
Definition: myassert.h:256
Vec3 STmp
Definition: body.h:279
virtual bool bGetGravity(const Vec3 &X, Vec3 &Acc) const
Definition: gravity.cc:208
void AssMatsRBK_int(FullSubMatrixHandler &WMA, FullSubMatrixHandler &WMB, const doublereal &dCoef, const Vec3 &Sc)
Definition: body.cc:928
const RigidBodyKinematics * pGetRBK(void) const
Definition: strnode.cc:152
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
const MatCrossCross_Manip MatCrossCross
Definition: matvec3.cc:640
const StructNode * pNode
Definition: body.h:273

Here is the call graph for this function:

void StaticBody::AssMats ( VariableSubMatrixHandler WorkMatA,
VariableSubMatrixHandler WorkMatB,
const VectorHandler XCurr,
const VectorHandler XPrimeCurr 
)
virtual

Reimplemented from Elem.

Definition at line 1717 of file body.cc.

References AssMats(), DEBUGCOUTFNAME, StructDispNode::iGetFirstMomentumIndex(), StructDispNode::iGetFirstPositionIndex(), Body::pNode, FullSubMatrixHandler::PutColIndex(), FullSubMatrixHandler::PutRowIndex(), FullSubMatrixHandler::ResizeReset(), VariableSubMatrixHandler::SetFull(), and VariableSubMatrixHandler::SetNullMatrix().

1721 {
1722  DEBUGCOUTFNAME("StaticBody::AssMats");
1723 
1724  /* Casting di WorkMat */
1725  FullSubMatrixHandler& WMA = WorkMatA.SetFull();
1726  FullSubMatrixHandler& WMB = WorkMatB.SetFull();
1727 
1728  /* Dimensiona e resetta la matrice di lavoro */
1729  WMA.ResizeReset(6, 6);
1730  WMB.ResizeReset(6, 6);
1731 
1732  /* Setta gli indici della matrice - le incognite sono ordinate come:
1733  * - posizione (3)
1734  * - parametri di rotazione (3)
1735  * - quantita' di moto (3)
1736  * - momento della quantita' di moto
1737  * e gli indici sono consecutivi. La funzione pGetFirstPositionIndex()
1738  * ritorna il valore del primo indice -1, in modo che l'indice i-esimo
1739  * e' dato da iGetFirstPositionIndex() + i */
1740  integer iFirstPositionIndex = pNode->iGetFirstPositionIndex();
1741  integer iFirstMomentumIndex = pNode->iGetFirstMomentumIndex();
1742  for (integer iCnt = 1; iCnt <= 6; iCnt++) {
1743  WMA.PutRowIndex(iCnt, iFirstMomentumIndex + iCnt);
1744  WMA.PutColIndex(iCnt, iFirstPositionIndex + iCnt);
1745 
1746  WMB.PutRowIndex(iCnt, iFirstMomentumIndex + iCnt);
1747  WMB.PutColIndex(iCnt, iFirstPositionIndex + iCnt);
1748  }
1749 
1750  if (AssMats(WMA, WMB, 1.)) {
1751  WorkMatA.SetNullMatrix();
1752  WorkMatB.SetNullMatrix();
1753  }
1754 }
void PutColIndex(integer iSubCol, integer iCol)
Definition: submat.h:325
#define DEBUGCOUTFNAME(fname)
Definition: myassert.h:256
FullSubMatrixHandler & SetFull(void)
Definition: submat.h:1168
bool AssMats(FullSubMatrixHandler &WorkMatA, FullSubMatrixHandler &WorkMatB, doublereal dCoef)
Definition: body.cc:1758
void SetNullMatrix(void)
Definition: submat.h:1159
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
const StructNode * pNode
Definition: body.h:273

Here is the call graph for this function:

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

Implements Elem.

Definition at line 1794 of file body.cc.

References VectorHandler::Add(), Body::AssVecRBK_int(), GravityOwner::bGetGravity(), DEBUGCOUTFNAME, Body::dMass, StructNode::GetRCurr(), StructDispNode::GetXCurr(), StructDispNode::iGetFirstMomentumIndex(), Body::J0, Body::JTmp, Mat3x3::MulMT(), StructDispNode::pGetRBK(), Body::pNode, SubVectorHandler::PutRowIndex(), R, VectorHandler::Resize(), VectorHandler::ResizeReset(), Body::S0, Body::STmp, and Zero3.

1798 {
1799  DEBUGCOUTFNAME("StaticBody::AssRes");
1800 
1801  /* Se e' definita l'accelerazione di gravita',
1802  * la aggiunge (solo al residuo) */
1803  Vec3 Acceleration(Zero3);
1804  bool g = GravityOwner::bGetGravity(pNode->GetXCurr(), Acceleration);
1805 
1806  /* W is uninitialized because its use is conditioned by w */
1807  const RigidBodyKinematics *pRBK = pNode->pGetRBK();
1808 
1809  if (!g && !pRBK) {
1810  WorkVec.Resize(0);
1811  return WorkVec;
1812  }
1813 
1814  WorkVec.ResizeReset(6);
1815 
1816  integer iFirstMomentumIndex = pNode->iGetFirstMomentumIndex();
1817  for (integer iCnt = 1; iCnt <= 6; iCnt++) {
1818  WorkVec.PutRowIndex(iCnt, iFirstMomentumIndex + iCnt);
1819  }
1820 
1821  /* Aggiorna i suoi dati (saranno pronti anche per AssJac) */
1822  const Mat3x3& R(pNode->GetRCurr());
1823  STmp = R*S0;
1824  JTmp = R*J0.MulMT(R);
1825 
1826  if (g) {
1827  WorkVec.Add(1, Acceleration*dMass);
1828  WorkVec.Add(3 + 1, STmp.Cross(Acceleration));
1829  }
1830 
1831  if (pRBK) {
1832  AssVecRBK_int(WorkVec);
1833  }
1834 
1835  return WorkVec;
1836 }
const Vec3 Zero3(0., 0., 0.)
Definition: matvec3.h:98
#define DEBUGCOUTFNAME(fname)
Definition: myassert.h:256
virtual void ResizeReset(integer)
Definition: vh.cc:55
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
Vec3 STmp
Definition: body.h:279
virtual bool bGetGravity(const Vec3 &X, Vec3 &Acc) const
Definition: gravity.cc:208
void AssVecRBK_int(SubVectorHandler &WorkVec)
Definition: body.cc:888
Mat3x3 J0
Definition: body.h:277
virtual void PutRowIndex(integer iSubRow, integer iRow)=0
virtual integer iGetFirstMomentumIndex(void) const =0
doublereal dMass
Definition: body.h:274
const RigidBodyKinematics * pGetRBK(void) const
Definition: strnode.cc:152
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
virtual void Add(integer iRow, const Vec3 &v)
Definition: vh.cc:63
Mat3x3 JTmp
Definition: body.h:280
Vec3 S0
Definition: body.h:276
Mat3x3 MulMT(const Mat3x3 &m) const
Definition: matvec3.cc:444
long int integer
Definition: colamd.c:51
const StructNode * pNode
Definition: body.h:273
virtual void Resize(integer iNewSize)=0
Mat3x3 R

Here is the call graph for this function:

SubVectorHandler & StaticBody::AssRes ( SubVectorHandler WorkVec,
const VectorHandler ,
const VectorHandler ,
const VectorHandler ,
InverseDynamics::Order  iOrder = InverseDynamics::INVERSE_DYNAMICS 
)
virtual

Reimplemented from Elem.

Definition at line 1848 of file body.cc.

References ASSERT, GravityOwner::bGetGravity(), Vec3::Cross(), DEBUGCOUTFNAME, Body::dMass, StructNode::GetRCurr(), StructNode::GetWCurr(), StructNode::GetWPCurr(), StructDispNode::GetXCurr(), StructDispNode::GetXPPCurr(), StructDispNode::iGetFirstPositionIndex(), InverseDynamics::INVERSE_DYNAMICS, Body::J0, Body::JTmp, Mat3x3::MulMT(), Body::pNode, SubVectorHandler::PutRowIndex(), R, VectorHandler::ResizeReset(), Body::S0, Body::STmp, VectorHandler::Sub(), and Body::Xgc.

1853 {
1854  DEBUGCOUTFNAME("StaticBody::AssRes");
1855 
1857 
1858  /* Se e' definita l'accelerazione di gravita', la aggiunge */
1859  Vec3 GravityAcceleration;
1861  GravityAcceleration);
1862 
1863  WorkVec.ResizeReset(6);
1864 
1865  integer iFirstPositionIndex = pNode->iGetFirstPositionIndex();
1866  for (integer iCnt = 1; iCnt <= 6; iCnt++) {
1867  WorkVec.PutRowIndex(iCnt, iFirstPositionIndex + iCnt);
1868  }
1869 
1870  const Mat3x3& R(pNode->GetRCurr());
1871  Vec3 XgcTmp = R*Xgc;
1872  STmp = R*S0;
1873  JTmp = R*J0.MulMT(R);
1874 
1875  Vec3 Acceleration = pNode->GetXPPCurr()
1876  + pNode->GetWPCurr().Cross(XgcTmp)
1877  + pNode->GetWCurr().Cross(pNode->GetWCurr().Cross(XgcTmp));
1878  if (g) {
1879  Acceleration -= GravityAcceleration;
1880  }
1881 
1882  WorkVec.Sub(1, Acceleration*dMass);
1883 
1884  Vec3 M = JTmp*pNode->GetWPCurr()
1885  + STmp.Cross(pNode->GetXPPCurr())
1886  + STmp.Cross(pNode->GetWCurr().Cross(pNode->GetWCurr().Cross(XgcTmp)));
1887  if (g) {
1888  M -= STmp.Cross(GravityAcceleration);
1889  }
1890 
1891  WorkVec.Sub(4, M);
1892 
1893  return WorkVec;
1894 }
Vec3 Cross(const Vec3 &v) const
Definition: matvec3.h:218
Definition: matvec3.h:98
#define DEBUGCOUTFNAME(fname)
Definition: myassert.h:256
virtual void ResizeReset(integer)
Definition: vh.cc:55
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
Vec3 STmp
Definition: body.h:279
virtual void Sub(integer iRow, const Vec3 &v)
Definition: vh.cc:78
virtual bool bGetGravity(const Vec3 &X, Vec3 &Acc) const
Definition: gravity.cc:208
Mat3x3 J0
Definition: body.h:277
virtual void PutRowIndex(integer iSubRow, integer iRow)=0
virtual integer iGetFirstPositionIndex(void) const
Definition: strnode.h:452
doublereal dMass
Definition: body.h:274
virtual const Vec3 & GetWCurr(void) const
Definition: strnode.h:1030
virtual const Vec3 & GetWPCurr(void) const
Definition: strnode.h:1042
#define ASSERT(expression)
Definition: colamd.c:977
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
Mat3x3 JTmp
Definition: body.h:280
Vec3 S0
Definition: body.h:276
Mat3x3 MulMT(const Mat3x3 &m) const
Definition: matvec3.cc:444
virtual const Vec3 & GetXPPCurr(void) const
Definition: strnode.h:334
long int integer
Definition: colamd.c:51
const StructNode * pNode
Definition: body.h:273
Vec3 Xgc
Definition: body.h:275
Mat3x3 R

Here is the call graph for this function:

bool StaticBody::bInverseDynamics ( void  ) const
virtual

Reimplemented from Elem.

Definition at line 1841 of file body.cc.

1842 {
1843  return true;
1844 }
VariableSubMatrixHandler & StaticBody::InitialAssJac ( VariableSubMatrixHandler WorkMat,
const VectorHandler XCurr 
)
virtual

Implements SubjectToInitialAssembly.

Definition at line 1899 of file body.cc.

References DEBUGCOUTFNAME, and VariableSubMatrixHandler::SetNullMatrix().

1901 {
1902  DEBUGCOUTFNAME("StaticBody::InitialAssJac");
1903 
1904  WorkMat.SetNullMatrix();
1905 
1906  return WorkMat;
1907 }
#define DEBUGCOUTFNAME(fname)
Definition: myassert.h:256
void SetNullMatrix(void)
Definition: submat.h:1159

Here is the call graph for this function:

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

Implements SubjectToInitialAssembly.

Definition at line 1912 of file body.cc.

References DEBUGCOUTFNAME, and VectorHandler::ResizeReset().

1914 {
1915  DEBUGCOUTFNAME("StaticBody::InitialAssRes");
1916 
1917  WorkVec.ResizeReset(0);
1918 
1919  return WorkVec;
1920 }
#define DEBUGCOUTFNAME(fname)
Definition: myassert.h:256
virtual void ResizeReset(integer)
Definition: vh.cc:55

Here is the call graph for this function:

virtual void StaticBody::InitialWorkSpaceDim ( integer piNumRows,
integer piNumCols 
) const
inlinevirtual

Implements SubjectToInitialAssembly.

Definition at line 529 of file body.h.

529  {
530  *piNumRows = 6;
531  *piNumCols = 6;
532  };
void StaticBody::SetValue ( DataManager pDM,
VectorHandler X,
VectorHandler XP,
SimulationEntity::Hints ph = 0 
)
virtual

Reimplemented from SimulationEntity.

Definition at line 1925 of file body.cc.

References NO_OP.

1928 {
1929  NO_OP;
1930 }
#define NO_OP
Definition: myassert.h:74
void StaticBody::WorkSpaceDim ( integer piNumRows,
integer piNumCols 
) const
inlinevirtual

Implements Elem.

Definition at line 490 of file body.h.

490  {
491  *piNumRows = 6;
492  *piNumCols = 6;
493  };

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