20 #ifndef _FLEXIBLE_BODY_1S_33_COSSERAT_H_
21 #define _FLEXIBLE_BODY_1S_33_COSSERAT_H_
23 #include "flexible_body_1s_cosserat.h"
24 #include "mbsimFlexibleBody/pointer.h"
25 #include "mbsimFlexibleBody/flexible_body/finite_elements/finite_element_1s_33_cosserat_translation.h"
26 #include "mbsimFlexibleBody/flexible_body/finite_elements/finite_element_1s_33_cosserat_rotation.h"
28 namespace MBSimFlexibleBody {
75 virtual void exportPositionVelocity(
const std::string & filenamePos,
const std::string & filenameVel = std::string(),
const int & deg = 3,
const bool & writePsFile =
false);
76 virtual void importPositionVelocity(
const std::string & filenamePos,
const std::string & filenameVel = std::string());
80 virtual void updateVelocities(
Frame1s* frame);
81 virtual void updateAccelerations(
Frame1s* frame);
82 virtual void updateJacobians(
Frame1s* frame,
int j=0);
83 virtual void updateGyroscopicAccelerations(
Frame1s* frame);
85 virtual void updatePositions(
NodeFrame* frame);
86 virtual void updateVelocities(
NodeFrame* frame);
87 virtual void updateAccelerations(
NodeFrame* frame);
88 virtual void updateJacobians(
NodeFrame* frame,
int j=0);
89 virtual void updateGyroscopicAccelerations(
NodeFrame* frame);
91 virtual fmatvec::Vec3 getAngles(
int i);
92 virtual fmatvec::Vec3 getDerivativeOfAngles(
int i);
95 virtual void init(InitStage stage);
96 virtual double computePotentialEnergy();
100 virtual void updateLLM();
103 virtual std::string getType()
const {
return "FlexibleBody1s33Cosserat"; }
107 void setNumberElements(
int n);
109 void setMomentsInertia(
double I1_,
double I2_,
double I0_);
111 void setCurlRadius(
double R1_,
double R2_);
112 void setMaterialDamping(
double cEps0D_,
double cEps1D_,
double cEps2D_);
114 virtual int getNumberOfElementDOF()
const {
return 6; }
116 int getNumberElements()
const {
return Elements; }
117 int getNumberDOFs()
const {
return qSize; }
210 inline void FlexibleBody1s33Cosserat::setMomentsInertia(
double I1_,
double I2_,
double I0_) {
216 inline void FlexibleBody1s33Cosserat::setCurlRadius(
double R1_,
double R2_) {
223 inline void FlexibleBody1s33Cosserat::setMaterialDamping(
double cEps0D_,
double cEps1D_,
double cEps2D_) {
virtual void GlobalMatrixContribution(int n, const fmatvec::Mat &locMat, fmatvec::Mat &gloMat)
insert 'local' information in global matrices
Definition: flexible_body_1s_33_cosserat.cc:123
std::vector< DiscretizationInterface * > discretization
stl-vector of discretizations/finite elements
Definition: flexible_body.h:199
virtual void GlobalVectorContribution(int n, const fmatvec::Vec &locVec, fmatvec::Vec &gloVec)
insert 'local' information in global vectors
Definition: flexible_body_1s_33_cosserat.cc:111
fmatvec::Vector< fmatvec::Fixed< 6 >, double > getVelocities(double x)
compute velocities and differentiated angles at Lagrangian coordinate in local FE coordinates ...
Definition: flexible_body_1s_33_cosserat.cc:338
virtual void BuildElements()
references finite element coordinates to assembled coordinates
Definition: flexible_body_1s_33_cosserat.cc:49
Definition: frame_1s.h:27
int Elements
number of translational elements
Definition: flexible_body_1s_cosserat.h:164
fmatvec::Vector< fmatvec::Fixed< 6 >, double > getPositions(double x)
compute positions and angle at Lagrangian coordinate in local FE coordinates
Definition: flexible_body_1s_33_cosserat.cc:323
double R1
radius of undeformed shape R1: in t-b-plane R2: in t-n-plane
Definition: flexible_body_1s_cosserat.h:204
void computeBoundaryCondition()
compute boundary conditions for rotation grid first and last finite difference rotation beam element ...
Definition: flexible_body_1s_33_cosserat.cc:442
double R2
radius of undeformed shape R1: in t-b-plane R2: in t-n-plane
Definition: flexible_body_1s_33_cosserat.h:178
double I2
area moments of inertia I0: around torsional axis I1: in t-b-plane I2: in t-n-plane ...
Definition: flexible_body_1s_33_cosserat.h:171
Definition: flexible_body_1s_cosserat.h:52
bool openStructure
flag for open (cantilever beam) or closed (rings) structures
Definition: flexible_body_1s.h:73
void initInfo()
initialise beam only for giving information with respect to state, number elements, length, (not for simulation)
Definition: flexible_body_1s_33_cosserat.cc:387
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_1s_33_cosserat.cc:537
fmatvec::Vec3 computeAngles(double sGlobal, const fmatvec::Vec &vec)
compute angles at Lagrangian coordinate in local FE coordinates
Definition: flexible_body_1s_33_cosserat.cc:354
std::vector< DiscretizationInterface * > rotationDiscretization
stl-vector of finite elements for rotation grid
Definition: flexible_body_1s_cosserat.h:144
double cEps2D
strain damping
Definition: flexible_body_1s_33_cosserat.h:183
bool JTransInterp
marker if Jacobians already interpolated
Definition: flexible_body_1s_33_cosserat.h:163
void initM()
initialize translational part of mass matrix and calculate Cholesky decomposition ...
Definition: flexible_body_1s_33_cosserat.cc:429
virtual ~FlexibleBody1s33Cosserat()
destructor
Definition: flexible_body_1s_33_cosserat.cc:40
std::vector< Frame * > frame
void BuildElementTranslation(const double &sGlobal, double &sLocal, int ¤tElementTranslation)
detect current finite element (t void setOpenMBVSpineExtrusion(OpenMBV::SpineExtrusion* spineExtrusio...
Definition: flexible_body_1s_33_cosserat.cc:410
double cEps0D
strain damping
Definition: flexible_body_1s_cosserat.h:209
void GlobalVectorContributionRotation(int n, const fmatvec::Vec &locVec, fmatvec::Vec &gloVec)
insert 'local' information in global vectors for rotation grid
Definition: flexible_body_1s_33_cosserat.cc:446
bool initialised
initialised FLAG
Definition: flexible_body_1s_cosserat.h:214
double I1
area moments of inertia I0: around torsional axis I1: in t-b-plane I2: in t-n-plane ...
Definition: flexible_body_1s_cosserat.h:192
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_1s_33_cosserat.cc:472
cartesian frame on nodes of flexible bodies
Definition: node_frame.h:31
finite element for spatial beam using Cosserat model
Definition: flexible_body_1s_33_cosserat.h:55