mbsimflexiblebody 4.0.0 MBSim Flexible Body Module

Public Member Functions | Protected Attributes | List of all members
MBSimFlexibleBody::FlexibleBody Class Referenceabstract

upmost class for flexible body implementation More...

`#include <flexible_body.h>`

Inheritance diagram for MBSimFlexibleBody::FlexibleBody:
[legend]

## Public Member Functions

| FlexibleBody (const std::string &name)
| constructor More...
| ~FlexibleBody () override
| destructor
void | updateqd () override
void | updateh (int k=0) override
void | updateM () override
void | updatedhdz () override
void | initializeUsingXML (xercesc::DOMElement *element) override
void | init (InitStage stage, const MBSim::InitConfigSet &config) override
virtual double | computeKineticEnergy ()
virtual double | computePotentialEnergy ()
void | setFrameOfReference (MBSim::Frame *frame) override
virtual void | setq0 (const fmatvec::Vec &q0_)
virtual void | setu0 (const fmatvec::Vec &u0_)
virtual void | BuildElements ()=0
| references finite element coordinates to assembled coordinates
const fmatvec::Vec & | getqElement (int i)
const fmatvec::Vec & | getuElement (int i)
virtual fmatvec::Vec3 | getAngles (int i)
virtual fmatvec::Vec3 | getDerivativeOfAngles (int i)
virtual void | GlobalVectorContribution (int CurrentElement, const fmatvec::Vec &locVec, fmatvec::Vec &gloVec)=0
| insert 'local' information in global vectors More...
virtual void | GlobalMatrixContribution (int CurrentElement, const fmatvec::Mat &locMat, fmatvec::Mat &gloMat)=0
| insert 'local' information in global matrices More...
virtual void | GlobalMatrixContribution (int CurrentElement, const fmatvec::SymMat &locMat, fmatvec::SymMat &gloMat)=0
| insert 'local' information in global matrices More...
void | setMassProportionalDamping (const double d_)
| cartesian kinematic for contour or external frame (normal, tangent, binormal) is set by implementation class More...
void | addFrame (MBSim::ContourFrame *frame)
void | addFrame (MBSim::FixedRelativeFrame *frame)
void | addContour (MBSim::Contour *contour) override
virtual void | exportPositionVelocity (const std::string &filenamePos, const std::string &filenameVel=std::string(), const int &deg=3, const bool &writePsFile=false)
| interpolates the position and optional the velocity coordinates of the flexible body with Nurbs-package and exports the nurbs curve in the specified file More...
virtual void | importPositionVelocity (const std::string &filenamePos, const std::string &filenameVel=std::string())
| imports the interpolated position and optional the velocity files (created with exportPositionVelocity) and fits the rigid and flexible coordinate dofs and optional the translatory velocity components of flexible body to the imported nurbs curve More...
void | resetUpToDate () override
void | addFrame (NodeBasedFrame *frame)
Public Member Functions inherited from MBSimFlexibleBody::NodeBasedBody
| NodeBasedBody (const std::string &name)
void | resetUpToDate () override
virtual void | updatePositions (int i)
virtual void | updateVelocities (int i)
virtual void | updateAccelerations (int i)
virtual void | updateJacobians (int i, int j=0)
virtual void | updateGyroscopicAccelerations (int i)
virtual void | updateStresses (int i)
const fmatvec::Vec3 & | evalNodalPosition (int i)
const fmatvec::Vec3 & | evalNodalVelocity (int i)
const fmatvec::Vec3 & | evalNodalAcceleration (int i)
const fmatvec::Mat3xV & | evalNodalJacobianOfTranslation (int i, int j=0)
const fmatvec::Vec3 & | evalNodalGyroscopicAccelerationOfTranslation (int i)
const fmatvec::Vec3 & | evalNodalDisplacement (int i)
const fmatvec::Vector< fmatvec::Fixed< 6 >, double > & | evalNodalStress (int i)
fmatvec::SqrMat3 & | getNodalOrientation (int i, bool check=true)
fmatvec::Vec3 & | getNodalAngularVelocity (int i, bool check=true)
fmatvec::Vec3 & | getNodalAngularAcceleration (int i, bool check=true)
fmatvec::Mat3xV & | getNodalJacobianOfRotation (int i, int j=0, bool check=true)
fmatvec::Vec3 & | getNodalGyroscopicAccelerationOfRotation (int i, bool check=true)
void | addFrame (NodeBasedFrame *frame)
void | init (InitStage stage, const MBSim::InitConfigSet &config) override
int | getNumberOfNodes ()
int | getNodeIndex (int nodeNumber) const
Public Member Functions inherited from MBSim::Body
| Body (const std::string &name)
void | plot () override
void | setDynamicSystemSolver (DynamicSystemSolver *sys) override
void | init (InitStage stage, const InitConfigSet &config) override
void | createPlotGroup () override
virtual Contour * | getContour (const std::string &name, bool check=true) const
virtual Frame * | getFrame (const std::string &name, bool check=true) const
virtual Frame * | getFrameOfReference ()
virtual const Frame * | getFrameOfReference () const
int | frameIndex (const Frame *frame_) const
int | contourIndex (const Contour *contour_) const
Element * | getChildByContainerAndName (const std::string &container, const std::string &name) const override
virtual void | addFrame (Frame *frame)
Public Member Functions inherited from MBSim::Object
| Object (const std::string &name)
void | plot () override
virtual void | updateqRef (fmatvec::Vec &qRef)
virtual void | updateqdRef (fmatvec::Vec &qdRef)
virtual void | updatedqRef (fmatvec::Vec &dqRef)
virtual void | updateuRef (fmatvec::Vec &uRef)
virtual void | updateuallRef (fmatvec::Vec &uallRef)
virtual void | updateudRef (fmatvec::Vec &udRef)
virtual void | updateduRef (fmatvec::Vec &duRef)
virtual void | updateudallRef (fmatvec::Vec &udallRef)
virtual void | updatehRef (fmatvec::Vec &hRef, int i=0)
virtual void | updatedhdqRef (fmatvec::Mat &dhdqRef, int i=0)
virtual void | updatedhduRef (fmatvec::SqrMat &dhduRef, int i=0)
virtual void | updatedhdtRef (fmatvec::Vec &dhdtRef, int i=0)
virtual void | updaterRef (fmatvec::Vec &ref, int i=0)
virtual void | updaterdtRef (fmatvec::Vec &ref)
virtual void | updateTRef (fmatvec::Mat &ref)
virtual void | updateMRef (fmatvec::SymMat &ref)
virtual void | updateLLMRef (fmatvec::SymMat &ref)
void | init (InitStage stage, const InitConfigSet &config) override
virtual void | initz ()
virtual void | writez (H5::GroupBase *group)
virtual void | readz0 (H5::GroupBase *group)
virtual void | updateLLM ()
virtual void | setUpInverseKinetics ()
void | createPlotGroup () override
Public Member Functions inherited from MBSim::Element
| Element (const std::string &name)
virtual void | plotAtSpecialEvent ()
const std::string & | getName () const
void | setName (const std::string &str)
DynamicSystemSolver * | getDynamicSystemSolver ()
H5::GroupBase * | getPlotGroup ()
bool | getPlotFeature (const PlotFeatureEnum &pf)
virtual void | setPlotFeature (const PlotFeatureEnum &pf, bool value)
void | setPlotFeatureForChildren (const PlotFeatureEnum &pf, bool value)
void | setPlotFeatureRecursive (const PlotFeatureEnum &pf, bool value)
void | setPlotAttribute (const std::string &name, const T &value)
T * | getByPath (const std::string &path, bool initialCaller=true) const
std::string | getPath (const Element *relTo=nullptr, std::string sep="/") const
std::vector< Element * > | getDependencies () const
int | computeLevel ()

## Protected Attributes

std::vector< DiscretizationInterface * > | discretization
| stl-vector of discretizations/finite elements
std::vector< fmatvec::Vec > | qElement
| stl-vector of finite element wise positions
std::vector< fmatvec::Vec > | uElement
| stl-vector of finite element wise velocities
double | d_massproportional
| damping factor for mass proportion, see BodyFlexible::setMassProportionalDamping()
bool | updEle
| vector of contour parameters each describing a frame More...
Protected Attributes inherited from MBSimFlexibleBody::NodeBasedBody
std::vector< fmatvec::Vec3 > | WrOP
std::vector< fmatvec::Vec3 > | WvP
std::vector< fmatvec::Vec3 > | Wom
std::vector< fmatvec::Vec3 > | WaP
std::vector< fmatvec::Vec3 > | Wpsi
std::vector< fmatvec::Vec3 > | WjP
std::vector< fmatvec::Vec3 > | WjR
std::vector< fmatvec::Vec3 > | disp
std::vector< fmatvec::SqrMat3 > | AWK
std::vector< fmatvec::Mat3xV > | WJP [2]
std::vector< fmatvec::Mat3xV > | WJR [2]
std::vector< bool > | updNodalPos
std::vector< bool > | updNodalVel
std::vector< bool > | updNodalAcc
std::vector< bool > | updNodalGA
std::vector< bool > | updNodalStress
std::vector< bool > | updNodalJac [2]
std::vector< fmatvec::Vector< fmatvec::Fixed< 6 >, double > > | sigma
int | nn {0}
std::vector< int > | nodeMap
std::vector< int > | nodeNumbers
Protected Attributes inherited from MBSim::Body
std::vector< Frame * > | frame
Frame * | R
fmatvec::Mat3xV | PJT [2]
Protected Attributes inherited from MBSim::Object
int | qSize
int | uSize [2]
int | hSize [2]
int | qInd
fmatvec::Vec | q
fmatvec::Vec | q0
fmatvec::Vec | qd
fmatvec::Vec | h [2]
fmatvec::Mat | dhdq
fmatvec::Mat | T
fmatvec::SymMat | M
fmatvec::SymMat | LLM
Protected Attributes inherited from MBSim::Element
std::string | name
std::string | path
MBXMLUtils::DOMEvalException | domEvalError
DynamicSystemSolver * | ds
H5::VectorSerie< double > * | plotVectorSerie
std::vector< double > | plotVector
std::vector< std::string > | plotColumns
H5::GroupBase * | plotGroup
std::vector< Element * > | dependency
PlotFeatureMap | plotFeature

## Additional Inherited Members

Public Types inherited from MBSim::Element
enum | InitStage
Public Attributes inherited from MBSim::Element
| resolveStringRef
| preInit
| plotting
| unknownStage

## Detailed Description

upmost class for flexible body implementation

Author
  Roland Zander
  Thorsten Schindler

Date
  2009-03-24 changes for new MBSim (Thorsten Schindler)
  2009-03-25 conflicts solved (Thorsten Schindler)
  2009-04-05 changed to non-template definition (Schindler / Zander)
  2009-04-20 frame concept (Thorsten Schindler)
  2009-06-14 OpenMP (Thorsten Schindler)
  2009-07-16 splitted link / object right hand side (Thorsten Schindler)
  2009-07-27 implicit integration (Thorsten Schindler)
  2010-06-20 revision of doxygen comments: add parameter names (Roland Zander)

Todo:

  OpenMP only static scheduling with intelligent reordering of vectors by dynamic test runs TODO

  mass proportional damping should be distributed on discretization and is not at the correct place (dependence on M) TODO

## Constructor & Destructor Documentation

## ◆ FlexibleBody()

MBSimFlexibleBody::FlexibleBody::FlexibleBody | ( | const std::string & | name | ) |

constructor

Parameters

  name | of body

## Member Function Documentation

## ◆ addFrame() [1/2]

void MBSimFlexibleBody::NodeBasedBody::addFrame

Parameters

  node | frame

## ◆ addFrame() [2/2]

void MBSimFlexibleBody::FlexibleBody::addFrame | ( | MBSim::FixedRelativeFrame * | frame | ) |

Parameters

  fixed | relative frame that should be added

## ◆ exportPositionVelocity()

virtual void MBSimFlexibleBody::FlexibleBody::exportPositionVelocity | ( | const std::string & | filenamePos,
|  | const std::string & | filenameVel = `std::string()`,
|  | const int & | deg = `3`,
|  | const bool & | writePsFile = `false`
| ) |  |

inline virtual

interpolates the position and optional the velocity coordinates of the flexible body with Nurbs-package and exports the nurbs curve in the specified file

Parameters

  filenamePos | Name of the exported position curve file
  filenameVel | Name of the exported velocity curve file
  deg | Degree of Nurbs interpolation
  writePsFile | A Postscript-file of the curve profile is created

Remark: the knot vector is parametrized between [0,L]

Reimplemented in MBSimFlexibleBody::FlexibleBody1s21Cosserat, MBSimFlexibleBody::FlexibleBody1s33Cosserat, MBSimFlexibleBody::FlexibleBody1sCosserat, MBSimFlexibleBody::FlexibleBody1s21RCM, and MBSimFlexibleBody::FlexibleBody1s33RCM.

## ◆ GlobalMatrixContribution() [1/2]

virtual void MBSimFlexibleBody::FlexibleBody::GlobalMatrixContribution | ( | int | CurrentElement,
|  | const fmatvec::Mat & | locMat,
|  | fmatvec::Mat & | gloMat
| ) |  |

pure virtual

insert 'local' information in global matrices

Parameters

  CurrentElement | number of current finite element
  locMat | local matrix
  gloMat | global matrix

Implemented in MBSimFlexibleBody::FlexibleBody1SReferenceCurve, MBSimFlexibleBody::FlexibleBodyLinearExternalFFR, MBSimFlexibleBody::FlexibleBody1s21Cosserat, MBSimFlexibleBody::FlexibleBody1s33Cosserat, MBSimFlexibleBody::FlexibleBody1sCosserat, MBSimFlexibleBody::FlexibleBodyLinearExternal, MBSimFlexibleBody::FlexibleBody1s21RCM, MBSimFlexibleBody::FlexibleBody2s13MFRMindlin, MBSimFlexibleBody::FlexibleBody1s21ANCF, MBSimFlexibleBody::FlexibleBody1s33ANCF, MBSimFlexibleBody::FlexibleBody2s13Disk, MBSimFlexibleBody::FlexibleBody1s33RCM, and MBSimFlexibleBody::FlexibleBody1s23BTA.

## ◆ GlobalMatrixContribution() [2/2]

virtual void MBSimFlexibleBody::FlexibleBody::GlobalMatrixContribution | ( | int | CurrentElement,
|  | const fmatvec::SymMat & | locMat,
|  | fmatvec::SymMat & | gloMat
| ) |  |

pure virtual

insert 'local' information in global matrices

Parameters

  CurrentElement | number of current finite element
  locMat | local matrix
  gloMat | global matrix

Implemented in MBSimFlexibleBody::FlexibleBody1SReferenceCurve, MBSimFlexibleBody::FlexibleBodyLinearExternalFFR, MBSimFlexibleBody::FlexibleBody1s21Cosserat, MBSimFlexibleBody::FlexibleBody1s33Cosserat, MBSimFlexibleBody::FlexibleBody1sCosserat, MBSimFlexibleBody::FlexibleBodyLinearExternal, MBSimFlexibleBody::FlexibleBody1s21RCM, MBSimFlexibleBody::FlexibleBody2s13MFRMindlin, MBSimFlexibleBody::FlexibleBody1s21ANCF, MBSimFlexibleBody::FlexibleBody1s33ANCF, MBSimFlexibleBody::FlexibleBody2s13Disk, MBSimFlexibleBody::FlexibleBody1s33RCM, and MBSimFlexibleBody::FlexibleBody1s23BTA.

## ◆ GlobalVectorContribution()

virtual void MBSimFlexibleBody::FlexibleBody::GlobalVectorContribution | ( | int | CurrentElement,
|  | const fmatvec::Vec & | locVec,
|  | fmatvec::Vec & | gloVec
| ) |  |

pure virtual

insert 'local' information in global vectors

Parameters

  number | of finite element
  local | vector
  global | vector

Implemented in MBSimFlexibleBody::FlexibleBody1SReferenceCurve, MBSimFlexibleBody::FlexibleBodyLinearExternalFFR, MBSimFlexibleBody::FlexibleBody1s21Cosserat, MBSimFlexibleBody::FlexibleBody1s33Cosserat, MBSimFlexibleBody::FlexibleBody1sCosserat, MBSimFlexibleBody::FlexibleBodyLinearExternal, MBSimFlexibleBody::FlexibleBody1s21RCM, MBSimFlexibleBody::FlexibleBody2s13MFRMindlin, MBSimFlexibleBody::FlexibleBody1s21ANCF, MBSimFlexibleBody::FlexibleBody1s33ANCF, MBSimFlexibleBody::FlexibleBody2s13Disk, MBSimFlexibleBody::FlexibleBody1s33RCM, and MBSimFlexibleBody::FlexibleBody1s23BTA.

## ◆ importPositionVelocity()

virtual void MBSimFlexibleBody::FlexibleBody::importPositionVelocity | ( | const std::string & | filenamePos,
|  | const std::string & | filenameVel = `std::string()`
| ) |  |

inline virtual

imports the interpolated position and optional the velocity files (created with exportPositionVelocity) and fits the rigid and flexible coordinate dofs and optional the translatory velocity components of flexible body to the imported nurbs curve

Parameters

  filenamePos | Name of the imported position curve file
  filenameVel | Name of the imported velocity curve file

Reimplemented in MBSimFlexibleBody::FlexibleBody1s21Cosserat, MBSimFlexibleBody::FlexibleBody1s33Cosserat, MBSimFlexibleBody::FlexibleBody1sCosserat, MBSimFlexibleBody::FlexibleBody1s21RCM, and MBSimFlexibleBody::FlexibleBody1s33RCM.

## ◆ setMassProportionalDamping()

void MBSimFlexibleBody::FlexibleBody::setMassProportionalDamping | ( | const double | d_ | ) |

inline

cartesian kinematic for contour or external frame (normal, tangent, binormal) is set by implementation class

Parameters

  data | contour parameter
  ff | selection of specific calculations for frames
  frame | optional: external frame, otherwise contour parameters are changed

cartesian kinematic on a nodeJacobians and gyroscopes for contour or external frame are set by implementation class

Parameters

  data | contour parameter
  frame | optional external frame, otherwise contour parameters are changed

damping matrix computation, updated with changes in mass matrix \(\vM\): \(\vh_d=-d_{pm}\vM\vu\) set mass proportional damping

Parameters

  d_ | coefficient \(d_{pm}\)

## Member Data Documentation

## ◆ updEle

bool MBSimFlexibleBody::FlexibleBody::updEle

protected

vector of contour parameters each describing a frame

list of all contour frames

Todo:
  : actually continous frames should be added to a contour and not to the body?!

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

- /mbsim-env/mbsim/modules/mbsimFlexibleBody/mbsimFlexibleBody/flexible_body.h
- /mbsim-env/mbsim/modules/mbsimFlexibleBody/mbsimFlexibleBody/flexible_body.cc