20#ifndef FLEXIBLE_BODY_1S_COSSERAT_H_
21#define FLEXIBLE_BODY_1S_COSSERAT_H_
23#include "mbsimFlexibleBody/flexible_body/1s.h"
24#include "mbsimFlexibleBody/pointer.h"
34namespace MBSimFlexibleBody {
50 class Contour1sNeutralCosserat;
69 void exportPositionVelocity(
const std::string & filenamePos,
const std::string & filenameVel = std::string(),
const int & deg = 3,
const bool & writePsFile =
false)
override =0;
70 void importPositionVelocity(
const std::string & filenamePos,
const std::string & filenameVel = std::string())
override =0;
74 void updateh(
int i = 0)
override;
80 virtual void setNumberElements(
int n)=0;
81 void setEGModuls(
double E_,
double G_) {
E = E_; G = G_; }
82 void setDensity(
double rho_) {
rho = rho_; }
83 void setCrossSectionalArea(
double A_) {
A = A_; }
85 virtual void setMomentsInertia(
double I1_,
double I2_,
double I0_) { }
86 virtual void setMomentsInertia(
double I1_) { }
88 virtual void setCurlRadius(
double R1_,
double R2_) { }
89 virtual void setCurlRadius(
double R1_) { }
90 virtual void setMaterialDamping(
double cEps0D_,
double cEps1D_,
double cEps2D_) { }
91 virtual void setMaterialDamping(
double cEps0D_,
double cEps1D_) { }
96 virtual Contour1sNeutralCosserat*
createNeutralPhase(
const std::string & contourName =
"Neutral");
107 virtual int getNumberOfElementDOF()
const { throwError(
"(FlexibleBody1sCosserat::getNumberOfElementDOF): Not implemented!"); }
108 virtual int getNumberElements()
const {
return Elements; }
109 virtual int getqSizeFull()
const {
return getqSize(); }
221 fmatvec::Vec bound_ang_end;
222 fmatvec::Vec bound_ang_vel_start;
223 fmatvec::Vec bound_ang_vel_end;
Definition: 1s_neutral_cosserat.h:21
Definition: 1s_cosserat.h:52
Contour1sNeutralCosserat * ncc
contour for the spine extrusion
Definition: 1s_cosserat.h:228
virtual fmatvec::Mat3xV transformJacobian(fmatvec::Mat3xV J)
interface function to transform the Jacobian if the generalized coordinates have been changed
Definition: 1s_cosserat.h:105
CardanPtr angle
angle parametrisation
Definition: 1s_cosserat.h:158
int rotationalElements
number of rotational elements =Elements (for a closed structure) or =Elements+1 (for an open structur...
Definition: 1s_cosserat.h:168
virtual void GlobalVectorContributionRotation(int n, const fmatvec::Vec &locVec, fmatvec::Vec &gloVec)=0
insert 'local' information in global vectors for rotation grid
double cEps0D
strain damping
Definition: 1s_cosserat.h:208
void importPositionVelocity(const std::string &filenamePos, const std::string &filenameVel=std::string()) override=0
imports the interpolated position and optional the velocity files (created with exportPositionVelocit...
void GlobalMatrixContribution(int n, const fmatvec::Mat &locMat, fmatvec::Mat &gloMat) override=0
insert 'local' information in global matrices
void GlobalMatrixContribution(int n, const fmatvec::SymMat &locMat, fmatvec::SymMat &gloMat) override=0
insert 'local' information in global matrices
double A
area of cross-section
Definition: 1s_cosserat.h:183
void exportPositionVelocity(const std::string &filenamePos, const std::string &filenameVel=std::string(), const int °=3, const bool &writePsFile=false) override=0
interpolates the position and optional the velocity coordinates of the flexible body with Nurbs-packa...
double l0
length of entire beam and finite elements
Definition: 1s_cosserat.h:173
virtual Contour1sNeutralCosserat * createNeutralPhase(const std::string &contourName="Neutral")
automatically creates its neutral contour
Definition: 1s_cosserat.cc:35
virtual void initInfo()=0
initialise beam only for giving information with respect to state, number elements,...
void GlobalVectorContribution(int n, const fmatvec::Vec &locVec, fmatvec::Vec &gloVec) override=0
insert 'local' information in global vectors
virtual void initM()=0
initialize translational part of mass matrix and calculate Cholesky decomposition
int Elements
number of translational elements
Definition: 1s_cosserat.h:163
FlexibleBody1sCosserat(const std::string &name, bool openStructure)
constructor
virtual void BuildElementTranslation(const double &sGlobal, double &sLocal, int ¤tElementTranslation)=0
detect current finite element (translation)
double I1
area moments of inertia I0: around torsional axis I1: in t-b-plane I2: in t-n-plane
Definition: 1s_cosserat.h:191
fmatvec::Vec bound_ang_start
boundary conditions for rotation grid first and last finite difference rotation beam element refer to...
Definition: 1s_cosserat.h:220
std::vector< DiscretizationInterface * > rotationDiscretization
stl-vector of finite elements for rotation grid
Definition: 1s_cosserat.h:143
std::vector< fmatvec::Vec > uRotationElement
stl-vector of finite element wise velocities for rotation grid
Definition: 1s_cosserat.h:153
double R1
radius of undeformed shape R1: in t-b-plane R2: in t-n-plane
Definition: 1s_cosserat.h:203
std::vector< fmatvec::Vec > qRotationElement
stl-vector of finite element positions for rotation grid
Definition: 1s_cosserat.h:148
bool initialised
initialised FLAG
Definition: 1s_cosserat.h:213
double E
elastic modules
Definition: 1s_cosserat.h:178
void BuildElements() override=0
references finite element coordinates to assembled coordinates
double rho
density
Definition: 1s_cosserat.h:196
virtual void computeBoundaryCondition()=0
compute boundary conditions for rotation grid first and last finite difference rotation beam element ...
bool openStructure
flag for open (cantilever beam) or closed (rings) structures
Definition: 1s.h:73
bool updEle
vector of contour parameters each describing a frame
Definition: flexible_body.h:217