21#ifndef _FLEXIBLE_BODY_H_
22#define _FLEXIBLE_BODY_H_
24#include "mbsimFlexibleBody/node_based_body.h"
27 class FixedRelativeFrame;
31namespace MBSimFlexibleBody {
33 class DiscretizationInterface;
64 void updateqd()
override {
qd = u; }
65 void updateh(
int k=0)
override;
66 void updateM()
override;
67 void updatedhdz()
override;
70 void initializeUsingXML(xercesc::DOMElement *element)
override;
74 void init(
InitStage stage,
const MBSim::InitConfigSet &config)
override;
75 virtual double computeKineticEnergy();
76 virtual double computePotentialEnergy();
78 virtual void setq0(
const fmatvec::Vec &q0_) {
if(q0_.size()) MBSim::Body::setGeneralizedInitialPosition(q0_);
q <<=
q0; }
79 virtual void setu0(
const fmatvec::Vec &u0_) {
if(u0_.size()) MBSim::Body::setGeneralizedInitialVelocity(u0_); u <<= u0; }
92 virtual fmatvec::Vec3 getAngles(
int i) {
return fmatvec::Vec3(); }
93 virtual fmatvec::Vec3 getDerivativeOfAngles(
int i) {
return fmatvec::Vec3(); }
171 virtual void exportPositionVelocity(
const std::string & filenamePos,
const std::string & filenameVel = std::string(),
const int & deg = 3,
const bool &writePsFile =
false){throwError(
"exportPositionVelocity(const std::string& filenamePos, const std::string& filenameVel, const int& deg, const bool& writePsFile) is not implemented for " + boost::core::demangle(
typeid(*this).name())) ;}
178 virtual void importPositionVelocity(
const std::string& filenamePos,
const std::string& filenameVel = std::string()){throwError(
"importPositionVelocity(const std::string& filenamePos, const std::string& filenameVel) is not implemented for " + boost::core::demangle(
typeid(*this).name())) ;}
180 void resetUpToDate()
override;
238 void setContourNodes(
const std::vector<AT> nodes) {
userContourNodes = nodes; }
240 void setNodeOffset(
const AT nodeOffset_){
nodeOffset = nodeOffset_;}
241 AT getNodeOffset()
const {
return nodeOffset;}
flexible body entirely described within MBSim holding all informations about continuum approximations
Definition: flexible_body.h:227
std::vector< AT > userContourNodes
grid for contact point detection
Definition: flexible_body.h:247
AT nodeOffset
offset of the ROTNODE from the TRANSNODE
Definition: flexible_body.h:252
upmost class for flexible body implementation
Definition: flexible_body.h:50
FlexibleBody(const std::string &name)
constructor
Definition: flexible_body.cc:39
double d_massproportional
damping factor for mass proportion, see BodyFlexible::setMassProportionalDamping()
Definition: flexible_body.h:201
virtual void GlobalMatrixContribution(int CurrentElement, const fmatvec::SymMat &locMat, fmatvec::SymMat &gloMat)=0
insert 'local' information in global matrices
virtual void GlobalVectorContribution(int CurrentElement, const fmatvec::Vec &locVec, fmatvec::Vec &gloVec)=0
insert 'local' information in global vectors
std::vector< DiscretizationInterface * > discretization
stl-vector of discretizations/finite elements
Definition: flexible_body.h:186
virtual void importPositionVelocity(const std::string &filenamePos, const std::string &filenameVel=std::string())
imports the interpolated position and optional the velocity files (created with exportPositionVelocit...
Definition: flexible_body.h:178
bool updEle
vector of contour parameters each describing a frame
Definition: flexible_body.h:217
std::vector< fmatvec::Vec > uElement
stl-vector of finite element wise velocities
Definition: flexible_body.h:196
~FlexibleBody() override
destructor
Definition: flexible_body.cc:41
std::vector< fmatvec::Vec > qElement
stl-vector of finite element wise positions
Definition: flexible_body.h:191
virtual void BuildElements()=0
references finite element coordinates to assembled coordinates
virtual void GlobalMatrixContribution(int CurrentElement, const fmatvec::Mat &locMat, fmatvec::Mat &gloMat)=0
insert 'local' information in global matrices
virtual void exportPositionVelocity(const std::string &filenamePos, const std::string &filenameVel=std::string(), const int °=3, const bool &writePsFile=false)
interpolates the position and optional the velocity coordinates of the flexible body with Nurbs-packa...
Definition: flexible_body.h:171
void setMassProportionalDamping(const double d_)
Jacobians and gyroscopes for contour or external frame are set by implementation class.
Definition: flexible_body.h:148
Definition: node_based_body.h:30
void addFrame(NodeBasedFrame *frame)
Definition: node_based_body.cc:70
std::vector< Frame * > frame