All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
MBSimFlexibleBody::FlexibleBody1s33Cosserat Class Reference

finite element for spatial beam using Cosserat model More...

#include <flexible_body_1s_33_cosserat.h>

Inheritance diagram for MBSimFlexibleBody::FlexibleBody1s33Cosserat:
MBSimFlexibleBody::FlexibleBody1sCosserat MBSimFlexibleBody::FlexibleBody1s MBSimFlexibleBody::FlexibleBodyContinuum< double > MBSimFlexibleBody::FlexibleBody MBSim::Body MBSim::Object MBSim::Element fmatvec::Atom

Public Member Functions

 FlexibleBody1s33Cosserat (const std::string &name, bool openStructure)
 constructor More...
 
virtual ~FlexibleBody1s33Cosserat ()
 destructor
 
virtual void BuildElements ()
 references finite element coordinates to assembled coordinates
 
virtual void GlobalVectorContribution (int n, const fmatvec::Vec &locVec, fmatvec::Vec &gloVec)
 insert 'local' information in global vectors More...
 
virtual void GlobalMatrixContribution (int n, const fmatvec::Mat &locMat, fmatvec::Mat &gloMat)
 insert 'local' information in global matrices More...
 
virtual void GlobalMatrixContribution (int n, const fmatvec::SymMat &locMat, fmatvec::SymMat &gloMat)
 insert 'local' information in global matrices More...
 
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...
 
virtual void updatePositions (Frame1s *frame)
 
virtual void updateVelocities (Frame1s *frame)
 
virtual void updateAccelerations (Frame1s *frame)
 
virtual void updateJacobians (Frame1s *frame, int j=0)
 
virtual void updateGyroscopicAccelerations (Frame1s *frame)
 
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 fmatvec::Vec3 getAngles (int i)
 
virtual fmatvec::Vec3 getDerivativeOfAngles (int i)
 
virtual void init (InitStage stage)
 
virtual double computePotentialEnergy ()
 
virtual void updateLLM ()
 
virtual std::string getType () const
 
void setNumberElements (int n)
 
void setMomentsInertia (double I1_, double I2_, double I0_)
 
void setCurlRadius (double R1_, double R2_)
 
void setMaterialDamping (double cEps0D_, double cEps1D_, double cEps2D_)
 
virtual int getNumberOfElementDOF () const
 
int getNumberElements () const
 
int getNumberDOFs () const
 
fmatvec::Vector
< fmatvec::Fixed< 6 >, double > 
getPositions (double x)
 compute positions and angle at Lagrangian coordinate in local FE coordinates More...
 
fmatvec::Vector
< fmatvec::Fixed< 6 >, double > 
getVelocities (double x)
 compute velocities and differentiated angles at Lagrangian coordinate in local FE coordinates More...
 
fmatvec::Vec3 computeAngles (double sGlobal, const fmatvec::Vec &vec)
 compute angles at Lagrangian coordinate in local FE coordinates More...
 
void initInfo ()
 initialise beam only for giving information with respect to state, number elements, length, (not for simulation)
 
void BuildElementTranslation (const double &sGlobal, double &sLocal, int &currentElementTranslation)
 detect current finite element (t void setOpenMBVSpineExtrusion(OpenMBV::SpineExtrusion* spineExtrusion) { openMBVSpineExtrusion = spineExtrusion; } OpenMBV::Body* getOpenMBVSpineExtrusion() { return openMBVSpineExtrusion; } More...
 
- Public Member Functions inherited from MBSimFlexibleBody::FlexibleBody1sCosserat
 FlexibleBody1sCosserat (const std::string &name, bool openStructure)
 constructor More...
 
const fmatvec::VecevalqRotationElement (int i)
 
const fmatvec::VecevaluRotationElement (int i)
 
virtual void updateh (int i=0)
 
void setEGModuls (double E_, double G_)
 
void setDensity (double rho_)
 
void setCrossSectionalArea (double A_)
 
virtual void setMomentsInertia (double I1_)
 
virtual void setCurlRadius (double R1_)
 
virtual void setMaterialDamping (double cEps0D_, double cEps1D_)
 
virtual Contour1sNeutralCosseratcreateNeutralPhase (const std::string &contourName="Neutral")
 automatically creates its neutral contour
 
virtual fmatvec::Mat3xV transformJacobian (fmatvec::Mat3xV J)
 interface function to transform the Jacobian if the generalized coordinates have been changed More...
 
virtual int getqSizeFull () const
 
- Public Member Functions inherited from MBSimFlexibleBody::FlexibleBody1s
 FlexibleBody1s (const std::string &name, bool openStructure)
 constructor: More...
 
virtual void plot ()
 
void setLength (double L_)
 
double getLength () const
 
bool getOpenStructure () const
 
void addFrame (Frame1s *frame)
 
virtual fmatvec::Vec3 getPosition (double s)
 
virtual fmatvec::SqrMat3 getOrientation (double s)
 
virtual fmatvec::Vec3 getAngles (double s)
 
void setOpenMBVSpineExtrusion (const std::shared_ptr< OpenMBV::SpineExtrusion > &body)
 
- Public Member Functions inherited from MBSimFlexibleBody::FlexibleBodyContinuum< double >
 FlexibleBodyContinuum (const std::string &name)
 constructor More...
 
void setContourNodes (const std::vector< double > nodes)
 
void setNodeOffset (const doublenodeOffset_)
 
double getNodeOffset () const
 
- Public Member Functions inherited from MBSimFlexibleBody::FlexibleBody
 FlexibleBody (const std::string &name)
 constructor More...
 
virtual ~FlexibleBody ()
 destructor
 
virtual void updatedq ()
 
virtual void updateqd ()
 
virtual void updateM ()
 
virtual void updatedhdz ()
 
virtual void initializeUsingXML (xercesc::DOMElement *element)
 
virtual double computeKineticEnergy ()
 
virtual void setFrameOfReference (MBSim::Frame *frame)
 
virtual void setq0 (fmatvec::Vec q0_)
 
virtual void setu0 (fmatvec::Vec u0_)
 
const fmatvec::VecgetqElement (int i)
 
const fmatvec::VecgetuElement (int i)
 
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)
 
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 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 Member Functions

 FlexibleBody1s33Cosserat (const FlexibleBody1s33Cosserat &)
 
FlexibleBody1s33Cosseratoperator= (const FlexibleBody1s33Cosserat &)
 
void initM ()
 initialize translational part of mass matrix and calculate Cholesky decomposition
 
void computeBoundaryCondition ()
 compute boundary conditions for rotation grid first and last finite difference rotation beam element refer to values not directly given by dof in open structure they have to be estimated in the following function
 
void GlobalVectorContributionRotation (int n, const fmatvec::Vec &locVec, fmatvec::Vec &gloVec)
 insert 'local' information in global vectors for rotation grid More...
 
- Protected Member Functions inherited from MBSimFlexibleBody::FlexibleBody1sCosserat
 FlexibleBody1sCosserat (const FlexibleBody1sCosserat &)
 
FlexibleBody1sCosseratoperator= (const FlexibleBody1sCosserat &)
 
- Protected Member Functions inherited from MBSim::Body
virtual void addFrame (Frame *frame)
 
- Protected Member Functions inherited from fmatvec::Atom
 Atom (const Atom &src)
 

Protected Attributes

bool JTransInterp
 marker if Jacobians already interpolated
 
double I2
 area moments of inertia I0: around torsional axis I1: in t-b-plane I2: in t-n-plane
 
double I0
 
double R2
 radius of undeformed shape R1: in t-b-plane R2: in t-n-plane
 
double cEps2D
 strain damping
 
- Protected Attributes inherited from MBSimFlexibleBody::FlexibleBody1sCosserat
std::vector
< DiscretizationInterface * > 
rotationDiscretization
 stl-vector of finite elements for rotation grid
 
std::vector< fmatvec::VecqRotationElement
 stl-vector of finite element positions for rotation grid
 
std::vector< fmatvec::VecuRotationElement
 stl-vector of finite element wise velocities for rotation grid
 
CardanPtr angle
 angle parametrisation
 
int Elements
 number of translational elements
 
int rotationalElements
 number of rotational elements =Elements (for a closed structure) or =Elements+1 (for an open structure)
 
double l0
 length of entire beam and finite elements
 
double E
 elastic modules
 
double G
 
double A
 area of cross-section
 
double I1
 area moments of inertia I0: around torsional axis I1: in t-b-plane I2: in t-n-plane
 
double rho
 density
 
double R1
 radius of undeformed shape R1: in t-b-plane R2: in t-n-plane
 
double cEps0D
 strain damping
 
double cEps1D
 
bool initialised
 initialised FLAG
 
fmatvec::Vec bound_ang_start
 boundary conditions for rotation grid first and last finite difference rotation beam element refer to values not directly given by dof in open structure they have to be estimated by the following values calculated in computeBoundaryCondition()
 
fmatvec::Vec bound_ang_end
 
fmatvec::Vec bound_ang_vel_start
 
fmatvec::Vec bound_ang_vel_end
 
Contour1sNeutralCosseratncc
 contour for the spine extrusion
 
- Protected Attributes inherited from MBSimFlexibleBody::FlexibleBody1s
double L
 length of beam
 
bool openStructure
 flag for open (cantilever beam) or closed (rings) structures
 
Frame1s P
 
- Protected Attributes inherited from MBSimFlexibleBody::FlexibleBodyContinuum< double >
std::vector< double > userContourNodes
 grid for contact point detection
 
double nodeOffset
 offset of the ROTNODE from the TRANSNODE
 
- Protected Attributes inherited from MBSimFlexibleBody::FlexibleBody
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)
 

Detailed Description

finite element for spatial beam using Cosserat model

Author
Thorsten Schindler
Christian Käsbauer
Thomas Cebulla
Date
2011-09-10 initial commit (Thorsten Schindler) 2011-10-08 basics derived and included (Thorsten Schindler)
2011-10-12 rotation grid added (Thorsten Schindler)
2012-03-15 updateKinematicsForFrame and contact Jacobians (Cebulla / Schindler)
2012-05-10 added initInfo()-function and Contour1sFlexible for perlchain example (Thomas Cebulla)
2012-05-25 added export and import position velocity function (Thomas Cebulla)
Todo:

compute boundary conditions TODO

check open structure in contact kinematics TODO

Cosserat model based on H. Lang, J. Linn, M. Arnold: Multi-body dynamics simulation of geometrically exact Cosserat rods but with

Constructor & Destructor Documentation

MBSimFlexibleBody::FlexibleBody1s33Cosserat::FlexibleBody1s33Cosserat ( const std::string &  name,
bool  openStructure 
)

constructor

Parameters
nameof body
boolto specify open (cantilever) or closed (ring) structure

Member Function Documentation

void MBSimFlexibleBody::FlexibleBody1s33Cosserat::BuildElementTranslation ( const double &  sGlobal,
double &  sLocal,
int &  currentElementTranslation 
)
virtual

detect current finite element (t void setOpenMBVSpineExtrusion(OpenMBV::SpineExtrusion* spineExtrusion) { openMBVSpineExtrusion = spineExtrusion; } OpenMBV::Body* getOpenMBVSpineExtrusion() { return openMBVSpineExtrusion; }

Parameters
globalparametrisation
localparametrisation
finiteelement number

Implements MBSimFlexibleBody::FlexibleBody1sCosserat.

Vec3 MBSimFlexibleBody::FlexibleBody1s33Cosserat::computeAngles ( double  sGlobal,
const fmatvec::Vec vec 
)

compute angles at Lagrangian coordinate in local FE coordinates

Parameters
Lagrangiancoordinate
vectorto be interpolated
void MBSimFlexibleBody::FlexibleBody1s33Cosserat::exportPositionVelocity ( const std::string &  filenamePos,
const std::string &  filenameVel = std::string(),
const int &  deg = 3,
const bool &  writePsFile = false 
)
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
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]

Implements MBSimFlexibleBody::FlexibleBody1sCosserat.

fmatvec::Vector< Fixed< 6 >, double > MBSimFlexibleBody::FlexibleBody1s33Cosserat::getPositions ( double  x)

compute positions and angle at Lagrangian coordinate in local FE coordinates

Parameters
Lagrangiancoordinate
fmatvec::Vector< Fixed< 6 >, double > MBSimFlexibleBody::FlexibleBody1s33Cosserat::getVelocities ( double  x)

compute velocities and differentiated angles at Lagrangian coordinate in local FE coordinates

Parameters
Lagrangiancoordinate
void MBSimFlexibleBody::FlexibleBody1s33Cosserat::GlobalMatrixContribution ( int  CurrentElement,
const fmatvec::Mat locMat,
fmatvec::Mat gloMat 
)
virtual

insert 'local' information in global matrices

Parameters
CurrentElementnumber of current finite element
locMatlocal matrix
gloMatglobal matrix

Implements MBSimFlexibleBody::FlexibleBody1sCosserat.

void MBSimFlexibleBody::FlexibleBody1s33Cosserat::GlobalMatrixContribution ( int  CurrentElement,
const fmatvec::SymMat locMat,
fmatvec::SymMat gloMat 
)
virtual

insert 'local' information in global matrices

Parameters
CurrentElementnumber of current finite element
locMatlocal matrix
gloMatglobal matrix

Implements MBSimFlexibleBody::FlexibleBody1sCosserat.

void MBSimFlexibleBody::FlexibleBody1s33Cosserat::GlobalVectorContribution ( int  CurrentElement,
const fmatvec::Vec locVec,
fmatvec::Vec gloVec 
)
virtual

insert 'local' information in global vectors

Parameters
numberof finite element
localvector
globalvector

Implements MBSimFlexibleBody::FlexibleBody1sCosserat.

void MBSimFlexibleBody::FlexibleBody1s33Cosserat::GlobalVectorContributionRotation ( int  n,
const fmatvec::Vec locVec,
fmatvec::Vec gloVec 
)
protectedvirtual

insert 'local' information in global vectors for rotation grid

Parameters
numberof finite element
localvector
globalvector

Implements MBSimFlexibleBody::FlexibleBody1sCosserat.

void MBSimFlexibleBody::FlexibleBody1s33Cosserat::importPositionVelocity ( const std::string &  filenamePos,
const std::string &  filenameVel = std::string() 
)
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
filenamePosName of the imported position curve file
filenameVelName of the imported velocity curve file

Implements MBSimFlexibleBody::FlexibleBody1sCosserat.


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

Impressum / Disclaimer / Datenschutz Generated by doxygen 1.8.5 Valid HTML