All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
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:
MBSim::Body MBSim::Object MBSim::Element fmatvec::Atom MBSimFlexibleBody::FlexibleBodyContinuum< double > MBSimFlexibleBody::FlexibleBodyContinuum< fmatvec::Vec > MBSimFlexibleBody::FlexibleBodyContinuum< fmatvec::Vec2 > MBSimFlexibleBody::FlexibleBodyContinuum< AT > MBSimFlexibleBody::FlexibleBodyLinearExternal MBSimFlexibleBody::FlexibleBody1s MBSimFlexibleBody::FlexibleBody1SReferenceCurve MBSimFlexibleBody::FlexibleBodyLinearExternalFFR MBSimFlexibleBody::FlexibleBody2s MBSimFlexibleBody::FlexibleBody1s21ANCF MBSimFlexibleBody::FlexibleBody1s21RCM MBSimFlexibleBody::FlexibleBody1s23BTA MBSimFlexibleBody::FlexibleBody1s33ANCF MBSimFlexibleBody::FlexibleBody1s33RCM MBSimFlexibleBody::FlexibleBody1sCosserat MBSimFlexibleBody::FlexibleBody2s13 MBSimFlexibleBody::FlexibleBody1s21Cosserat MBSimFlexibleBody::FlexibleBody1s33Cosserat MBSimFlexibleBody::FlexibleBody2s13Disk MBSimFlexibleBody::FlexibleBody2s13MFRMindlin

Public Member Functions

 FlexibleBody (const std::string &name)
 constructor More...
 
virtual ~FlexibleBody ()
 destructor
 
virtual void updatedq ()
 
virtual void updateqd ()
 
virtual void updateh (int k=0)
 
virtual void updateM ()
 
virtual void updatedhdz ()
 
virtual void updatePositions (NodeFrame *frame)
 
virtual void updateVelocities (NodeFrame *frame)
 
virtual void updateAccelerations (NodeFrame *frame)
 
virtual void updateJacobians (NodeFrame *frame, int j=0)
 
virtual void updateGyroscopicAccelerations (NodeFrame *frame)
 
virtual void plot ()
 
virtual std::string getType () const
 
virtual void initializeUsingXML (xercesc::DOMElement *element)
 
virtual void init (InitStage stage)
 
virtual double computeKineticEnergy ()
 
virtual double computePotentialEnergy ()
 
virtual void setFrameOfReference (MBSim::Frame *frame)
 
virtual void setq0 (fmatvec::Vec q0_)
 
virtual void setu0 (fmatvec::Vec u0_)
 
virtual void BuildElements ()=0
 references finite element coordinates to assembled coordinates
 
const fmatvec::VecgetqElement (int i)
 
const fmatvec::VecgetuElement (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 (NodeFrame *frame)
 
void addFrame (MBSim::ContourFrame *frame)
 
void addFrame (MBSim::FixedRelativeFrame *frame)
 
void addContour (MBSim::Contour *contour)
 
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 ()
 
- Public Member Functions inherited from MBSim::Body
 Body (const std::string &name)
 
virtual void closePlot ()
 
virtual void setDynamicSystemSolver (DynamicSystemSolver *sys)
 
virtual ContourgetContour (const std::string &name, bool check=true) const
 
virtual FramegetFrame (const std::string &name, bool check=true) const
 
virtual FramegetFrameOfReference ()
 
virtual const FramegetFrameOfReference () const
 
int frameIndex (const Frame *frame_) const
 
int contourIndex (const Contour *contour_) const
 
virtual ElementgetChildByContainerAndName (const std::string &container, const std::string &name) const
 
 Object (const std::string &name)
 
virtual void updateqRef (const fmatvec::Vec &qRef)
 
virtual void updateqdRef (const fmatvec::Vec &qdRef)
 
virtual void updatedqRef (const fmatvec::Vec &dqRef)
 
virtual void updateuRef (const fmatvec::Vec &uRef)
 
virtual void updateuallRef (const fmatvec::Vec &uallRef)
 
virtual void updateudRef (const fmatvec::Vec &udRef)
 
virtual void updateduRef (const fmatvec::Vec &duRef)
 
virtual void updateudallRef (const fmatvec::Vec &udallRef)
 
virtual void updatehRef (const fmatvec::Vec &hRef, int i=0)
 
virtual void updatedhdqRef (const fmatvec::Mat &dhdqRef, int i=0)
 
virtual void updatedhduRef (const fmatvec::SqrMat &dhduRef, int i=0)
 
virtual void updatedhdtRef (const fmatvec::Vec &dhdtRef, int i=0)
 
virtual void updaterRef (const fmatvec::Vec &ref, int i=0)
 
virtual void updaterdtRef (const fmatvec::Vec &ref)
 
virtual void updateTRef (const fmatvec::Mat &ref)
 
virtual void updateMRef (const fmatvec::SymMat &ref)
 
virtual void updateLLMRef (const fmatvec::SymMat &ref)
 
virtual void initz ()
 
virtual void writez (H5::GroupBase *group)
 
virtual void readz0 (H5::GroupBase *group)
 
virtual void updateLLM ()
 
virtual double evalKineticEnergy ()
 
virtual double evalPotentialEnergy ()
 
virtual void setUpInverseKinetics ()
 
- Public Member Functions inherited from fmatvec::Atom
Atomoperator= (const Atom &)
 
void setMessageStreamActive (MsgType type, bool active)
 
void getMessageStream (MsgType type, std::shared_ptr< bool > &a, std::shared_ptr< std::ostream > &s)
 
void adoptMessageStreams (const Atom *src=NULL)
 
std::ostream & msg (MsgType type)
 
bool msgAct (MsgType type)
 

Protected Attributes

std::vector
< DiscretizationInterface * > 
discretization
 stl-vector of discretizations/finite elements
 
std::vector< fmatvec::VecqElement
 stl-vector of finite element wise positions
 
std::vector< fmatvec::VecuElement
 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 MBSim::Body
std::vector< Frame * > frame
 
FrameR
 
fmatvec::Mat3xV PJT [2]
 
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
 

Additional Inherited Members

- Public Types inherited from fmatvec::Atom
enum  MsgType
 
- Static Public Member Functions inherited from fmatvec::Atom
static void setCurrentMessageStream (MsgType type, const std::shared_ptr< bool > &a=std::make_shared< bool >(true), const std::shared_ptr< std::ostream > &s=std::make_shared< std::ostream >(std::cout.rdbuf()))
 
static std::ostream & msgStatic (MsgType type)
 
static bool msgActStatic (MsgType type)
 
- Protected Member Functions inherited from MBSim::Body
virtual void addFrame (Frame *frame)
 
- Protected Member Functions inherited from fmatvec::Atom
 Atom (const Atom &src)
 

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

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

constructor

Parameters
nameof body

Member Function Documentation

void MBSimFlexibleBody::FlexibleBody::addFrame ( NodeFrame frame)
Parameters
nodeframe
void MBSimFlexibleBody::FlexibleBody::addFrame ( MBSim::FixedRelativeFrame frame)
Parameters
fixedrelative frame that should be added
virtual void MBSimFlexibleBody::FlexibleBody::exportPositionVelocity ( const std::string &  filenamePos,
const std::string &  filenameVel = std::string(),
const int &  deg = 3,
const bool &  writePsFile = false 
)
inlinevirtual

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
filenamePosName of the exported position curve file
filenameVelName of the exported velocity curve file
degDegree of Nurbs interpolation
writePsFileA 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.

virtual void MBSimFlexibleBody::FlexibleBody::GlobalMatrixContribution ( int  CurrentElement,
const fmatvec::Mat locMat,
fmatvec::Mat gloMat 
)
pure virtual
virtual void MBSimFlexibleBody::FlexibleBody::GlobalMatrixContribution ( int  CurrentElement,
const fmatvec::SymMat locMat,
fmatvec::SymMat gloMat 
)
pure virtual
virtual void MBSimFlexibleBody::FlexibleBody::GlobalVectorContribution ( int  CurrentElement,
const fmatvec::Vec locVec,
fmatvec::Vec gloVec 
)
pure virtual
virtual void MBSimFlexibleBody::FlexibleBody::importPositionVelocity ( const std::string &  filenamePos,
const std::string &  filenameVel = std::string() 
)
inlinevirtual

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
filenamePosName of the imported position curve file
filenameVelName of the imported velocity curve file

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

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

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

Parameters
datacontour parameter
ffselection of specific calculations for frames
frameoptional: external frame, otherwise contour parameters are changed

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

Parameters
datacontour 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

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:

Impressum / Disclaimer / Datenschutz Generated by doxygen 1.8.5 Valid HTML