20 #ifndef FLEXIBLE_BODY_1S_COSSERAT_H_
21 #define FLEXIBLE_BODY_1S_COSSERAT_H_
23 #include "mbsimFlexibleBody/flexible_body/flexible_body_1s.h"
24 #include "mbsimFlexibleBody/pointer.h"
34 namespace MBSimFlexibleBody {
50 class Contour1sNeutralCosserat;
69 virtual void exportPositionVelocity(
const std::string & filenamePos,
const std::string & filenameVel = std::string(),
const int & deg = 3,
const bool & writePsFile =
false)=0;
70 virtual void importPositionVelocity(
const std::string & filenamePos,
const std::string & filenameVel = std::string())=0;
74 virtual void updateh(
int i = 0);
77 virtual std::string getType()
const {
return "FlexibleBody1sCosserat"; }
81 virtual void setNumberElements(
int n)=0;
82 void setEGModuls(
double E_,
double G_) {
E = E_; G = G_; }
83 void setDensity(
double rho_) {
rho = rho_; }
84 void setCrossSectionalArea(
double A_) {
A = A_; }
86 virtual void setMomentsInertia(
double I1_,
double I2_,
double I0_) { }
87 virtual void setMomentsInertia(
double I1_) { }
89 virtual void setCurlRadius(
double R1_,
double R2_) { }
90 virtual void setCurlRadius(
double R1_) { }
91 virtual void setMaterialDamping(
double cEps0D_,
double cEps1D_,
double cEps2D_) { }
92 virtual void setMaterialDamping(
double cEps0D_,
double cEps1D_) { }
108 virtual int getNumberOfElementDOF()
const { THROW_MBSIMERROR(
"(FlexibleBody1sCosserat::getNumberOfElementDOF): Not implemented!"); }
109 virtual int getNumberElements()
const {
return Elements; }
110 virtual int getqSizeFull()
const {
return getqSize(); }
137 virtual void BuildElementTranslation(
const double& sGlobal,
double& sLocal,
int& currentElementTranslation) = 0;
238 virtual void initM()=0;
virtual void GlobalMatrixContribution(int n, const fmatvec::Mat &locMat, fmatvec::Mat &gloMat)=0
insert 'local' information in global matrices
std::vector< fmatvec::Vec > qRotationElement
stl-vector of finite element positions for rotation grid
Definition: flexible_body_1s_cosserat.h:149
virtual void GlobalVectorContribution(int n, const fmatvec::Vec &locVec, fmatvec::Vec &gloVec)=0
insert 'local' information in global vectors
virtual void exportPositionVelocity(const std::string &filenamePos, const std::string &filenameVel=std::string(), const int °=3, const bool &writePsFile=false)=0
interpolates the position and optional the velocity coordinates of the flexible body with Nurbs-packa...
tbd
Definition: flexible_body_1s.h:33
int Elements
number of translational elements
Definition: flexible_body_1s_cosserat.h:164
fmatvec::Vec bound_ang_start
boundary conditions for rotation grid first and last finite difference rotation beam element refer to...
Definition: flexible_body_1s_cosserat.h:221
double R1
radius of undeformed shape R1: in t-b-plane R2: in t-n-plane
Definition: flexible_body_1s_cosserat.h:204
Definition: flexible_body_1s_cosserat.h:52
std::vector< fmatvec::Vec > uRotationElement
stl-vector of finite element wise velocities for rotation grid
Definition: flexible_body_1s_cosserat.h:154
bool openStructure
flag for open (cantilever beam) or closed (rings) structures
Definition: flexible_body_1s.h:73
double E
elastic modules
Definition: flexible_body_1s_cosserat.h:179
CardanPtr angle
angle parametrisation
Definition: flexible_body_1s_cosserat.h:159
virtual fmatvec::Mat3xV transformJacobian(fmatvec::Mat3xV J)
interface function to transform the Jacobian if the generalized coordinates have been changed ...
Definition: flexible_body_1s_cosserat.h:106
std::vector< DiscretizationInterface * > rotationDiscretization
stl-vector of finite elements for rotation grid
Definition: flexible_body_1s_cosserat.h:144
virtual void BuildElements()=0
references finite element coordinates to assembled coordinates
bool updEle
vector of contour parameters each describing a frame
Definition: flexible_body.h:230
double cEps0D
strain damping
Definition: flexible_body_1s_cosserat.h:209
virtual void importPositionVelocity(const std::string &filenamePos, const std::string &filenameVel=std::string())=0
imports the interpolated position and optional the velocity files (created with exportPositionVelocit...
double A
area of cross-section
Definition: flexible_body_1s_cosserat.h:184
virtual Contour1sNeutralCosserat * createNeutralPhase(const std::string &contourName="Neutral")
automatically creates its neutral contour
Definition: flexible_body_1s_cosserat.cc:35
virtual void GlobalVectorContributionRotation(int n, const fmatvec::Vec &locVec, fmatvec::Vec &gloVec)=0
insert 'local' information in global vectors for rotation grid
Definition: contour_1s_neutral_cosserat.h:21
Contour1sNeutralCosserat * ncc
contour for the spine extrusion
Definition: flexible_body_1s_cosserat.h:229
double rho
density
Definition: flexible_body_1s_cosserat.h:197
virtual void computeBoundaryCondition()=0
compute boundary conditions for rotation grid first and last finite difference rotation beam element ...
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 initM()=0
initialize translational part of mass matrix and calculate Cholesky decomposition ...
virtual void initInfo()=0
compute state (positions, angles, velocities, differentiated angles) at Lagrangian coordinate in loca...
int rotationalElements
number of rotational elements =Elements (for a closed structure) or =Elements+1 (for an open structur...
Definition: flexible_body_1s_cosserat.h:169
virtual void BuildElementTranslation(const double &sGlobal, double &sLocal, int ¤tElementTranslation)=0
detect current finite element (translation)
double l0
length of entire beam and finite elements
Definition: flexible_body_1s_cosserat.h:174