mbsimflexiblebody 4.0.0 MBSim Flexible Body Module

Public Member Functions | Private Member Functions | Private Attributes | List of all members
MBSimFlexibleBody::FlexibleBody1s33ANCF Class Reference

Absolute Nodal Coordinate Formulation for flexible spatial beams. More...

`#include <1s_33_ancf.h>`

Inheritance diagram for MBSimFlexibleBody::FlexibleBody1s33ANCF:
[legend]

## Public Member Functions

| FlexibleBody1s33ANCF (const std::string &name, bool openStructure)
| constructor: More...
void | updateM () override
void | updateLLM () override
void | BuildElements () override
| references finite element coordinates to assembled coordinates
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 | 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
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)
void | init (InitStage stage, const MBSim::InitConfigSet &config) override
void | plot () override
void | setNumberElements (int n)
void | setEModul (double E_)
void | setShearModul (double G_)
void | setCrossSectionalArea (double A_)
void | setMomentInertia (double I0_, double I1_, double I2_)
void | setDensity (double rho_)
void | setCurlRadius (double rc1_, double rc2_)
int | getNumberElements ()
void | initInfo ()
| initialise beam only for giving information with respect to state, number elements, length, (not for simulation)
void | initRelaxed (double alpha)
| initialise beam state concerning a straight cantilever setting or a circle shaped ring 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 | 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 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_)
const fmatvec::Vec & | getqElement (int i)
const fmatvec::Vec & | getuElement (int i)
virtual fmatvec::Vec3 | getAngles (int i)
virtual fmatvec::Vec3 | getDerivativeOfAngles (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 (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 | 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)
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 | 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 ()

## Private Member Functions

void | initM ()
| initialize mass matrix and calculate Cholesky decomposition
void | BuildElement (const double &sGlobal, double &sLocal, int &currentElement)
| detect current finite element More...
| FlexibleBody1s33ANCF (const FlexibleBody1s33ANCF &)
| copy constructor is declared private
FlexibleBody1s33ANCF & | operator= (const FlexibleBody1s33ANCF &)
| assignment operator is declared private

## Private Attributes

int | Elements
| number of finite elements used for discretisation
double | l0
| length of one finite element
double | E
| modulus of linear elasticity
double | G
| shear modulus
double | A
| cross-section area
double | I0
| polar moment of inertia of cross-section
double | I1
| moment of inertia of cross-section
double | I2
| moment of inertia of cross-section
double | rho
| material density
double | rc1
| radius of undeformed shape
double | rc2
| radius of undeformed shape
bool | initialised
| flag for testing if beam is initialised

## Additional Inherited Members

Public Types inherited from MBSim::Element
enum | InitStage
Public Attributes inherited from MBSim::Element
| resolveStringRef
| preInit
| plotting
| unknownStage
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
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

## Detailed Description

Absolute Nodal Coordinate Formulation for flexible spatial beams.

based on cable element with no explicit torsion, i.e. angular velocity and Jacobian of rotation depend only on two bending angles

Author
  Thorsten Schindler

Date
  2014-03-20 initial commit

Todo:
  angular velocity and Jacobian of rotation for NODE case

model based on DOMBROWSKI, S.: Analysis of Large Flexible Body Deformation in Multibody Systems Using Absolute Coordinates. Multibody System Dynamics (2002)

## Constructor & Destructor Documentation

## ◆ FlexibleBody1s33ANCF()

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

constructor:

Parameters

  name | of body
  bool | to specify open (cantilever) or closed (ring) structure

## Member Function Documentation

## ◆ BuildElement()

void MBSimFlexibleBody::FlexibleBody1s33ANCF::BuildElement | ( | const double & | sGlobal,
|  | double & | sLocal,
|  | int & | currentElement
| ) |  |

private

detect current finite element

Parameters

  global | parametrisation
  local | parametrisation
  finite | element number

## ◆ GlobalMatrixContribution() [1/2]

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

override virtual

insert 'local' information in global matrices

Parameters

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

Implements MBSimFlexibleBody::FlexibleBody.

## ◆ GlobalMatrixContribution() [2/2]

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

override virtual

insert 'local' information in global matrices

Parameters

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

Implements MBSimFlexibleBody::FlexibleBody.

## ◆ GlobalVectorContribution()

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

override virtual

insert 'local' information in global vectors

Parameters

  number | of finite element
  local | vector
  global | vector

Implements MBSimFlexibleBody::FlexibleBody.

## ◆ initRelaxed()

void MBSimFlexibleBody::FlexibleBody1s33ANCF::initRelaxed | ( | double | alpha | ) |

initialise beam state concerning a straight cantilever setting or a circle shaped ring

Parameters

  angle | of slope in case of cantilever

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

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