41 #ifdef USE_MULTITHREAD
128 virtual integer iGetInitialFirstIndexPrime()
const=0;
171 virtual std::ostream&
Restart(std::ostream& out)
const;
173 virtual std::ostream&
DescribeDof(std::ostream& out,
174 const char *prefix =
"",
175 bool bInitial =
false)
const;
177 virtual void DescribeDof(std::vector<std::string>& desc,
178 bool bInitial =
false,
181 virtual std::ostream&
DescribeEq(std::ostream& out,
182 const char *prefix =
"",
183 bool bInitial =
false)
const;
185 virtual void DescribeEq(std::vector<std::string>& desc,
186 bool bInitial =
false,
200 unsigned int iDof,
unsigned int iOrder = 0);
216 template <grad::index_type N_SIZE>
221 template <grad::index_type N_SIZE>
346 template <grad::index_type N_SIZE>
350 using namespace grad;
372 MapVectorBase::GLOBAL,
384 template <grad::index_type N_SIZE>
388 using namespace grad;
395 iFirstDofIndex = iGetInitialFirstIndexPrime();
413 MapVectorBase::GLOBAL,
487 virtual inline integer iGetInitialFirstIndexPrime()
const;
519 virtual inline unsigned int iGetNumDof(
void)
const;
521 virtual std::ostream&
DescribeDof(std::ostream& out,
522 const char *prefix =
"",
523 bool bInitial =
false)
const;
525 virtual void DescribeDof(std::vector<std::string>& desc,
526 bool bInitial =
false,
529 virtual std::ostream&
DescribeEq(std::ostream& out,
530 const char *prefix =
"",
531 bool bInitial =
false)
const;
533 virtual void DescribeEq(std::vector<std::string>& desc,
534 bool bInitial =
false,
544 virtual void AddInertia(
const doublereal& dm)
const;
547 virtual const Vec3& GetBCurr(
void)
const;
548 virtual const Vec3& GetBPCurr(
void)
const;
570 unsigned int iDof,
unsigned int iOrder = 0);
590 return bComputeAccels;
609 DynamicStructDispNode::iGetInitialFirstIndexPrime()
const
635 virtual inline integer iGetInitialFirstIndexPrime()
const;
658 virtual inline unsigned int iGetNumDof(
void)
const;
681 StaticStructDispNode::iGetInitialFirstIndexPrime()
const
768 #ifdef USE_MULTITHREAD
769 mutable InUse gradInUse;
771 mutable bool bUpdateRotation;
778 template <
typename T>
779 inline void UpdateRotation(
const Mat3x3& RRef,
const Vec3& WRef,
const grad::Vector<T, 3>& g,
const grad::Vector<T, 3>& gP,
grad::Matrix<T, 3, 3>& RCurr,
grad::Vector<T, 3>& WCurr,
enum grad::FunctionCall func)
const;
813 virtual std::ostream&
Restart(std::ostream& out)
const;
815 virtual std::ostream&
DescribeDof(std::ostream& out,
816 const char *prefix =
"",
817 bool bInitial =
false)
const;
819 virtual void DescribeDof(std::vector<std::string>& desc,
820 bool bInitial =
false,
823 virtual std::ostream&
DescribeEq(std::ostream& out,
824 const char *prefix =
"",
825 bool bInitial =
false)
const;
827 virtual void DescribeEq(std::vector<std::string>& desc,
828 bool bInitial =
false,
845 unsigned int iDof,
unsigned int iOrder = 0);
855 virtual inline const Vec3& GetgRef(
void)
const;
856 virtual inline const Vec3& GetgCurr(
void)
const;
858 virtual inline const Vec3& GetgPRef(
void)
const;
859 virtual inline const Vec3& GetgPCurr(
void)
const;
861 virtual inline const Mat3x3& GetRPrev(
void)
const;
862 virtual inline const Mat3x3& GetRRef(
void)
const;
863 virtual inline const Mat3x3& GetRCurr(
void)
const;
865 virtual inline const Vec3& GetWPrev(
void)
const;
866 virtual inline const Vec3& GetWRef(
void)
const;
867 virtual inline const Vec3& GetWCurr(
void)
const;
869 virtual inline const Vec3& GetWPCurr(
void)
const;
870 virtual inline const Vec3& GetWPPrev(
void)
const;
875 template <grad::index_type N_SIZE>
880 template <grad::index_type N_SIZE>
885 template <grad::index_type N_SIZE>
890 template <grad::index_type N_SIZE>
894 virtual inline bool bOmegaRotates(
void)
const;
1053 template <grad::index_type N_SIZE>
1056 using namespace grad;
1079 MapVectorBase::GLOBAL,
1092 template <grad::index_type N_SIZE>
1095 using namespace grad;
1116 MapVectorBase::GLOBAL,
1127 template <grad::index_type N_SIZE>
1130 using namespace grad;
1132 UpdateRotation(dCoef, func);
1157 MapVectorBase::GLOBAL,
1172 template <grad::index_type N_SIZE>
1175 using namespace grad;
1177 UpdateRotation(dCoef, func);
1217 for (
int i = 1; i <= 3; ++i) {
1225 MapVectorBase::GLOBAL,
1272 virtual inline integer iGetInitialFirstIndexPrime()
const;
1305 virtual inline unsigned int iGetNumDof(
void)
const;
1307 virtual std::ostream&
DescribeDof(std::ostream& out,
1308 const char *prefix =
"",
1309 bool bInitial =
false)
const;
1311 virtual void DescribeDof(std::vector<std::string>& desc,
1312 bool bInitial =
false,
1315 virtual std::ostream&
DescribeEq(std::ostream& out,
1316 const char *prefix =
"",
1317 bool bInitial =
false)
const;
1319 virtual void DescribeEq(std::vector<std::string>& desc,
1320 bool bInitial =
false,
1334 virtual const Vec3& GetGCurr(
void)
const;
1335 virtual const Vec3& GetGPCurr(
void)
const;
1357 unsigned int iDof,
unsigned int iOrder = 0);
1380 DynamicStructNode::iGetInitialFirstIndexPrime()
const
1408 virtual inline integer iGetInitialFirstIndexPrime()
const;
1434 virtual inline unsigned int iGetNumDof(
void)
const;
1457 StaticStructNode::iGetInitialFirstIndexPrime()
const
1471 virtual inline integer iGetInitialFirstIndexPrime()
const;
1499 virtual std::ostream&
DescribeDof(std::ostream& out,
1500 const char *prefix =
"",
1501 bool bInitial =
false)
const;
1503 virtual void DescribeDof(std::vector<std::string>& desc,
1504 bool bInitial =
false,
1507 virtual std::ostream&
DescribeEq(std::ostream& out,
1508 const char *prefix =
"",
1509 bool bInitial =
false)
const;
1511 virtual void DescribeEq(std::vector<std::string>& desc,
1512 bool bInitial =
false,
1538 template <grad::index_type N_SIZE>
1545 template <grad::index_type N_SIZE>
1563 ModalNode::iGetInitialFirstIndexPrime()
const
1566 silent_cerr(
"ModalNode::iGetInitialFirstIndexPrime() not supported yet!" << std::endl);
1576 template <grad::index_type N_SIZE>
1579 using namespace grad;
1598 iFirstDofIndex + 10,
1599 MapVectorBase::GLOBAL,
1611 template <grad::index_type N_SIZE>
1614 using namespace grad;
1632 iFirstDofIndex + 10,
1633 iFirstDofIndex + 13,
1634 MapVectorBase::GLOBAL,
1662 virtual void Update_int(
void) = 0;
1665 virtual inline integer iGetInitialFirstIndexPrime()
const;
1684 virtual inline unsigned int iGetNumDof(
void)
const;
1697 unsigned int iDof,
unsigned int iOrder = 0);
1746 silent_cerr(
"DummyStructNode(" <<
GetLabel() <<
") has no dofs"
1755 silent_cerr(
"DummyStructNode(" <<
GetLabel() <<
") has no dofs"
1762 DummyStructNode::iGetInitialFirstIndexPrime()
const
1764 silent_cerr(
"DummyStructNode(" <<
GetLabel() <<
") has no dofs"
1780 return pNode->bComputeAccelerations();
1793 void Update_int(
void);
1827 void Update_int(
void);
1857 return pNode->bComputeAccelerations() && pNodeRef->bComputeAccelerations();
1870 void Update_int(
void);
1903 return pNode->bComputeAccelerations()
1904 && pNodeRef->bComputeAccelerations()
1905 && pNodeRef2->bComputeAccelerations();
virtual unsigned int iGetInitialNumDof(void) const
virtual integer iGetFirstMomentumIndex(void) const
virtual const Vec3 & GetWPrev(void) const
virtual unsigned int iGetNumDof(void) const
index_type iGetStartIndexLocal() const
const Vec3 & GetW(void) const
doublereal dVelocityStiffness
virtual StructDispNode::Type GetStructDispNodeType(void) const =0
ErrGeneric(MBDYN_EXCEPT_ARGS_DECL)
virtual const Mat3x3 & GetRRef(void) const
virtual bool bComputeAccelerations(void) const
#define MBDYN_EXCEPT_ARGS
virtual bool bComputeAccelerations(void) const
virtual std::ostream & DescribeDof(std::ostream &out, const char *prefix="", bool bInitial=false) const
const Vec3 & GetWP(void) const
virtual const Vec3 & GetgCurr(void) const
virtual const Mat3x3 & GetRCurr(void) const
virtual Node::Type GetNodeType(void) const
virtual void AfterPredict(VectorHandler &X, VectorHandler &XP)
#define MBDYN_EXCEPT_ARGS_PASSTHRU
virtual void InitialUpdate(const VectorHandler &X)
const Vec3 & GetX(void) const
virtual void SetInitialValue(VectorHandler &X)
virtual const Vec3 & GetXPrev(void) const
virtual ~StructDispNode(void)
#define MBDYN_EXCEPT_ARGS_DECL
virtual void SetDofValue(const doublereal &dValue, unsigned int iDof, unsigned int iOrder=0)
virtual unsigned int iGetNumDof(void) const
virtual const Vec3 & GetWRef(void) const
virtual const doublereal & dGetVelocityStiffness(void) const
virtual unsigned int iGetPrivDataIdx(const char *s) const
const char * psStructNodeNames[]
const Vec3 & GetXPP(void) const
std::vector< Hint * > Hints
virtual bool bOmegaRotates(void) const
virtual DofOrder::Order GetDofType(unsigned int) const
virtual unsigned int iGetInitialNumDof(void) const
const RigidBodyKinematics * pRefRBK
void func(const T &u, const T &v, const T &w, doublereal e, T &f)
virtual bool bComputeAccelerations(void) const
void SetDerivativeGlobal(index_type iGlobalDof, scalar_deriv_type dCoef)
virtual integer iGetFirstPositionIndex(void) const
virtual void DerivativesUpdate(const VectorHandler &X, const VectorHandler &XP)
const StructNode * pRefNode
const StructNode * pNodeRef2
virtual void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
virtual bool bOutputAccelerations(void) const
virtual void OutputAccelerations(bool bOut)
virtual const Mat3x3 & GetRPrev(void) const
virtual std::ostream & Restart(std::ostream &out) const
virtual void SetAutoStr(const AutomaticStructDispElem *p)
OrientationDescription od
virtual void Update(void)
virtual void BeforePredict(VectorHandler &X, VectorHandler &XP, VectorHandler &XPrev, VectorHandler &XPPrev) const
AutomaticStructDispElem * pAutoStr
void SetValuePreserve(scalar_func_type dVal)
virtual const Vec3 & GetVPrev(void) const
virtual const doublereal & dGetPositionStiffness(void) const
const StructNode * pNodeRef
virtual integer iGetFirstRowIndex(void) const
const Vec3 & GetV(void) const
virtual bool bComputeAccelerations(void) const
virtual integer iGetFirstMomentumIndex(void) const =0
virtual integer iGetFirstPositionIndex(void) const
virtual const Vec3 & GetWCurr(void) const
virtual const Vec3 & GetWPCurr(void) const
virtual unsigned int iGetInitialNumDof(void) const
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP, const VectorHandler &XPP)
virtual integer iGetFirstMomentumIndex(void) const
const RigidBodyKinematics * pGetRBK(void) const
ErrGeneric(MBDYN_EXCEPT_ARGS_DECL)
virtual doublereal dGetPrivData(unsigned int i) const
doublereal dPositionStiffness
virtual const Vec3 & GetXCurr(void) const
void DerivativeResizeReset(LocalDofMap *pMap, index_type iStartGlobal, index_type iEndGlobal, MapVectorBase::GlobalScope s, scalar_deriv_type dVal)
virtual integer iGetFirstMomentumIndex(void) const
virtual bool ComputeAccelerations(bool b)
virtual unsigned int iGetNumDof(void) const =0
virtual unsigned int iGetNumDof(void) const
virtual const doublereal & dGetDofValue(int iDof, int iOrder=0) const
Node * ReadStructNode(DataManager *pDM, MBDynParser &HP, DofOwner *pDO, unsigned int uLabel)
virtual void OutputPrepare(OutputHandler &OH)
virtual const Vec3 & GetgRef(void) const
virtual const Vec3 & GetgPCurr(void) const
virtual unsigned int iGetNumDof(void) const
virtual const doublereal & dGetDofValuePrev(int iDof, int iOrder=0) const
virtual const Vec3 & GetVCurr(void) const
scalar_func_type dGetValue() const
virtual const Vec3 & GetgPRef(void) const
virtual const Vec3 & GetXPPCurr(void) const
virtual const Vec3 & GetWPPrev(void) const
StructDispNode(unsigned int uL, const DofOwner *pDO, const Vec3 &X0, const Vec3 &V0, const StructNode *pRN, const RigidBodyKinematics *pRBK, doublereal dPosStiff, doublereal dVelStiff, OrientationDescription od, flag fOut)
virtual const Vec3 & GetXPPPrev(void) const
virtual void SetOutputFlag(flag f=flag(1))
scalar_deriv_type dGetDerivativeLocal(index_type iLocalDof) const
virtual integer iGetFirstIndex(void) const
virtual integer iGetFirstMomentumIndex(void) const
virtual unsigned int iGetNumDof(void) const
index_type iGetEndIndexLocal() const
unsigned int GetLabel(void) const
#define GRADIENT_ASSERT(expr)
virtual unsigned int iGetNumPrivData(void) const
const Mat3x3 & GetR(void) const
virtual bool bComputeAccelerations(void) const
virtual std::ostream & DescribeEq(std::ostream &out, const char *prefix="", bool bInitial=false) const
virtual integer iGetFirstMomentumIndex(void) const