MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
ModuleIMU Class Reference
Inheritance diagram for ModuleIMU:
Collaboration diagram for ModuleIMU:

Public Member Functions

 ModuleIMU (unsigned uLabel, const DofOwner *pDO, DataManager *pDM, MBDynParser &HP)
 
virtual ~ModuleIMU (void)
 
virtual void Output (OutputHandler &OH) const
 
virtual void WorkSpaceDim (integer *piNumRows, integer *piNumCols) const
 
VariableSubMatrixHandlerAssJac (VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
SubVectorHandlerAssRes (SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
unsigned int iGetNumPrivData (void) const
 
unsigned int iGetPrivDataIdx (const char *s) const
 
doublereal dGetPrivData (unsigned int i) const
 
int iGetNumConnectedNodes (void) const
 
void GetConnectedNodes (std::vector< const Node * > &connectedNodes) const
 
void SetValue (DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph)
 
std::ostream & Restart (std::ostream &out) const
 
virtual unsigned int iGetInitialNumDof (void) const
 
virtual void InitialWorkSpaceDim (integer *piNumRows, integer *piNumCols) const
 
VariableSubMatrixHandlerInitialAssJac (VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
 
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 SubVectorHandlerAssRes (SubVectorHandler &WorkVec, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr, const VectorHandler &XPrimePrimeCurr, InverseDynamics::Order iOrder=InverseDynamics::INVERSE_DYNAMICS)
 
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 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 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 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 UserDefinedElem
 UserDefinedElem (unsigned uLabel, const DofOwner *pDO)
 
virtual ~UserDefinedElem (void)
 
bool NeedsAirProperties (void) const
 
void NeedsAirProperties (bool yesno)
 
virtual Elem::Type GetElemType (void) const
 
virtual AerodynamicElem::Type GetAerodynamicElemType (void) 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)
 
- Public Member Functions inherited from AerodynamicElem
 AerodynamicElem (unsigned int uL, const DofOwner *pDO, flag fOut)
 
virtual ~AerodynamicElem (void)
 
virtual const InducedVelocitypGetInducedVelocity (void) const
 
- Public Member Functions inherited from ElemWithDofs
 ElemWithDofs (unsigned int uL, const DofOwner *pDO, flag fOut)
 
virtual ~ElemWithDofs (void)
 
- Public Member Functions inherited from DofOwnerOwner
 DofOwnerOwner (const DofOwner *pDO)
 
virtual ~DofOwnerOwner ()
 
virtual const DofOwnerpGetDofOwner (void) const
 
virtual integer iGetFirstIndex (void) const
 
virtual void SetInitialValue (VectorHandler &X)
 
- Public Member Functions inherited from AirPropOwner
 AirPropOwner (void)
 
virtual ~AirPropOwner (void)
 
virtual void PutAirProperties (const AirProperties *pAP)
 
virtual flag fGetAirVelocity (Vec3 &Velocity, const Vec3 &X) const
 
virtual doublereal dGetAirDensity (const Vec3 &X) const
 
virtual doublereal dGetAirPressure (const Vec3 &X) const
 
virtual doublereal dGetAirTemperature (const Vec3 &X) const
 
virtual doublereal dGetSoundSpeed (const Vec3 &X) const
 
virtual bool GetAirProps (const Vec3 &X, doublereal &rho, doublereal &c, doublereal &p, doublereal &T) const
 
- Public Member Functions inherited from ElemGravityOwner
 ElemGravityOwner (unsigned int uL, flag fOut)
 
virtual ~ElemGravityOwner (void)
 
virtual doublereal dGetM (void) const
 
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
 

Private Attributes

const StructNodem_pNode
 
Vec3 m_tilde_f
 
Mat3x3 m_tilde_Rh
 
Vec3 m_overline_f
 
Vec3 m_overline_Omega
 
Vec3 m_overline_Acceleration
 

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 AerodynamicElem
enum  Type {
  UNKNOWN = -1, INDUCEDVELOCITY = 0, AEROMODAL, AERODYNAMICBODY,
  AERODYNAMICBEAM, AERODYNAMICEXTERNAL, AERODYNAMICEXTERNALMODAL, AERODYNAMICLOADABLE,
  AIRCRAFTINSTRUMENTS, GENERICFORCE, LASTAEROTYPE
}
 
- Protected Member Functions inherited from ElemGravityOwner
virtual Vec3 GetS_int (void) const
 
virtual Mat3x3 GetJ_int (void) const
 
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 UserDefinedElem
bool needsAirProperties
 
- Protected Attributes inherited from AirPropOwner
const AirPropertiespAirProperties
 
- Protected Attributes inherited from GravityOwner
GravitypGravity
 

Detailed Description

Definition at line 41 of file module-imu.cc.

Constructor & Destructor Documentation

ModuleIMU::ModuleIMU ( unsigned  uLabel,
const DofOwner pDO,
DataManager pDM,
MBDynParser HP 
)

Definition at line 89 of file module-imu.cc.

References StructDispNode::bComputeAccelerations(), DataManager::fReadOutput(), MBDynParser::GetPosRel(), MBDynParser::GetRotRel(), HighParser::IsArg(), HighParser::IsKeyWord(), Elem::LOADABLE, m_overline_f, m_pNode, m_tilde_f, m_tilde_Rh, MBDYN_EXCEPT_ARGS, Mat3x3::MulTV(), DataManager::ReadNode(), ToBeOutput::SetOutputFlag(), and Node::STRUCTURAL.

92 : Elem(uLabel, flag(0)),
94 m_pNode(0),
95 m_tilde_f(::Zero3),
96 m_tilde_Rh(::Eye3),
100 {
101  // help
102  if (HP.IsKeyWord("help")) {
103  silent_cout(
104 " \n"
105 "Module: imu \n"
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"
110 " \n"
111 "All rights reserved \n"
112 " \n"
113 "Syntax: \n"
114 " user defined : <label> , imu , \n"
115 " <node_label> \n"
116 " [ , position , (Vec3)<offset> ] \n"
117 " [ , orientation , (OrientationMatrix)<orientation> ] \n"
118  << std::endl);
119 
120  if (!HP.IsArg()) {
121  /*
122  * Exit quietly if nothing else is provided
123  */
124  throw NoErr(MBDYN_EXCEPT_ARGS);
125  }
126  }
127 
128  m_pNode = pDM->ReadNode<const StructNode, Node::STRUCTURAL>(HP);
129  if (!m_pNode->bComputeAccelerations()) {
130  const_cast<StructNode *>(m_pNode)->ComputeAccelerations(true);
131  }
132 
134  if (HP.IsKeyWord("position")) {
135  m_tilde_f = HP.GetPosRel(RF);
136  }
137 
138  if (HP.IsKeyWord("orientation")) {
139  m_tilde_Rh = HP.GetRotRel(RF);
140  }
141 
143 
145 }
flag fReadOutput(MBDynParser &HP, const T &t) const
Definition: dataman.h:1064
Mat3x3 GetRotRel(const ReferenceFrame &rf)
Definition: mbpar.cc:1795
const Vec3 Zero3(0., 0., 0.)
long int flag
Definition: mbdyn.h:43
Vec3 m_overline_Acceleration
Definition: module-imu.cc:52
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
const Mat3x3 Eye3(1., 0., 0., 0., 1., 0., 0., 0., 1.)
Vec3 m_tilde_f
Definition: module-imu.cc:46
Vec3 m_overline_f
Definition: module-imu.cc:49
Vec3 MulTV(const Vec3 &v) const
Definition: matvec3.cc:482
Mat3x3 m_tilde_Rh
Definition: module-imu.cc:47
const StructNode * m_pNode
Definition: module-imu.cc:45
Vec3 GetPosRel(const ReferenceFrame &rf)
Definition: mbpar.cc:1331
virtual bool IsKeyWord(const char *sKeyWord)
Definition: parser.cc:910
unsigned int uLabel
Definition: withlab.h:44
Vec3 m_overline_Omega
Definition: module-imu.cc:51
Definition: except.h:79
virtual bool IsArg(void)
Definition: parser.cc:807
UserDefinedElem(unsigned uLabel, const DofOwner *pDO)
Definition: userelem.cc:152
virtual void SetOutputFlag(flag f=flag(1))
Definition: output.cc:896
Elem(unsigned int uL, flag fOut)
Definition: elem.cc:41
Node * ReadNode(MBDynParser &HP, Node::Type type) const
Definition: dataman3.cc:2309
virtual bool bComputeAccelerations(void) const
Definition: strnode.h:433

Here is the call graph for this function:

ModuleIMU::~ModuleIMU ( void  )
virtual

Definition at line 147 of file module-imu.cc.

References NO_OP.

148 {
149  NO_OP;
150 }
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

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

Implements Elem.

Definition at line 173 of file module-imu.cc.

References VariableSubMatrixHandler::SetNullMatrix().

177 {
178  WorkMat.SetNullMatrix();
179 
180  return WorkMat;
181 }
void SetNullMatrix(void)
Definition: submat.h:1159

Here is the call graph for this function:

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

Implements Elem.

Definition at line 184 of file module-imu.cc.

References Vec3::Cross(), StructNode::GetRCurr(), StructNode::GetWCurr(), StructNode::GetWPCurr(), StructDispNode::GetXPPCurr(), Vec3::IsNull(), m_overline_Acceleration, m_overline_f, m_overline_Omega, m_pNode, m_tilde_Rh, Mat3x3::MulTV(), R, and VectorHandler::ResizeReset().

188 {
189  WorkVec.ResizeReset(0);
190 
193 
195  if (!m_overline_f.IsNull()) {
196  Vec3 OmegaP(R.MulTV(m_pNode->GetWPCurr()));
198  m_overline_Acceleration += m_overline_Omega.Cross(m_overline_Omega.Cross(m_overline_f));
199  }
200 
201  return WorkVec;
202 }
Vec3 Cross(const Vec3 &v) const
Definition: matvec3.h:218
Vec3 m_overline_Acceleration
Definition: module-imu.cc:52
Definition: matvec3.h:98
virtual void ResizeReset(integer)
Definition: vh.cc:55
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
Vec3 m_overline_f
Definition: module-imu.cc:49
Vec3 MulTV(const Vec3 &v) const
Definition: matvec3.cc:482
Mat3x3 m_tilde_Rh
Definition: module-imu.cc:47
bool IsNull(void) const
Definition: matvec3.h:472
const StructNode * m_pNode
Definition: module-imu.cc:45
virtual const Vec3 & GetWCurr(void) const
Definition: strnode.h:1030
virtual const Vec3 & GetWPCurr(void) const
Definition: strnode.h:1042
Vec3 m_overline_Omega
Definition: module-imu.cc:51
virtual const Vec3 & GetXPPCurr(void) const
Definition: strnode.h:334
Mat3x3 R

Here is the call graph for this function:

doublereal ModuleIMU::dGetPrivData ( unsigned int  i) const
virtual

Reimplemented from SimulationEntity.

Definition at line 248 of file module-imu.cc.

References ASSERT, iGetNumPrivData(), m_overline_Acceleration, and m_overline_Omega.

249 {
250  ASSERT(i > 1 && i <= iGetNumPrivData());
251 
252  switch (i) {
253  case 1:
254  case 2:
255  case 3:
256  return m_overline_Omega(i);
257 
258  case 4:
259  case 5:
260  case 6:
261  return m_overline_Acceleration(i - 3);
262  }
263 
264  return 0.;
265 }
unsigned int iGetNumPrivData(void) const
Definition: module-imu.cc:205
Vec3 m_overline_Acceleration
Definition: module-imu.cc:52
#define ASSERT(expression)
Definition: colamd.c:977
Vec3 m_overline_Omega
Definition: module-imu.cc:51

Here is the call graph for this function:

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

Reimplemented from Elem.

Definition at line 274 of file module-imu.cc.

References m_pNode.

275 {
276  connectedNodes.resize(1);
277  connectedNodes[0] = m_pNode;
278 }
const StructNode * m_pNode
Definition: module-imu.cc:45
unsigned int ModuleIMU::iGetInitialNumDof ( void  ) const
virtual

Implements SubjectToInitialAssembly.

Definition at line 295 of file module-imu.cc.

296 {
297  return 0;
298 }
int ModuleIMU::iGetNumConnectedNodes ( void  ) const

Definition at line 268 of file module-imu.cc.

269 {
270  return 1;
271 }
unsigned int ModuleIMU::iGetNumPrivData ( void  ) const
virtual

Reimplemented from SimulationEntity.

Definition at line 205 of file module-imu.cc.

Referenced by dGetPrivData().

206 {
207  return 3 + 3;
208 }
unsigned int ModuleIMU::iGetPrivDataIdx ( const char *  s) const
virtual

Reimplemented from SimulationEntity.

Definition at line 211 of file module-imu.cc.

212 {
213  unsigned idx = 0;
214 
215  switch (s[0]) {
216  case 'w':
217  break;
218 
219  case 'a':
220  idx += 3;
221  break;
222 
223  default:
224  return 0;
225  }
226 
227  switch (s[1]) {
228  case 'x':
229  idx += 1;
230  break;
231 
232  case 'y':
233  idx += 2;
234  break;
235 
236  case 'z':
237  idx += 3;
238  break;
239 
240  default:
241  return 0;
242  }
243 
244  return idx;
245 }
VariableSubMatrixHandler & ModuleIMU::InitialAssJac ( VariableSubMatrixHandler WorkMat,
const VectorHandler XCurr 
)
virtual

Implements SubjectToInitialAssembly.

Definition at line 310 of file module-imu.cc.

References ASSERT, and VariableSubMatrixHandler::SetNullMatrix().

313 {
314  // should not be called, since initial workspace is empty
315  ASSERT(0);
316 
317  WorkMat.SetNullMatrix();
318 
319  return WorkMat;
320 }
void SetNullMatrix(void)
Definition: submat.h:1159
#define ASSERT(expression)
Definition: colamd.c:977

Here is the call graph for this function:

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

Implements SubjectToInitialAssembly.

Definition at line 323 of file module-imu.cc.

References ASSERT, and VectorHandler::ResizeReset().

326 {
327  // should not be called, since initial workspace is empty
328  ASSERT(0);
329 
330  WorkVec.ResizeReset(0);
331 
332  return WorkVec;
333 }
virtual void ResizeReset(integer)
Definition: vh.cc:55
#define ASSERT(expression)
Definition: colamd.c:977

Here is the call graph for this function:

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

Implements SubjectToInitialAssembly.

Definition at line 301 of file module-imu.cc.

304 {
305  *piNumRows = 0;
306  *piNumCols = 0;
307 }
void ModuleIMU::Output ( OutputHandler OH) const
virtual

Reimplemented from ToBeOutput.

Definition at line 153 of file module-imu.cc.

References ToBeOutput::bToBeOutput(), WithLabel::GetLabel(), OutputHandler::Loadable(), m_overline_Acceleration, and m_overline_Omega.

154 {
155  if (bToBeOutput()) {
156  std::ostream& out = OH.Loadable();
157 
158  out << std::setw(8) << GetLabel()
159  << " " << m_overline_Omega
160  << " " << m_overline_Acceleration
161  << std::endl;
162  }
163 }
virtual bool bToBeOutput(void) const
Definition: output.cc:890
Vec3 m_overline_Acceleration
Definition: module-imu.cc:52
std::ostream & Loadable(void) const
Definition: output.h:506
Vec3 m_overline_Omega
Definition: module-imu.cc:51
unsigned int GetLabel(void) const
Definition: withlab.cc:62

Here is the call graph for this function:

std::ostream & ModuleIMU::Restart ( std::ostream &  out) const
virtual

Implements Elem.

Definition at line 289 of file module-imu.cc.

290 {
291  return out << "# ModuleIMU: not implemented" << std::endl;
292 }
void ModuleIMU::SetValue ( DataManager pDM,
VectorHandler X,
VectorHandler XP,
SimulationEntity::Hints ph 
)
virtual

Reimplemented from SimulationEntity.

Definition at line 281 of file module-imu.cc.

References NO_OP.

284 {
285  NO_OP;
286 }
#define NO_OP
Definition: myassert.h:74
void ModuleIMU::WorkSpaceDim ( integer piNumRows,
integer piNumCols 
) const
virtual

Implements Elem.

Definition at line 166 of file module-imu.cc.

167 {
168  *piNumRows = 0;
169  *piNumCols = 0;
170 }

Member Data Documentation

Vec3 ModuleIMU::m_overline_Acceleration
private

Definition at line 52 of file module-imu.cc.

Referenced by AssRes(), dGetPrivData(), and Output().

Vec3 ModuleIMU::m_overline_f
private

Definition at line 49 of file module-imu.cc.

Referenced by AssRes(), and ModuleIMU().

Vec3 ModuleIMU::m_overline_Omega
private

Definition at line 51 of file module-imu.cc.

Referenced by AssRes(), dGetPrivData(), and Output().

const StructNode* ModuleIMU::m_pNode
private

Definition at line 45 of file module-imu.cc.

Referenced by AssRes(), GetConnectedNodes(), and ModuleIMU().

Vec3 ModuleIMU::m_tilde_f
private

Definition at line 46 of file module-imu.cc.

Referenced by ModuleIMU().

Mat3x3 ModuleIMU::m_tilde_Rh
private

Definition at line 47 of file module-imu.cc.

Referenced by AssRes(), and ModuleIMU().


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