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

Public Member Functions

 ModuleMDS (unsigned uLabel, const DofOwner *pDO, DataManager *pDM, MBDynParser &HP)
 
virtual ~ModuleMDS (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
 
int iGetNumConnectedNodes (void) const
 
void GetConnectedNodes (std::vector< const Node * > &connectedNodes) const
 
void SetValue (DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph)
 
virtual unsigned int iGetNumDof (void) const
 
virtual DofOrder::Order GetDofType (unsigned int i) const
 
virtual DofOrder::Order GetEqType (unsigned int i) const
 
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 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 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 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 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 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

doublereal dM
 
doublereal dD
 
doublereal dK
 
doublereal dX
 
doublereal dV
 
doublereal dVP
 
DriveOwner F
 

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 39 of file module-mds.cc.

Constructor & Destructor Documentation

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

Definition at line 83 of file module-mds.cc.

References dD, dK, dM, F, DataManager::fReadOutput(), MBDynParser::GetDriveCaller(), HighParser::GetReal(), HighParser::IsArg(), HighParser::IsKeyWord(), Elem::LOADABLE, MBDYN_EXCEPT_ARGS, DriveOwner::Set(), and ToBeOutput::SetOutputFlag().

86 : Elem(uLabel, flag(0)),
88 {
89  // help
90  if (HP.IsKeyWord("help")) {
91  silent_cout(
92 " \n"
93 "Module: msd \n"
94 "Author: Pierangelo Masarati <masarati@aero.polimi.it> \n"
95 "Organization: Dipartimento di Ingegneria Aerospaziale \n"
96 " Politecnico di Milano \n"
97 " http://www.aero.polimi.it/ \n"
98 " \n"
99 " All rights reserved \n"
100  << std::endl);
101 
102  if (!HP.IsArg()) {
103  /*
104  * Exit quietly if nothing else is provided
105  */
106  throw NoErr(MBDYN_EXCEPT_ARGS);
107  }
108  }
109 
110  dM = HP.GetReal();
111  dD = HP.GetReal();
112  dK = HP.GetReal();
113 
114  F.Set(HP.GetDriveCaller());
115 
117 }
flag fReadOutput(MBDynParser &HP, const T &t) const
Definition: dataman.h:1064
doublereal dK
Definition: module-mds.cc:43
long int flag
Definition: mbdyn.h:43
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
doublereal dD
Definition: module-mds.cc:43
doublereal dM
Definition: module-mds.cc:43
virtual bool IsKeyWord(const char *sKeyWord)
Definition: parser.cc:910
unsigned int uLabel
Definition: withlab.h:44
Definition: except.h:79
virtual bool IsArg(void)
Definition: parser.cc:807
void Set(const DriveCaller *pDC)
Definition: drive.cc:647
UserDefinedElem(unsigned uLabel, const DofOwner *pDO)
Definition: userelem.cc:152
DriveCaller * GetDriveCaller(bool bDeferred=false)
Definition: mbpar.cc:2033
virtual void SetOutputFlag(flag f=flag(1))
Definition: output.cc:896
Elem(unsigned int uL, flag fOut)
Definition: elem.cc:41
DriveOwner F
Definition: module-mds.cc:45
virtual doublereal GetReal(const doublereal &dDefval=0.0)
Definition: parser.cc:1056

Here is the call graph for this function:

ModuleMDS::~ModuleMDS ( void  )
virtual

Definition at line 119 of file module-mds.cc.

References NO_OP.

120 {
121  // destroy private data
122  NO_OP;
123 }
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

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

Implements Elem.

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

References dD, dK, dM, DofOwnerOwner::iGetFirstIndex(), FullSubMatrixHandler::PutCoef(), FullSubMatrixHandler::PutColIndex(), FullSubMatrixHandler::PutRowIndex(), FullSubMatrixHandler::Resize(), and VariableSubMatrixHandler::SetFull().

151 {
152  // should do something useful
153  FullSubMatrixHandler& WM = WorkMat.SetFull();
154 
155  WM.Resize(2, 2);
156 
157  integer iFirstIndex = iGetFirstIndex();
158 
159  WM.PutRowIndex(1, iFirstIndex + 1);
160  WM.PutColIndex(1, iFirstIndex + 1);
161  WM.PutRowIndex(2, iFirstIndex + 2);
162  WM.PutColIndex(2, iFirstIndex + 2);
163 
164  /*
165  * [ -m 0 ]
166  * r_/y' = [ ]
167  * [ 0 -1 ]
168  *
169  * [ -d -k ]
170  * r_/y = [ ]
171  * [ 1 0 ]
172  *
173  * [ (m + dCoef*d) dCoef*k ]
174  * J = -(r_/y' + dCoef*r_/y) = [ ]
175  * [ -dCoef 1. ]
176  */
177 
178 #if 1
179  // old style
180  WM.PutCoef(1, 1, dM + dCoef*dD);
181  WM.PutCoef(1, 2, dCoef*dK);
182  WM.PutCoef(2, 1, -dCoef);
183  WM.PutCoef(2, 2, 1.);
184 #endif
185 
186 #if 0
187  // cleaner (less efficient?)
188  WM(1, 1) = dM + dCoef*dD;
189  WM(1, 2) = dCoef*dK;
190  WM(2, 1) = -dCoef;
191  WM(2, 2) = 1.;
192 #endif
193 
194  return WorkMat;
195 }
void PutColIndex(integer iSubCol, integer iCol)
Definition: submat.h:325
doublereal dK
Definition: module-mds.cc:43
FullSubMatrixHandler & SetFull(void)
Definition: submat.h:1168
doublereal dD
Definition: module-mds.cc:43
void Resize(integer iNewRow, integer iNewCol)
Definition: submat.cc:138
void PutCoef(integer iRow, integer iCol, const doublereal &dCoef)
Definition: submat.h:672
doublereal dM
Definition: module-mds.cc:43
void PutRowIndex(integer iSubRow, integer iRow)
Definition: submat.h:311
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

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

Implements Elem.

Definition at line 198 of file module-mds.cc.

References dD, DriveOwner::dGet(), dK, dM, dV, dVP, dX, F, DofOwnerOwner::iGetFirstIndex(), VectorHandler::PutCoef(), SubVectorHandler::PutRowIndex(), and VectorHandler::ResizeReset().

202 {
203  // should do something useful
204  WorkVec.ResizeReset(2);
205 
206  integer iFirstIndex = iGetFirstIndex();
207 
208  WorkVec.PutRowIndex(1, iFirstIndex + 1);
209  WorkVec.PutRowIndex(2, iFirstIndex + 2);
210 
211  dVP = XPrimeCurr(iFirstIndex + 1);
212  doublereal dXP = XPrimeCurr(iFirstIndex + 2);
213  dV = XCurr(iFirstIndex + 1);
214  dX = XCurr(iFirstIndex + 2);
215 
216  /*
217  * { f(t) - m*v' - d*v - d*k }
218  * r = { }
219  * { v - x' }
220  */
221 
222 #if 0
223  WorkVec.PutCoef(1, F.dGet() - dM*dVP - dD*dV - dK*dX);
224  WorkVec.PutCoef(2, dV - dXP);
225 #endif
226 
227  WorkVec(1) = F.dGet() - dM*dVP - dD*dV - dK*dX;
228  WorkVec(2) = dV - dXP;
229 
230  return WorkVec;
231 }
doublereal dK
Definition: module-mds.cc:43
doublereal dVP
Definition: module-mds.cc:44
virtual void ResizeReset(integer)
Definition: vh.cc:55
doublereal dD
Definition: module-mds.cc:43
doublereal dM
Definition: module-mds.cc:43
virtual void PutRowIndex(integer iSubRow, integer iRow)=0
virtual void PutCoef(integer iRow, const doublereal &dCoef)=0
doublereal dV
Definition: module-mds.cc:44
doublereal dGet(const doublereal &dVar) const
Definition: drive.cc:664
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
double doublereal
Definition: colamd.c:52
DriveOwner F
Definition: module-mds.cc:45
long int integer
Definition: colamd.c:51
doublereal dX
Definition: module-mds.cc:44

Here is the call graph for this function:

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

Reimplemented from Elem.

Definition at line 246 of file module-mds.cc.

247 {
248  connectedNodes.resize(0);
249 }
DofOrder::Order ModuleMDS::GetDofType ( unsigned int  i) const
virtual

Reimplemented from Elem.

Definition at line 266 of file module-mds.cc.

References DofOrder::DIFFERENTIAL.

267 {
268  return DofOrder::DIFFERENTIAL;
269 }
DofOrder::Order ModuleMDS::GetEqType ( unsigned int  i) const
virtual

Reimplemented from SimulationEntity.

Definition at line 272 of file module-mds.cc.

References DofOrder::DIFFERENTIAL.

273 {
274  return DofOrder::DIFFERENTIAL;
275 }
unsigned int ModuleMDS::iGetInitialNumDof ( void  ) const
virtual

Implements SubjectToInitialAssembly.

Definition at line 284 of file module-mds.cc.

285 {
286  return 0;
287 }
int ModuleMDS::iGetNumConnectedNodes ( void  ) const

Definition at line 240 of file module-mds.cc.

241 {
242  return 0;
243 }
unsigned int ModuleMDS::iGetNumDof ( void  ) const
virtual

Reimplemented from Elem.

Definition at line 260 of file module-mds.cc.

261 {
262  return 2;
263 }
unsigned int ModuleMDS::iGetNumPrivData ( void  ) const
virtual

Reimplemented from SimulationEntity.

Definition at line 234 of file module-mds.cc.

235 {
236  return 0;
237 }
VariableSubMatrixHandler & ModuleMDS::InitialAssJac ( VariableSubMatrixHandler WorkMat,
const VectorHandler XCurr 
)
virtual

Implements SubjectToInitialAssembly.

Definition at line 299 of file module-mds.cc.

References ASSERT, and VariableSubMatrixHandler::SetNullMatrix().

302 {
303  // should not be called, since initial workspace is empty
304  ASSERT(0);
305 
306  WorkMat.SetNullMatrix();
307 
308  return WorkMat;
309 }
void SetNullMatrix(void)
Definition: submat.h:1159
#define ASSERT(expression)
Definition: colamd.c:977

Here is the call graph for this function:

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

Implements SubjectToInitialAssembly.

Definition at line 312 of file module-mds.cc.

References ASSERT, and VectorHandler::ResizeReset().

315 {
316  // should not be called, since initial workspace is empty
317  ASSERT(0);
318 
319  WorkVec.ResizeReset(0);
320 
321  return WorkVec;
322 }
virtual void ResizeReset(integer)
Definition: vh.cc:55
#define ASSERT(expression)
Definition: colamd.c:977

Here is the call graph for this function:

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

Implements SubjectToInitialAssembly.

Definition at line 290 of file module-mds.cc.

293 {
294  *piNumRows = 0;
295  *piNumCols = 0;
296 }
void ModuleMDS::Output ( OutputHandler OH) const
virtual

Reimplemented from ToBeOutput.

Definition at line 126 of file module-mds.cc.

References ToBeOutput::bToBeOutput(), dV, dVP, dX, WithLabel::GetLabel(), and OutputHandler::Loadable().

127 {
128  if (bToBeOutput()) {
129  std::ostream& out = OH.Loadable();
130 
131  out << std::setw(8) << GetLabel() // 1: label
132  << " " << dX //
133  << " " << dV //
134  << " " << dVP //
135  << std::endl;
136  }
137 }
virtual bool bToBeOutput(void) const
Definition: output.cc:890
doublereal dVP
Definition: module-mds.cc:44
std::ostream & Loadable(void) const
Definition: output.h:506
doublereal dV
Definition: module-mds.cc:44
unsigned int GetLabel(void) const
Definition: withlab.cc:62
doublereal dX
Definition: module-mds.cc:44

Here is the call graph for this function:

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

Implements Elem.

Definition at line 278 of file module-mds.cc.

279 {
280  return out << "# ModuleMDS: not implemented" << std::endl;
281 }
void ModuleMDS::SetValue ( DataManager pDM,
VectorHandler X,
VectorHandler XP,
SimulationEntity::Hints ph 
)
virtual

Reimplemented from SimulationEntity.

Definition at line 252 of file module-mds.cc.

References NO_OP.

255 {
256  NO_OP;
257 }
#define NO_OP
Definition: myassert.h:74
void ModuleMDS::WorkSpaceDim ( integer piNumRows,
integer piNumCols 
) const
virtual

Implements Elem.

Definition at line 140 of file module-mds.cc.

141 {
142  *piNumRows = 2;
143  *piNumCols = 2;
144 }

Member Data Documentation

doublereal ModuleMDS::dD
private

Definition at line 43 of file module-mds.cc.

Referenced by AssJac(), AssRes(), and ModuleMDS().

doublereal ModuleMDS::dK
private

Definition at line 43 of file module-mds.cc.

Referenced by AssJac(), AssRes(), and ModuleMDS().

doublereal ModuleMDS::dM
private

Definition at line 43 of file module-mds.cc.

Referenced by AssJac(), AssRes(), and ModuleMDS().

doublereal ModuleMDS::dV
private

Definition at line 44 of file module-mds.cc.

Referenced by AssRes(), and Output().

doublereal ModuleMDS::dVP
private

Definition at line 44 of file module-mds.cc.

Referenced by AssRes(), and Output().

doublereal ModuleMDS::dX
private

Definition at line 44 of file module-mds.cc.

Referenced by AssRes(), and Output().

DriveOwner ModuleMDS::F
private

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

Referenced by AssRes(), and ModuleMDS().


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