78 std::ostream&
Restart(std::ostream& out)
const;
90 unsigned uLabel,
const DofOwner *pDO,
97 m_overline_f(::
Zero3),
98 m_overline_Omega(::
Zero3),
99 m_overline_Acceleration(::
Zero3)
106 "Author: Pierangelo Masarati <masarati@aero.polimi.it> \n"
107 "Organization: Dipartimento di Ingegneria Aerospaziale \n"
108 " Politecnico di Milano \n"
109 " http://www.aero.polimi.it/ \n"
111 "All rights reserved \n"
114 " user defined : <label> , imu , \n"
116 " [ , position , (Vec3)<offset> ] \n"
117 " [ , orientation , (OrientationMatrix)<orientation> ] \n"
276 connectedNodes.resize(1);
291 return out <<
"# ModuleIMU: not implemented" << std::endl;
366 virtual std::ostream&
368 const char *prefix =
"",
369 bool bInitial =
false)
const;
373 bool bInitial =
false,
376 virtual std::ostream&
378 const char *prefix =
"",
379 bool bInitial =
false)
const;
383 bool bInitial =
false,
406 std::ostream&
Restart(std::ostream& out)
const;
418 unsigned uLabel,
const DofOwner *pDO,
425 m_overline_f(::
Zero3),
426 m_LambdaOmega(::
Zero3),
427 m_LambdaAcceleration(::
Zero3),
436 "Author: Pierangelo Masarati <masarati@aero.polimi.it> \n"
437 "Organization: Dipartimento di Ingegneria Aerospaziale \n"
438 " Politecnico di Milano \n"
439 " http://www.aero.polimi.it/ \n"
441 "All rights reserved \n"
444 " user defined : <label> , imu constraint, \n"
446 " [ position , (Vec3)<offset> , ] \n"
447 " [ orientation , (OrientationMatrix)<orientation> , ] \n"
448 " (TplDriveCaller<Vec3>) <omega> , \n"
449 " (TplDriveCaller<Vec3>) <acceleration> \n"
505 if (i >= 0 && i < 6) {
509 if (i >= 6 && i < 9) {
553 for (
integer iCnt = 1; iCnt <= 6; iCnt++) {
558 for (
integer iCnt = 1; iCnt <= 9; iCnt++) {
583 for (
integer iCnt = 1; iCnt <= 3; iCnt++) {
584 WM.
PutCoef(6 + iCnt, 12 + iCnt, -dCoef);
585 WM.
PutCoef(12 + iCnt, 12 + iCnt, 1.);
602 for (
integer iCnt = 1; iCnt <= 6; iCnt++) {
603 WorkVec.
PutRowIndex(iCnt, iFirstMomentumIndex + iCnt);
606 for (
integer iCnt = 1; iCnt <= 9; iCnt++) {
612 m_v =
Vec3(XCurr, iFirstIndex + 7);
613 m_vP =
Vec3(XPrimeCurr, iFirstIndex + 7);
659 connectedNodes.resize(1);
678 return out <<
"# ModuleIMUConstraint: not implemented" << std::endl;
729 if (!
SetUDE(
"imu", rf1)) {
732 silent_cerr(
"ModuleIMU: "
733 "module_init(" << module_name <<
") "
734 "failed" << std::endl);
741 if (!
SetUDE(
"imu" "constraint", rf2)) {
744 silent_cerr(
"ModuleIMUConstraint: "
745 "module_init(" << module_name <<
") "
746 "failed" << std::endl);
flag fReadOutput(MBDynParser &HP, const T &t) const
ModuleIMU(unsigned uLabel, const DofOwner *pDO, DataManager *pDM, MBDynParser &HP)
VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Mat3x3 GetRotRel(const ReferenceFrame &rf)
unsigned int iGetNumPrivData(void) const
void PutColIndex(integer iSubCol, integer iCol)
const Vec3 Zero3(0., 0., 0.)
Vec3 Cross(const Vec3 &v) const
void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
virtual bool bToBeOutput(void) const
Vec3 m_overline_Acceleration
#define MBDYN_EXCEPT_ARGS
virtual void ResizeReset(integer)
const MatCross_Manip MatCross
FullSubMatrixHandler & SetFull(void)
virtual const Mat3x3 & GetRCurr(void) const
int module_init(const char *module_name, void *pdm, void *php)
This function registers our user defined element for the math parser.
void Add(integer iRow, integer iCol, const Vec3 &v)
virtual unsigned int iGetInitialNumDof(void) const
unsigned int iGetPrivDataIdx(const char *s) const
virtual void Sub(integer iRow, const Vec3 &v)
const Mat3x3 Eye3(1., 0., 0., 0., 1., 0., 0., 0., 1.)
void PutCoef(integer iRow, integer iCol, const doublereal &dCoef)
std::vector< Hint * > Hints
doublereal dGetPrivData(unsigned int i) const
void Set(const TplDriveCaller< T > *pDC)
void AddT(integer iRow, integer iCol, const Vec3 &v)
doublereal dGetPrivData(unsigned int i) const
std::ostream & Restart(std::ostream &out) const
Vec3 MulTV(const Vec3 &v) const
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
DofOrder::Order GetDofType(unsigned int i) const
virtual void PutRowIndex(integer iSubRow, integer iRow)=0
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
const StructNode * m_pNode
Vec3 GetPosRel(const ReferenceFrame &rf)
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph)
virtual bool IsKeyWord(const char *sKeyWord)
SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
const StructNode * m_pNode
std::ostream & Loadable(void) const
T Get(const doublereal &dVar) const
SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
unsigned int iGetNumPrivData(void) const
virtual unsigned int iGetInitialNumDof(void) const
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
virtual std::ostream & DescribeEq(std::ostream &out, const char *prefix="", bool bInitial=false) const
virtual integer iGetFirstMomentumIndex(void) const =0
virtual integer iGetFirstPositionIndex(void) const
virtual const Vec3 & GetWCurr(void) const
virtual void Output(OutputHandler &OH) const
virtual const Vec3 & GetWPCurr(void) const
ModuleIMUConstraint(unsigned uLabel, const DofOwner *pDO, DataManager *pDM, MBDynParser &HP)
#define ASSERT(expression)
unsigned int iGetNumDof(void) const
OrientationDescription GetOrientationDescription(void) const
VectorExpression< VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >, 3 > Cross(const VectorExpression< VectorLhsExpr, 3 > &u, const VectorExpression< VectorRhsExpr, 3 > &v)
virtual ~ModuleIMUConstraint(void)
SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
virtual void Add(integer iRow, const Vec3 &v)
virtual void ResizeReset(integer, integer)
int iGetNumConnectedNodes(void) const
unsigned int iGetPrivDataIdx(const char *s) const
virtual void Put(integer iRow, const Vec3 &v)
VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
void PutRowIndex(integer iSubRow, integer iRow)
VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
bool SetUDE(const std::string &s, UserDefinedElemRead *rude)
std::ostream & Restart(std::ostream &out) const
virtual flag fToBeOutput(void) const
void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph)
TplDriveOwner< Vec3 > m_OmegaDrv
SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
virtual const Vec3 & GetVCurr(void) const
void Sub(integer iRow, integer iCol, const Vec3 &v)
virtual const Vec3 & GetXPPCurr(void) const
int iGetNumConnectedNodes(void) const
virtual void SetOutputFlag(flag f=flag(1))
virtual integer iGetFirstIndex(void) const
unsigned int GetLabel(void) const
Vec3 m_LambdaAcceleration
Node * ReadNode(MBDynParser &HP, Node::Type type) const
virtual void Output(OutputHandler &OH) const
virtual bool bComputeAccelerations(void) const
virtual std::ostream & DescribeDof(std::ostream &out, const char *prefix="", bool bInitial=false) const
TplDriveCaller< Vec3 > * ReadDCVecRel(const DataManager *pDM, MBDynParser &HP, const ReferenceFrame &rf)
TplDriveOwner< Vec3 > m_AccelerationDrv