mbsimflexiblebody  4.0.0
MBSim Flexible Body Module
MBSimFlexibleBody::FlexibleBody1s21Cosserat Class Reference

flexible body for planar beam using Cosserat model More...

#include <1s_21_cosserat.h>

Inheritance diagram for MBSimFlexibleBody::FlexibleBody1s21Cosserat:
[legend]

Public Member Functions

 FlexibleBody1s21Cosserat (const std::string &name, bool openStructure)
 constructor More...
 
 ~FlexibleBody1s21Cosserat () override
 destructor
 
void BuildElements () override
 references finite element coordinates to assembled coordinates More...
 
const fmatvec::Vec & evalqFull ()
 
const fmatvec::Vec & evaluFull ()
 
void GlobalVectorContribution (int n, const fmatvec::Vec &locVec, fmatvec::Vec &gloVec) override
 insert 'local' information in global vectors More...
 
void GlobalMatrixContribution (int n, const fmatvec::Mat &locMat, fmatvec::Mat &gloMat) override
 insert 'local' information in global matrices More...
 
void GlobalMatrixContribution (int n, const fmatvec::SymMat &locMat, fmatvec::SymMat &gloMat) override
 insert 'local' information in global matrices More...
 
void exportPositionVelocity (const std::string &filenamePos, const std::string &filenameVel=std::string(), const int &deg=3, const bool &writePsFile=false) override
 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...
 
void importPositionVelocity (const std::string &filenamePos, const std::string &filenameVel=std::string()) override
 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 updatePositions (Frame1s *frame) override
 
void updateVelocities (Frame1s *frame) override
 
void updateAccelerations (Frame1s *frame) override
 
void updateJacobians (Frame1s *frame, int j=0) override
 
void updateGyroscopicAccelerations (Frame1s *frame) override
 
void updatePositions (int node) override
 
void updateVelocities (int node) override
 
void updateAccelerations (int node) override
 
void updateJacobians (int node, int j=0) override
 
void updateGyroscopicAccelerations (int node) override
 
void init (InitStage stage, const MBSim::InitConfigSet &config) override
 
double computePotentialEnergy () override
 
void updateM () override
 
void updateLLM () override
 
void updateh (int i=0) override
 
void setNumberElements (int n) override
 
void setMomentsInertia (double I1_) override
 
void setCurlRadius (double R1_) override
 
void setMaterialDamping (double cEps0D_, double cEps1D_) override
 
fmatvec::Mat3xV transformJacobian (fmatvec::Mat3xV J) override
 interface function to transform the Jacobian if the generalized coordinates have been changed More...
 
int getNumberOfElementDOF () const override
 
int getNumberElements () const override
 
double getLength () const
 
int getqSizeFull () const override
 
bool isOpenStructure () const
 
void enablePOD (const std::string &h5Path, int reduceMode=0, int POMSize=0)
 
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 () override
 initialise beam only for giving information with respect to state, number elements, length, (not for simulation) More...
 
void BuildElementTranslation (const double &sGlobal, double &sLocal, int &currentElementTranslation) override
 detect current finite element (translation) More...
 
- Public Member Functions inherited from MBSimFlexibleBody::FlexibleBody1sCosserat
 FlexibleBody1sCosserat (const std::string &name, bool openStructure)
 constructor More...
 
void BuildElements () override=0
 references finite element coordinates to assembled coordinates More...
 
const fmatvec::Vec & evalqRotationElement (int i)
 
const fmatvec::Vec & evaluRotationElement (int i)
 
void GlobalVectorContribution (int n, const fmatvec::Vec &locVec, fmatvec::Vec &gloVec) override=0
 insert 'local' information in global vectors More...
 
void GlobalMatrixContribution (int n, const fmatvec::Mat &locMat, fmatvec::Mat &gloMat) override=0
 insert 'local' information in global matrices More...
 
void GlobalMatrixContribution (int n, const fmatvec::SymMat &locMat, fmatvec::SymMat &gloMat) override=0
 insert 'local' information in global matrices More...
 
void exportPositionVelocity (const std::string &filenamePos, const std::string &filenameVel=std::string(), const int &deg=3, const bool &writePsFile=false) override=0
 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...
 
void importPositionVelocity (const std::string &filenamePos, const std::string &filenameVel=std::string()) override=0
 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 updateh (int i=0) override
 
virtual void setNumberElements (int n)=0
 
void setEGModuls (double E_, double G_)
 
void setDensity (double rho_)
 
void setCrossSectionalArea (double A_)
 
virtual void setMomentsInertia (double I1_, double I2_, double I0_)
 
virtual void setMomentsInertia (double I1_)
 
virtual void setCurlRadius (double R1_, double R2_)
 
virtual void setCurlRadius (double R1_)
 
virtual void setMaterialDamping (double cEps0D_, double cEps1D_, double cEps2D_)
 
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 getNumberOfElementDOF () const
 
virtual int getNumberElements () const
 
virtual int getqSizeFull () const
 
virtual void initInfo ()=0
 initialise beam only for giving information with respect to state, number elements, length, (not for simulation) More...
 
virtual void BuildElementTranslation (const double &sGlobal, double &sLocal, int &currentElementTranslation)=0
 detect current finite element (translation) More...
 
- Public Member Functions inherited from MBSimFlexibleBody::FlexibleBody1s
 FlexibleBody1s (const std::string &name, bool openStructure)
 constructor: More...
 
void init (InitStage stage, const MBSim::InitConfigSet &config) override
 
void plot () override
 
void setLength (double L_)
 
double getLength () const
 
bool getOpenStructure () const
 
void addFrame (Frame1s *frame)
 
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 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 double nodeOffset_)
 
double getNodeOffset () const
 
- Public Member Functions inherited from MBSimFlexibleBody::FlexibleBody
 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 More...
 
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_)
 Jacobians and gyroscopes for contour or external frame are 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 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
 
virtual void setFrameOfReference (Frame *frame)
 
int frameIndex (const Frame *frame_) const
 
int contourIndex (const Contour *contour_) const
 
ElementgetChildByContainerAndName (const std::string &container, const std::string &name) const override
 
virtual void addFrame (Frame *frame)
 
virtual void addContour (Contour *contour)
 
- 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 setDynamicSystemSolver (DynamicSystemSolver *sys)
 
virtual void plot ()
 
virtual void plotAtSpecialEvent ()
 
const std::string & getName () const
 
void setName (const std::string &str)
 
DynamicSystemSolvergetDynamicSystemSolver ()
 
virtual void init (InitStage stage, const InitConfigSet &config=InitConfigSet())
 
virtual void createPlotGroup ()
 
H5::GroupBasegetPlotGroup ()
 
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, PlotAttributeStorage storage=PlotAttributeStorage::attribute)
 
T * getByPath (const std::string &path, bool initialCaller=true) const
 
std::string getPath (const Element *relTo=nullptr, std::string sep="/") const
 
virtual ElementgetChildByContainerAndName (const std::string &container, const std::string &name) const
 
std::vector< Element * > getDependencies () const
 
int computeLevel ()
 

Protected Member Functions

 FlexibleBody1s21Cosserat (const FlexibleBody1s21Cosserat &)
 
FlexibleBody1s21Cosseratoperator= (const FlexibleBody1s21Cosserat &)
 
void initM () override
 initialize translational part of mass matrix and calculate Cholesky decomposition More...
 
void computeBoundaryCondition () override
 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 More...
 
void GlobalVectorContributionRotation (int n, const fmatvec::Vec &locVec, fmatvec::Vec &gloVec) override
 insert 'local' information in global vectors for rotation grid More...
 
fmatvec::Mat readPositionMatrix (const std::string &h5File, const std::string &job)
 read position matrix of other simulation for POD-reduction More...
 
int findPOMSize (const fmatvec::Mat &POM, const fmatvec::Mat &SVD, double precission=1 - 1.e-3)
 find reduction order for POM More...
 
- Protected Member Functions inherited from MBSimFlexibleBody::FlexibleBody1sCosserat
 FlexibleBody1sCosserat (const FlexibleBody1sCosserat &)
 
FlexibleBody1sCosseratoperator= (const FlexibleBody1sCosserat &)
 
virtual void initM ()=0
 initialize translational part of mass matrix and calculate Cholesky decomposition More...
 
virtual void computeBoundaryCondition ()=0
 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 More...
 
virtual void GlobalVectorContributionRotation (int n, const fmatvec::Vec &locVec, fmatvec::Vec &gloVec)=0
 insert 'local' information in global vectors for rotation grid More...
 

Protected Attributes

fmatvec::SymMat MConst
 constant mass matrix
 
fmatvec::SymMat LLMConst
 constant decomposed mass matrix
 
bool JInterp
 marker if Jacobians already interpolated
 
bool PODreduced
 bool true: execute POD, false: without POD
 
fmatvec::Mat U
 POM projection matrix.
 
fmatvec::Vec qFull
 vector of position-DOFs of full system
 
fmatvec::Vec uFull
 vector of velocity-DOFs of full system
 
fmatvec::Vec hFull
 vector of smooth right-hand side of full system
 
- Protected Attributes inherited from MBSimFlexibleBody::FlexibleBody1sCosserat
std::vector< DiscretizationInterface * > rotationDiscretization
 stl-vector of finite elements for rotation grid
 
std::vector< fmatvec::Vec > qRotationElement
 stl-vector of finite element positions for rotation grid
 
std::vector< fmatvec::Vec > uRotationElement
 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::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
 
FrameR
 
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
 
DynamicSystemSolverds
 
H5::VectorSerie< double > * plotVectorSerie
 
std::vector< double > plotVector
 
std::vector< std::string > plotColumns
 
H5::GroupBaseplotGroup
 
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

flexible body for planar beam using Cosserat model

Author
Thomas Cebulla
Thorsten Schindler
Robert von Zitzewitz
Date
2012-12-14 initial commit (Thomas Cebulla)
2013-02-04 completed 2D Cosserat beam for closed structure (Robert von Zitzewitz)
2013-02-04 completed POD model reduction for TIMESTEPPING integrator (Robert von Zitzewitz)
Todo:

compute boundary conditions TODO

open structure TODO

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

  • Kirchhoff assumption (-> less stiff)
  • Cardan parametrisation (-> less problems with condition and drift for quaternion dae system)
  • piecewise constant Darboux vector with evaluation according to I. Romero: The interpolation of rotations and its application to finite element models of geometrically exact beams

Constructor & Destructor Documentation

◆ FlexibleBody1s21Cosserat()

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

constructor

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

Member Function Documentation

◆ BuildElements()

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::BuildElements ( )
overridevirtual

references finite element coordinates to assembled coordinates

Implements MBSimFlexibleBody::FlexibleBody1sCosserat.

◆ BuildElementTranslation()

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::BuildElementTranslation ( const double &  sGlobal,
double &  sLocal,
int &  currentElementTranslation 
)
overridevirtual

detect current finite element (translation)

Parameters
globalparametrisation
localparametrisation
finiteelement number

Implements MBSimFlexibleBody::FlexibleBody1sCosserat.

◆ computeAngles()

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

compute angles at Lagrangian coordinate in local FE coordinates

Parameters
Lagrangiancoordinate
vectorto interpolate linearily

◆ computeBoundaryCondition()

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::computeBoundaryCondition ( )
overrideprotectedvirtual

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

Implements MBSimFlexibleBody::FlexibleBody1sCosserat.

◆ computePotentialEnergy()

double MBSimFlexibleBody::FlexibleBody1s21Cosserat::computePotentialEnergy ( )
overridevirtual

Reimplemented from MBSimFlexibleBody::FlexibleBody.

◆ exportPositionVelocity()

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::exportPositionVelocity ( const std::string &  filenamePos,
const std::string &  filenameVel = std::string(),
const int &  deg = 3,
const bool &  writePsFile = false 
)
overridevirtual

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.

◆ findPOMSize()

int MBSimFlexibleBody::FlexibleBody1s21Cosserat::findPOMSize ( const fmatvec::Mat &  POM,
const fmatvec::Mat &  SVD,
double  precission = 1 - 1.e-3 
)
protected

find reduction order for POM

Parameters
POMPOM-Matrix (matrix of the different states)
SVDSVD-Matrix (single-valued decomposed matrix)
precissionvalue of how precise the reduction should be

◆ getNumberElements()

int MBSimFlexibleBody::FlexibleBody1s21Cosserat::getNumberElements ( ) const
inlineoverridevirtual

◆ getNumberOfElementDOF()

int MBSimFlexibleBody::FlexibleBody1s21Cosserat::getNumberOfElementDOF ( ) const
inlineoverridevirtual

◆ getPositions()

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

compute positions and angle at Lagrangian coordinate in local FE coordinates

Parameters
Lagrangiancoordinate

◆ getqSizeFull()

int MBSimFlexibleBody::FlexibleBody1s21Cosserat::getqSizeFull ( ) const
inlineoverridevirtual

◆ getVelocities()

fmatvec::Vector< Fixed< 6 >, double > MBSimFlexibleBody::FlexibleBody1s21Cosserat::getVelocities ( double  x)

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

Parameters
Lagrangiancoordinate

◆ GlobalMatrixContribution() [1/2]

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::GlobalMatrixContribution ( int  CurrentElement,
const fmatvec::Mat &  locMat,
fmatvec::Mat &  gloMat 
)
overridevirtual

insert 'local' information in global matrices

Parameters
CurrentElementnumber of current finite element
locMatlocal matrix
gloMatglobal matrix

Implements MBSimFlexibleBody::FlexibleBody1sCosserat.

◆ GlobalMatrixContribution() [2/2]

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::GlobalMatrixContribution ( int  CurrentElement,
const fmatvec::SymMat &  locMat,
fmatvec::SymMat &  gloMat 
)
overridevirtual

insert 'local' information in global matrices

Parameters
CurrentElementnumber of current finite element
locMatlocal matrix
gloMatglobal matrix

Implements MBSimFlexibleBody::FlexibleBody1sCosserat.

◆ GlobalVectorContribution()

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::GlobalVectorContribution ( int  CurrentElement,
const fmatvec::Vec &  locVec,
fmatvec::Vec &  gloVec 
)
overridevirtual

insert 'local' information in global vectors

Parameters
numberof finite element
localvector
globalvector

Implements MBSimFlexibleBody::FlexibleBody1sCosserat.

◆ GlobalVectorContributionRotation()

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::GlobalVectorContributionRotation ( int  n,
const fmatvec::Vec &  locVec,
fmatvec::Vec &  gloVec 
)
overrideprotectedvirtual

insert 'local' information in global vectors for rotation grid

Parameters
numberof finite element
localvector
globalvector

Implements MBSimFlexibleBody::FlexibleBody1sCosserat.

◆ importPositionVelocity()

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::importPositionVelocity ( const std::string &  filenamePos,
const std::string &  filenameVel = std::string() 
)
overridevirtual

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.

◆ initInfo()

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::initInfo ( )
overridevirtual

initialise beam only for giving information with respect to state, number elements, length, (not for simulation)

Implements MBSimFlexibleBody::FlexibleBody1sCosserat.

◆ initM()

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::initM ( )
overrideprotectedvirtual

initialize translational part of mass matrix and calculate Cholesky decomposition

Implements MBSimFlexibleBody::FlexibleBody1sCosserat.

◆ readPositionMatrix()

Mat MBSimFlexibleBody::FlexibleBody1s21Cosserat::readPositionMatrix ( const std::string &  h5File,
const std::string &  job 
)
protected

read position matrix of other simulation for POD-reduction

Parameters
h5Filepath to h5-file
jobdefines the matrix, that should be used for the reduction

◆ setCurlRadius()

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::setCurlRadius ( double  R1_)
inlineoverridevirtual

◆ setMaterialDamping()

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::setMaterialDamping ( double  cEps0D_,
double  cEps1D_ 
)
inlineoverridevirtual

◆ setMomentsInertia()

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::setMomentsInertia ( double  I1_)
inlineoverridevirtual

◆ setNumberElements()

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::setNumberElements ( int  n)
overridevirtual

◆ transformJacobian()

fmatvec::Mat3xV MBSimFlexibleBody::FlexibleBody1s21Cosserat::transformJacobian ( fmatvec::Mat3xV  J)
inlineoverridevirtual

interface function to transform the Jacobian if the generalized coordinates have been changed

default: no transformation!

Todo:
: make real concept for reduced bodies in MBSim

Reimplemented from MBSimFlexibleBody::FlexibleBody1sCosserat.

◆ updateAccelerations() [1/2]

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::updateAccelerations ( Frame1s frame)
overridevirtual

Reimplemented from MBSimFlexibleBody::FlexibleBody1s.

◆ updateAccelerations() [2/2]

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::updateAccelerations ( int  node)
overridevirtual

Reimplemented from MBSimFlexibleBody::NodeBasedBody.

◆ updateGyroscopicAccelerations() [1/2]

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::updateGyroscopicAccelerations ( Frame1s frame)
overridevirtual

Reimplemented from MBSimFlexibleBody::FlexibleBody1s.

◆ updateGyroscopicAccelerations() [2/2]

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::updateGyroscopicAccelerations ( int  node)
overridevirtual

Reimplemented from MBSimFlexibleBody::NodeBasedBody.

◆ updateJacobians() [1/2]

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::updateJacobians ( Frame1s frame,
int  j = 0 
)
overridevirtual

Reimplemented from MBSimFlexibleBody::FlexibleBody1s.

◆ updateJacobians() [2/2]

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::updateJacobians ( int  node,
int  j = 0 
)
overridevirtual

Reimplemented from MBSimFlexibleBody::NodeBasedBody.

◆ updateLLM()

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::updateLLM ( )
inlineoverridevirtual

Reimplemented from MBSim::Object.

◆ updatePositions() [1/2]

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::updatePositions ( Frame1s frame)
overridevirtual

Reimplemented from MBSimFlexibleBody::FlexibleBody1s.

◆ updatePositions() [2/2]

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::updatePositions ( int  node)
overridevirtual

Reimplemented from MBSimFlexibleBody::NodeBasedBody.

◆ updateVelocities() [1/2]

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::updateVelocities ( Frame1s frame)
overridevirtual

Reimplemented from MBSimFlexibleBody::FlexibleBody1s.

◆ updateVelocities() [2/2]

void MBSimFlexibleBody::FlexibleBody1s21Cosserat::updateVelocities ( int  node)
overridevirtual

Reimplemented from MBSimFlexibleBody::NodeBasedBody.


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