mbsimflexiblebody  4.0.0
MBSim Flexible Body Module
MBSimFlexibleBody::FlexibleBody2s13 Class Referenceabstract

plate according to Reissner-Mindlin with moving frame of reference More...

#include <2s_13.h>

Inheritance diagram for MBSimFlexibleBody::FlexibleBody2s13:
[legend]

Public Types

enum  LockType { innerring , outerring }
 condensation setting for clamping to rigid body motion
 
- Public Types inherited from MBSim::Element
enum  InitStage
 

Public Member Functions

 FlexibleBody2s13 (const std::string &name)
 constructor More...
 
 ~FlexibleBody2s13 () override=default
 destructor
 
void updateh (int j=0) override
 
void updatedhdz () override
 
void updateM () override
 
void updateLLM () override
 
void plot () override
 
void setRadius (double Ri_, double Ra_)
 
void setEModul (double E_)
 
void setPoissonRatio (double nu_)
 
void setThickness (const fmatvec::Vec &d_)
 
fmatvec::Vec getThickness () const
 
void setDensity (double rho_)
 
int getReferenceDegreesOfFreedom () const
 
int getRadialNumberOfElements () const
 
int getAzimuthalNumberOfElements () const
 
double getInnerRadius () const
 
double getOuterRadius () const
 
double getAzimuthalDegree () const
 
double getRadialDegree () const
 
fmatvec::SqrMat3 & evalA ()
 
fmatvec::SqrMat3 & evalG ()
 
void setReferenceInertia (double m0_, fmatvec::SymMat3 J0_)
 
void setLockType (LockType LT_)
 
void setNumberElements (int nr_, int nj_)
 set number of elements in radial and azimuthal direction More...
 
double computePotentialEnergy () override
 
virtual fmatvec::Vec transformCW (const fmatvec::Vec &WrPoint)=0
 transform Cartesian to cylinder system More...
 
void resetUpToDate () override
 
void updateExt ()
 
const fmatvec::Vec & evalqExt ()
 
const fmatvec::Vec & evaluExt ()
 
virtual fmatvec::Vec3 evalPosition ()
 
virtual fmatvec::SqrMat3 evalOrientation ()
 
- Public Member Functions inherited from MBSimFlexibleBody::FlexibleBody2s
 FlexibleBody2s (const std::string &name)
 constructor: More...
 
void init (InitStage stage, const MBSim::InitConfigSet &config) override
 
void plot () override
 
void addFrame (Frame2s *frame)
 
virtual void updatePositions (Frame2s *frame)
 
virtual void updateVelocities (Frame2s *frame)
 
virtual void updateAccelerations (Frame2s *frame)
 
virtual void updateJacobians (Frame2s *frame, int j=0)
 
virtual void updateGyroscopicAccelerations (Frame2s *frame)
 
void setOpenMBVSpineExtrusion (const std::shared_ptr< OpenMBV::SpineExtrusion > &body)
 
- Public Member Functions inherited from MBSimFlexibleBody::FlexibleBodyContinuum< fmatvec::Vec2 >
 FlexibleBodyContinuum (const std::string &name)
 constructor More...
 
void setContourNodes (const std::vector< fmatvec::Vec2 > nodes)
 
void setNodeOffset (const fmatvec::Vec2 nodeOffset_)
 
fmatvec::Vec2 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

void BuildElement (const fmatvec::Vec &s)
 detect involved element for contact description More...
 
virtual void initMatrices ()=0
 calculate the matrices for the first time More...
 
virtual void updateAG ()=0
 update the transformation matrices A and G More...
 
double computeThickness (const double &r_)
 

Protected Attributes

int Elements
 total number of elements
 
int NodeDofs
 elastic dof per node
 
int RefDofs
 dof of moving frame of reference
 
double E
 Young's modulus.
 
double nu
 Poisson ratio.
 
double rho
 density
 
fmatvec::Vec d
 parameterization of thickness over radius function: d(0) + d(1)*r + d(2)*r*r More...
 
double Ri
 inner and outer radius of disk
 
double Ra
 
double dr
 radial and azimuthal length of an FE
 
double dj
 
double m0
 mass of the attached shaft
 
fmatvec::SymMat3 J0
 inertia of the attached shaft in local coordinates
 
int degV
 degree of surface interpolation in radial and azimuthal direction More...
 
int degU
 
int drawDegree
 number of points drawn between nodes
 
std::vector< fmatvec::Vec > ElementalNodes
 vector of boundary data of the FE (r1,j1,r2,j2)
 
int currentElement
 number of element currently involved in contact calculations
 
fmatvec::SymMat MConst
 constant part of the mass matrix
 
fmatvec::SymMat K
 stiffness matrix
 
int nr
 number of elements in radial and azimuthal direction, number of FE nodes
 
int nj
 
int Nodes
 
fmatvec::Mat NodeCoordinates
 matrix mapping nodes and coordinates (size number of nodes x number of node coordinates) More...
 
fmatvec::Matrix< fmatvec::General, fmatvec::Ref, fmatvec::Ref, int > ElementNodeList
 matrix mapping elements and nodes (size number of elements x number of nodes per elements) More...
 
int Dofs
 total dof of disk with reference movement and elastic deformation but without including bearing
 
LockType LType
 Dirichlet boundary condition concerning reference movement. More...
 
fmatvec::RangeV ILocked
 index of condensated dofs
 
fmatvec::Vec qext
 position and velocity with respect to Dofs
 
fmatvec::Vec uext
 
fmatvec::SqrMat3 A
 transformation matrix of coordinates of the moving frame of reference into the reference frame
 
fmatvec::SqrMat3 G
 transformation matrix of the time derivates of the angles into tho angular velocity in reference coordinates
 
fmatvec::Mat Jext
 
NurbsDisk2scontour
 contour for contact description
 
bool updExt
 
bool updAG
 
- Protected Attributes inherited from MBSimFlexibleBody::FlexibleBodyContinuum< fmatvec::Vec2 >
std::vector< fmatvec::Vec2 > userContourNodes
 grid for contact point detection
 
fmatvec::Vec2 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 Attributes inherited from MBSim::Element
 resolveStringRef
 
 preInit
 
 plotting
 
 unknownStage
 

Detailed Description

plate according to Reissner-Mindlin with moving frame of reference

Author
Kilian Grundl
Thorsten Schindler
Date
2010-04-23 initial commit (Schindler / Grundl)
2010-08-12 revision (Schindler)

The plate lies in the xy-plane of its reference frame. The z-vector is its "normal". Thus the radial and the azimuthal component give the x- and y- coordinates where the z-coordinate is defined by the thickness parameterization. (neglecting the flexible dofs)

Constructor & Destructor Documentation

◆ FlexibleBody2s13()

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

constructor

Parameters
nameof body

Member Function Documentation

◆ BuildElement()

void MBSimFlexibleBody::FlexibleBody2s13::BuildElement ( const fmatvec::Vec &  s)
protected

detect involved element for contact description

Parameters
parametrisationvector (radial / azimuthal)

◆ computePotentialEnergy()

double MBSimFlexibleBody::FlexibleBody2s13::computePotentialEnergy ( )
inlineoverridevirtual
Returns
potential energy

Reimplemented from MBSimFlexibleBody::FlexibleBody.

◆ computeThickness()

double MBSimFlexibleBody::FlexibleBody2s13::computeThickness ( const double &  r_)
protected
Returns
thickness of disk at radial coordinate
Parameters
radialcoordinate

◆ initMatrices()

virtual void MBSimFlexibleBody::FlexibleBody2s13::initMatrices ( )
protectedpure virtual

calculate the matrices for the first time

Implemented in MBSimFlexibleBody::FlexibleBody2s13Disk, and MBSimFlexibleBody::FlexibleBody2s13MFRMindlin.

◆ plot()

void MBSimFlexibleBody::FlexibleBody2s13::plot ( )
overridevirtual

Reimplemented from MBSimFlexibleBody::FlexibleBody2s.

◆ setNumberElements()

void MBSimFlexibleBody::FlexibleBody2s13::setNumberElements ( int  nr_,
int  nj_ 
)

set number of elements in radial and azimuthal direction

Parameters
radialnumber of elements
azimuthalnumber of elements

◆ transformCW()

virtual fmatvec::Vec MBSimFlexibleBody::FlexibleBody2s13::transformCW ( const fmatvec::Vec &  WrPoint)
pure virtual

transform Cartesian to cylinder system

Parameters
Cartesianvector in world system of plate
Returns
cylindrical coordinates

Implemented in MBSimFlexibleBody::FlexibleBody2s13Disk, and MBSimFlexibleBody::FlexibleBody2s13MFRMindlin.

◆ updateAG()

virtual void MBSimFlexibleBody::FlexibleBody2s13::updateAG ( )
protectedpure virtual

update the transformation matrices A and G

Implemented in MBSimFlexibleBody::FlexibleBody2s13Disk, and MBSimFlexibleBody::FlexibleBody2s13MFRMindlin.

◆ updateLLM()

void MBSimFlexibleBody::FlexibleBody2s13::updateLLM ( )
inlineoverridevirtual

Reimplemented from MBSim::Object.

Member Data Documentation

◆ d

fmatvec::Vec MBSimFlexibleBody::FlexibleBody2s13::d
protected

parameterization of thickness over radius function: d(0) + d(1)*r + d(2)*r*r

Remarks
vector must have length 3

◆ degV

int MBSimFlexibleBody::FlexibleBody2s13::degV
protected

degree of surface interpolation in radial and azimuthal direction

both degrees have to be smaller than 8

◆ ElementNodeList

fmatvec::Matrix<fmatvec::General,fmatvec::Ref,fmatvec::Ref,int> MBSimFlexibleBody::FlexibleBody2s13::ElementNodeList
protected

matrix mapping elements and nodes (size number of elements x number of nodes per elements)

ElementNodeList(Element,LocalNodeNumber) = globalNodeNumber;

◆ LType

LockType MBSimFlexibleBody::FlexibleBody2s13::LType
protected

Dirichlet boundary condition concerning reference movement.

possible settings: innering/outerring

◆ NodeCoordinates

fmatvec::Mat MBSimFlexibleBody::FlexibleBody2s13::NodeCoordinates
protected

matrix mapping nodes and coordinates (size number of nodes x number of node coordinates)

NodeCoordinates(GlobalNodeNumber,0) = radius (at the node) NodeCoordinates(GlobalNodeNumber,1) = angle (at the node)


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