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

#include <genel_.h>

Inheritance diagram for GenelDistance:
Collaboration diagram for GenelDistance:

Public Member Functions

 GenelDistance (unsigned int uLabel, const DofOwner *pDO, const DriveCaller *pDC, const ScalarDof &sd1, const ScalarDof &sd2, flag fOutput)
 
virtual ~GenelDistance (void)
 
virtual unsigned int iGetNumDof (void) const
 
virtual DofOrder::Order GetDofType (unsigned int i) const
 
virtual std::ostream & Restart (std::ostream &out) const
 
virtual Genel::Type GetGenelType (void) const
 
virtual void WorkSpaceDim (integer *piNumRows, integer *piNumCols) const
 
void Output (OutputHandler &OH) const
 
virtual VariableSubMatrixHandlerAssJac (VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual SubVectorHandlerAssRes (SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
void SetValue (DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
 
virtual void GetConnectedNodes (std::vector< const Node * > &connectedNodes) const
 
- 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 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 unsigned int iGetNumPrivData (void) const
 
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 Genel
 Genel (unsigned int uL, const DofOwner *pDO, flag fOut)
 
virtual ~Genel (void)
 
virtual Elem::Type GetElemType (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 DriveOwner
 DriveOwner (const DriveCaller *pDC=0)
 
 DriveOwner (const DriveOwner &drive)
 
virtual ~DriveOwner (void)
 
void Set (const DriveCaller *pDC)
 
DriveCallerpGetDriveCaller (void) const
 
doublereal dGet (const doublereal &dVar) const
 
doublereal dGet (void) const
 
bool bIsDifferentiable (void) const
 
doublereal dGetP (const doublereal &dVar) const
 
doublereal dGetP (void) const
 

Protected Attributes

ScalarDof SD1
 
ScalarDof SD2
 
doublereal dRct
 
- Protected Attributes inherited from WithLabel
unsigned int uLabel
 
std::string sName
 
- Protected Attributes inherited from ToBeOutput
flag fOutput
 
- Protected Attributes inherited from DriveOwner
DriveCallerpDriveCaller
 

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 Genel
enum  Type {
  UNKNOWN = -1, SWASHPLATE = 0, ROTORTRIM, CLAMP,
  DISTANCE, SPRING, SPRINGSUPPORT, CROSSSPRINGSUPPORT,
  SPRINGDAMPER, SPRINGDAMPERSUPPORT, CROSSSPRINGDAMPERSUPPORT, MASS,
  SCALARFILTER, STATESPACESISO, STATESPACEMIMO, LASTGENELTYPE
}
 

Detailed Description

Definition at line 103 of file genel_.h.

Constructor & Destructor Documentation

GenelDistance::GenelDistance ( unsigned int  uLabel,
const DofOwner pDO,
const DriveCaller pDC,
const ScalarDof sd1,
const ScalarDof sd2,
flag  fOutput 
)

Definition at line 194 of file genel_.cc.

References NO_OP.

200 : Elem(uLabel, fOutput),
201 Genel(uLabel, pDO, fOutput),
202 DriveOwner(pDC), SD1(sd1), SD2(sd2), dRct(0.)
203 {
204  NO_OP;
205 }
flag fOutput
Definition: output.h:658
ScalarDof SD1
Definition: genel_.h:105
#define NO_OP
Definition: myassert.h:74
ScalarDof SD2
Definition: genel_.h:106
unsigned int uLabel
Definition: withlab.h:44
Genel(unsigned int uL, const DofOwner *pDO, flag fOut)
Definition: genel.cc:44
Elem(unsigned int uL, flag fOut)
Definition: elem.cc:41
DriveOwner(const DriveCaller *pDC=0)
Definition: drive.cc:627
doublereal dRct
Definition: genel_.h:107
GenelDistance::~GenelDistance ( void  )
virtual

Definition at line 207 of file genel_.cc.

References ScalarDof::pNode, SAFEDELETE, SD1, and SD2.

208 {
209  const Node2Scalar *pn2s;
210 
211  pn2s = dynamic_cast<const Node2Scalar *>(SD1.pNode);
212  if (pn2s) {
213  SAFEDELETE(pn2s);
214  }
215 
216  pn2s = dynamic_cast<const Node2Scalar *>(SD2.pNode);
217  if (pn2s) {
218  SAFEDELETE(pn2s);
219  }
220 }
ScalarNode * pNode
Definition: node.h:708
ScalarDof SD1
Definition: genel_.h:105
ScalarDof SD2
Definition: genel_.h:106
#define SAFEDELETE(pnt)
Definition: mynewmem.h:710

Member Function Documentation

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

Implements Elem.

Definition at line 268 of file genel_.cc.

References DEBUGCOUT, Node::iGetFirstColIndex(), DofOwnerOwner::iGetFirstIndex(), Node::iGetFirstRowIndex(), ScalarDof::iOrder, ScalarDof::pNode, SparseSubMatrixHandler::PutItem(), SparseSubMatrixHandler::ResizeReset(), SD1, SD2, and VariableSubMatrixHandler::SetSparse().

272 {
273  DEBUGCOUT("Entering GenelDistance::AssJac()" << std::endl);
274 
275  SparseSubMatrixHandler& WM = WorkMat.SetSparse();
276  WM.ResizeReset(4, 0);
277 
278  integer iNode1RowIndex = SD1.pNode->iGetFirstRowIndex() + 1;
279  integer iNode1ColIndex = SD1.pNode->iGetFirstColIndex() + 1;
280  integer iNode2RowIndex = SD2.pNode->iGetFirstRowIndex() + 1;
281  integer iNode2ColIndex = SD2.pNode->iGetFirstColIndex() + 1;
282  integer iFirstReactionIndex = iGetFirstIndex() + 1;
283 
284  WM.PutItem(1, iNode1RowIndex, iFirstReactionIndex, -1.);
285  WM.PutItem(2, iNode2RowIndex, iFirstReactionIndex, 1.);
286 
287  doublereal d = dCoef;
288  if ((SD1.iOrder == 0) && (SD2.iOrder == 0)) {
289  d = 1.;
290  }
291 
292  if (SD1.iOrder == 1) {
293  WM.PutItem(3, iFirstReactionIndex, iNode1ColIndex, -1.);
294  } else {
295  WM.PutItem(3, iFirstReactionIndex, iNode1ColIndex, -d);
296  }
297 
298  if (SD2.iOrder == 1) {
299  WM.PutItem(4, iFirstReactionIndex, iNode2ColIndex, 1.);
300  } else {
301  WM.PutItem(4, iFirstReactionIndex, iNode2ColIndex, d);
302  }
303 
304  return WorkMat;
305 }
ScalarNode * pNode
Definition: node.h:708
int iOrder
Definition: node.h:710
ScalarDof SD1
Definition: genel_.h:105
void ResizeReset(integer iNewRow, integer iNewCol)
Definition: submat.cc:1084
ScalarDof SD2
Definition: genel_.h:106
void PutItem(integer iSubIt, integer iRow, integer iCol, const doublereal &dCoef)
Definition: submat.h:997
#define DEBUGCOUT(msg)
Definition: myassert.h:232
virtual integer iGetFirstRowIndex(void) const
Definition: node.cc:82
SparseSubMatrixHandler & SetSparse(void)
Definition: submat.h:1178
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
double doublereal
Definition: colamd.c:52
long int integer
Definition: colamd.c:51
virtual integer iGetFirstColIndex(void) const
Definition: node.cc:88

Here is the call graph for this function:

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

Implements Elem.

Definition at line 309 of file genel_.cc.

References ASSERT, DEBUGCOUT, DriveOwner::dGet(), Node::dGetDofValue(), dRct, DofOwnerOwner::iGetFirstIndex(), Node::iGetFirstRowIndex(), ScalarDof::iOrder, ScalarDof::pNode, SubVectorHandler::PutItem(), VectorHandler::ResizeReset(), SD1, and SD2.

313 {
314  DEBUGCOUT("Entering GenelDistance::AssRes()" << std::endl);
315 
316  WorkVec.ResizeReset(3);
317 
318  integer iNode1RowIndex = SD1.pNode->iGetFirstRowIndex() + 1;
319  integer iNode2RowIndex = SD2.pNode->iGetFirstRowIndex() + 1;
320  integer iFirstReactionIndex = iGetFirstIndex() + 1;
321 
322  doublereal dVal1 = SD1.pNode->dGetDofValue(1, SD1.iOrder);
323  doublereal dVal2 = SD2.pNode->dGetDofValue(1, SD2.iOrder);
324  dRct = XCurr(iFirstReactionIndex);
325 
326  WorkVec.PutItem(1, iNode1RowIndex, dRct);
327  WorkVec.PutItem(2, iNode2RowIndex, -dRct);
328 
329  if ((SD1.iOrder == 0) && (SD2.iOrder == 0)) {
330  ASSERT(dCoef != 0.);
331  WorkVec.PutItem(3, iFirstReactionIndex,
332  (dGet() - dVal2 + dVal1)/dCoef);
333 
334  } else {
335  WorkVec.PutItem(3, iFirstReactionIndex, dGet() - dVal2 + dVal1);
336  }
337 
338  return WorkVec;
339 }
ScalarNode * pNode
Definition: node.h:708
virtual const doublereal & dGetDofValue(int iDof, int iOrder=0) const =0
virtual void ResizeReset(integer)
Definition: vh.cc:55
int iOrder
Definition: node.h:710
doublereal dGet(void) const
Definition: drive.cc:671
ScalarDof SD1
Definition: genel_.h:105
ScalarDof SD2
Definition: genel_.h:106
virtual void PutItem(integer iSubRow, integer iRow, const doublereal &dCoef)
Definition: submat.h:1445
#define DEBUGCOUT(msg)
Definition: myassert.h:232
virtual integer iGetFirstRowIndex(void) const
Definition: node.cc:82
#define ASSERT(expression)
Definition: colamd.c:977
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
double doublereal
Definition: colamd.c:52
long int integer
Definition: colamd.c:51
doublereal dRct
Definition: genel_.h:107

Here is the call graph for this function:

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

Reimplemented from Elem.

Definition at line 361 of file genel_.cc.

References ScalarDof::pNode, SD1, and SD2.

361  {
362  connectedNodes.resize(2);
363  connectedNodes[0] = SD1.pNode;
364  connectedNodes[1] = SD2.pNode;
365 }
ScalarNode * pNode
Definition: node.h:708
ScalarDof SD1
Definition: genel_.h:105
ScalarDof SD2
Definition: genel_.h:106
DofOrder::Order GenelDistance::GetDofType ( unsigned int  i) const
virtual

Reimplemented from Elem.

Definition at line 229 of file genel_.cc.

References DofOrder::ALGEBRAIC, and ASSERT.

230 {
231  ASSERT(i == 0);
232  return DofOrder::ALGEBRAIC;
233 }
#define ASSERT(expression)
Definition: colamd.c:977
Genel::Type GenelDistance::GetGenelType ( void  ) const
virtual

Implements Genel.

Definition at line 244 of file genel_.cc.

References Genel::DISTANCE.

245 {
246  return Genel::DISTANCE;
247 }
unsigned int GenelDistance::iGetNumDof ( void  ) const
virtual

Reimplemented from Elem.

Definition at line 223 of file genel_.cc.

224 {
225  return 1;
226 }
void GenelDistance::Output ( OutputHandler OH) const
virtual

Reimplemented from ToBeOutput.

Definition at line 258 of file genel_.cc.

References ToBeOutput::bToBeOutput(), dRct, OutputHandler::Genels(), and WithLabel::GetLabel().

259 {
260  if (bToBeOutput()) {
261  std::ostream& out = OH.Genels();
262  out << std::setw(8) << GetLabel() << " " << dRct << std::endl;
263  }
264 }
std::ostream & Genels(void) const
Definition: output.h:513
virtual bool bToBeOutput(void) const
Definition: output.cc:890
unsigned int GetLabel(void) const
Definition: withlab.cc:62
doublereal dRct
Definition: genel_.h:107

Here is the call graph for this function:

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

Implements Elem.

Definition at line 237 of file genel_.cc.

238 {
239  return out;
240 }
void GenelDistance::SetValue ( DataManager pDM,
VectorHandler X,
VectorHandler XP,
SimulationEntity::Hints ph = 0 
)
virtual

Reimplemented from SimulationEntity.

Definition at line 342 of file genel_.cc.

References DriveOwner::dGet(), Node::dGetDofValue(), ScalarNode::dGetX(), ScalarNode::dGetXPrime(), Node::iGetFirstRowIndex(), ScalarDof::iOrder, ScalarDof::pNode, VectorHandler::PutCoef(), SD1, and SD2.

345 {
346  if (SD2.iOrder == 0) {
348  dGet() - SD2.pNode->dGetX()
349  + SD1.pNode->dGetDofValue(1, SD1.iOrder));
350  } else if (SD2.iOrder == 1) {
352  dGet() - SD2.pNode->dGetXPrime()
353  + SD1.pNode->dGetDofValue(1, SD1.iOrder));
354  }
355 }
ScalarNode * pNode
Definition: node.h:708
virtual const doublereal & dGetDofValue(int iDof, int iOrder=0) const =0
int iOrder
Definition: node.h:710
doublereal dGet(void) const
Definition: drive.cc:671
ScalarDof SD1
Definition: genel_.h:105
virtual const doublereal & dGetX(void) const =0
ScalarDof SD2
Definition: genel_.h:106
virtual const doublereal & dGetXPrime(void) const =0
virtual integer iGetFirstRowIndex(void) const
Definition: node.cc:82
virtual void PutCoef(integer iRow, const doublereal &dCoef)=0

Here is the call graph for this function:

void GenelDistance::WorkSpaceDim ( integer piNumRows,
integer piNumCols 
) const
virtual

Implements Elem.

Definition at line 251 of file genel_.cc.

252 {
253  *piNumRows = 3;
254  *piNumCols = 3;
255 }

Member Data Documentation

doublereal GenelDistance::dRct
protected

Definition at line 107 of file genel_.h.

Referenced by AssRes(), and Output().

ScalarDof GenelDistance::SD1
protected

Definition at line 105 of file genel_.h.

Referenced by AssJac(), AssRes(), GetConnectedNodes(), SetValue(), and ~GenelDistance().

ScalarDof GenelDistance::SD2
protected

Definition at line 106 of file genel_.h.

Referenced by AssJac(), AssRes(), GetConnectedNodes(), SetValue(), and ~GenelDistance().


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