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

class that implements an one dimensional nonlinear beam that uses a reference curve for the nonlinearity together with overlaid deformations. Also the Eulerian coordinates ("S" not "s") are used to project the movement of the nodes back to their original position... More...

#include <flexible_body_1S_reference_curve.h>

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

Public Member Functions

 FlexibleBody1SReferenceCurve (const std::string &name, ReferenceCurve *refCurve)
 
virtual void init (MBSim::Element::InitStage stage)
 
virtual void initInfo (fmatvec::Vec q0=fmatvec::Vec(0, fmatvec::NONINIT), fmatvec::Vec u0=fmatvec::Vec(0, fmatvec::NONINIT))
 
virtual void BuildElements ()
 references finite element coordinates to assembled coordinates
 
virtual void updateh (int k=0)
 
virtual void updateM ()
 
virtual void updatedq ()
 
virtual void updatedu ()
 
virtual void updateud ()
 
virtual void updateqd ()
 
virtual void initz ()
 
virtual void plot (double t, double dt=1.)
 
virtual void GlobalVectorContribution (int, const fmatvec::Vec &, fmatvec::Vec &)
 insert 'local' information in global vectors More...
 
virtual void GlobalMatrixContribution (int, const fmatvec::Mat3xV &, fmatvec::Mat3xV &)
 
virtual void GlobalMatrixContribution (int, const fmatvec::Mat &, fmatvec::Mat &)
 insert 'local' information in global matrices More...
 
virtual void GlobalMatrixContribution (int, const fmatvec::SymMat &, fmatvec::SymMat &)
 insert 'local' information in global matrices More...
 
virtual void setq0 (fmatvec::Vec q0_)
 
virtual void setu0 (fmatvec::Vec u0_)
 
void setLength (double length_)
 
double getlength () const
 
void setDensity (double rho_)
 
double getrho () const
 
void setCrossSectionalArea (double A_)
 
double getA () const
 
void setEModul (double E_)
 
double getE () const
 
void setNu (double nu_)
 
double getNu () const
 
void setIn (double In_)
 
double getIn () const
 
void setIb (double Ib_)
 
double getIb () const
 
void setIt (double It_)
 
double getIt () const
 
void setdPulley (double dPulley_)
 
double getdPulley () const
 
void setNumberElements (int elements_)
 
void setElementOrder (int elementOrder_)
 
void setNodeDofs (int nodeDofs_)
 
void setUseSpatialReferenceKinematics (bool switch_)
 
void setThetaDamping (double dTheta_)
 
void setLockedDofs (std::set< int > lockedDofs_)
 
void setLambdaqSwitches (const fmatvec::VecV &lambdaqSwitches_)
 
void setLambdauSwitches (const fmatvec::VecV &lambdauSwitches_)
 
virtual void setelongationActive (bool val)
 
virtual void setnormalBendingActive (bool val)
 
virtual double gets ()
 
Contour1sNeutralFlexibleBody1SReferenceCurvecreateNeutralPhase (const std::string &contourName)
 create a neutral phase as a basis for overlaid contours
 
double computePhysicalStrain (double xi)
 compute the physical strain at the Eulerian coordinate xi
 
fmatvec::Vec computeNeutralState (const fmatvec::Vec &q0)
 compute the neutral state, i.e. h = 0
 
- Public Member Functions inherited from MBSimFlexibleBody::FlexibleBodyContinuum< double >
 FlexibleBodyContinuum (const std::string &name)
 constructor More...
 
virtual std::string getType () const
 
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 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 void initializeUsingXML (xercesc::DOMElement *element)
 
virtual void init (InitStage stage)
 
virtual double computeKineticEnergy ()
 
virtual double computePotentialEnergy ()
 
virtual void setFrameOfReference (MBSim::Frame *frame)
 
const fmatvec::VecgetqElement (int i)
 
const fmatvec::VecgetuElement (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 (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 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)
 

Private Member Functions

double computeG () const
 computes the shear modulus G
 
fmatvec::Vec3 computer (double xi, int derXi=0, int derTheta=0)
 compute the position and/or its derivative w.r.t. xi and/or theta
 
fmatvec::Vec3 computedrdqk (double xi, int derXi, int qInd)
 computes the derivative wrt the generalized positions
 
fmatvec::Vec3 computev (double xi)
 compute the velocity and/or its derivative w.r.t. xi and/or theta
 
fmatvec::Vec3 computerRef (double xi, int derXi=0, int derTheta=0)
 compute the position and its derivatives w.r.t. xi or theta at position xi and ratio Theta
 
fmatvec::SqrMat3 computeARef (double xi, int derXi=0, int derTheta=0)
 compute the local transformation Matrix A and its derivatives w.r.t. xi or theta at position xi and ratio Theta
 
fmatvec::Vec3 computenRef (double xi, int derXi=0, int derTheta=0)
 compute the normal vector at the given position
 
fmatvec::Vec3 computeSElement (int globalDOF, double xi, int derXi)
 compute the column of the elements S matrix
 
fmatvec::Vec3 computeSqfElement (double xi, int derXi)
 compute the deformation vector, i.e. S*qf, for the ring
 
fmatvec::Vec3 computeSufElement (double xi, int derXi)
 compute the deformation vector, i.e. S*uf, for the ring
 
fmatvec::Mat3xV computeP (double xi, int derXi=0)
 compute the P matrix
 
fmatvec::Mat3xV computedPdqk (double xi, int qInd)
 compute the P matrix derived wrt the generalized position
 
fmatvec::SymMatV integratePTP ()
 computes the integral needed for the mass matrix ( P^T P)
 
fmatvec::SqrMatV integratePTdPdxi ()
 computes the integral for the first part of the h vector coming from the kinetic energy ( P^T * P')
 
fmatvec::SqrMatV integratePTdPdt ()
 computes the integral for the second part of the h vector coming from the kinetic energy ( P^T * dPdt)
 
fmatvec::SqrMatV integratePTdPdqk (int qInd)
 computes the integral for the third part of the h vector coming from the kinetic energy ( P^T * dPdqk)
 
fmatvec::Vec3 integrateForWgammaWnWtau (int qInd)
 computes the integral for the first part of the h vector coming from the potential energy (intForWgamma)
 
double integrateForWb (int qInd)
 computes the integral for the second part of the h vector coming from the potential energy (intForWgamma)
 
int findElement (double &xi)
 find the element number of the given global coordinate More...
 
std::vector< std::pair< int,
int > > 
getElementAndLocalDoFNo (int globalColumn)
 find the elemental DOF Number out of the global DOF Number More...
 
int getEleDofs () const
 get the number of DOFs for one element
 

Private Attributes

ReferenceCurverefCurve
 the reference curve
 
int elements
 number of elements used
 
int nodeDoFs
 DoFs per element.
 
int elementOrder
 DoFs per element.
 
bool useSpatialReferenceKinematics
 switch to only use kinematical reference deformation
 
double length
 length of ring
 
double rho
 density of the body
 
double A
 cross section Area of the body
 
double E
 Youngs modulus of the body.
 
double nu
 Poisson-ratio of the body.
 
double In
 area moment of inertia around normal axis
 
double Ib
 area moment of inertia around binormal axis
 
double It
 area moment of inertia around torsional axis
 
double dPulley
 distance between pulleys
 
fmatvec::Vec3 b
 Binormal of the curve.
 
double dTheta
 damping coefficient for theta
 
std::set< int > lockedDofsFull
 this vector saves the locked DOFs of the system
 
fmatvec::VecV qF
 vector for PT1 in positions
 
fmatvec::VecV uF
 vector for PT1 in velocities
 
fmatvec::VecV lambdaqFSwitches
 these are the switches to the the lambdaqSwitches The first entrie is always the entro for "s" the second one always for "theta". Then it depends on the element order but it actually follows just the global q-vector. Thus for elementOrder 3 and planar it is like this: lambdaqSwitches = [s, theta, qt, qn, qt', qn'] Thus for elementOrder 5 and spatial it is like this: lambdaqSwitches = [s, theta, qt, qn, qb, qt', qn', qb'', qt'', qn'', qb''] As here only the switches are set no one cars for the locked directions...
 
fmatvec::VecV lambdauFSwitches
 these are the switches to the the lambdauSwitches See the explanations for the qSwitches, however for the generalized velocities
 
fmatvec::VecV lambdaqF
 lambda factors for qFs
 
fmatvec::VecV lambdauF
 lambda factors for uFs
 
bool usePT1 = false
 switch to use either the lambda PT1 version or not
 
std::vector< fmatvec::VecqElementAll
 vector storing the values of the locked and not locked Dofs
 
std::vector< fmatvec::VecuElementAll
 vector storing the values of the locked and not locked Dofs generelaized velocities
 
int updateReferenceEvery
 number of how often the reference movement should be updated compared to the local movements
 
int referenceNotUpdated
 counter of how many updates have been done since the last time
 
double tLastRefUpdate
 marker since when the last update has been done on the reference
 
bool elongationActive = true
 switch to enable / disable the elongation energy in the h-vector
 
bool normalBendingActive = true
 switch to enable / disable the normal bending energy in the h-vector
 

Friends

class FlexibleBody1SReferenceCurveFE
 
class Contour1sNeutralFlexibleBody1SReferenceCurve
 
class funcForWgamma
 
class gethFunc
 

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)
 
- 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
 

Detailed Description

class that implements an one dimensional nonlinear beam that uses a reference curve for the nonlinearity together with overlaid deformations. Also the Eulerian coordinates ("S" not "s") are used to project the movement of the nodes back to their original position...

Member Function Documentation

int MBSimFlexibleBody::FlexibleBody1SReferenceCurve::findElement ( double &  xi)
private

find the element number of the given global coordinate

Remarks
: If xi is not valid (not big or too small it is changed!)
std::vector< std::pair< int, int > > MBSimFlexibleBody::FlexibleBody1SReferenceCurve::getElementAndLocalDoFNo ( int  globalColumn)
private

find the elemental DOF Number out of the global DOF Number

Remarks
the first two local DOFs are locked
virtual void MBSimFlexibleBody::FlexibleBody1SReferenceCurve::GlobalMatrixContribution ( int  CurrentElement,
const fmatvec::Mat locMat,
fmatvec::Mat gloMat 
)
inlinevirtual

insert 'local' information in global matrices

Parameters
CurrentElementnumber of current finite element
locMatlocal matrix
gloMatglobal matrix

Implements MBSimFlexibleBody::FlexibleBody.

void MBSimFlexibleBody::FlexibleBody1SReferenceCurve::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::FlexibleBody.

void MBSimFlexibleBody::FlexibleBody1SReferenceCurve::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::FlexibleBody.


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

Impressum / Disclaimer / Datenschutz Generated by doxygen 1.8.5 Valid HTML