20 #ifndef FLEXIBLEBODY2S13_H_
21 #define FLEXIBLEBODY2S13_H_
23 #include "mbsimFlexibleBody/flexible_body/flexible_body_2s.h"
25 namespace MBSimFlexibleBody {
57 void MapleOutput(
fmatvec::Mat A, std::string MatName, std::string file);
63 void MapleOutput(
fmatvec::SymMat C, std::string MatName, std::string file);
95 virtual void updateh(
int j=0);
96 virtual void updatedhdz();
100 virtual void updateM();
101 virtual void updateLLM() { }
105 virtual std::string getType()
const {
return "FlexibleBody2s13"; }
109 void setRadius(
double Ri_,
double Ra_) {
Ri = Ri_; Ra = Ra_; }
110 void setEModul(
double E_) {
E = E_; }
111 void setPoissonRatio(
double nu_) {
nu = nu_; }
114 void setDensity(
double rho_) {
rho = rho_; }
115 int getReferenceDegreesOfFreedom()
const {
return RefDofs; }
116 int getRadialNumberOfElements()
const {
return nr; }
117 int getAzimuthalNumberOfElements()
const {
return nj; }
118 double getInnerRadius()
const {
return Ri; }
119 double getOuterRadius()
const {
return Ra; }
120 double getAzimuthalDegree()
const {
return degU; }
121 double getRadialDegree()
const {
return degV; }
122 fmatvec::SqrMat3& evalA() {
if(updAG)
updateAG();
return A; }
123 fmatvec::SqrMat3& evalG() {
if(updAG)
updateAG();
return G; }
124 void setReferenceInertia(
double m0_, fmatvec::SymMat3 J0_) {
m0 = m0_;
J0 = J0_; }
147 void resetUpToDate();
152 const fmatvec::Vec& evaluExt() {
if(updExt) updateExt();
return uext; }
154 virtual fmatvec::Vec3 evalPosition() {
return fmatvec::Vec3(); }
155 virtual fmatvec::SqrMat3 evalOrientation() {
return fmatvec::SqrMat3(fmatvec::EYE); }
fmatvec::SqrMat3 A
transformation matrix of coordinates of the moving frame of reference into the reference frame ...
Definition: flexible_body_2s_13.h:292
int Elements
total number of elements
Definition: flexible_body_2s_13.h:161
fmatvec::SymMat MConst
constant part of the mass matrix
Definition: flexible_body_2s_13.h:240
fmatvec::Vec qext
position and velocity with respect to Dofs
Definition: flexible_body_2s_13.h:287
virtual ~FlexibleBody2s13()
destructor
Definition: flexible_body_2s_13.h:92
double nu
Poisson ratio.
Definition: flexible_body_2s_13.h:181
int nr
number of elements in radial and azimuthal direction, number of FE nodes
Definition: flexible_body_2s_13.h:250
double Ri
inner and outer radius of disk
Definition: flexible_body_2s_13.h:198
int NodeDofs
elastic dof per node
Definition: flexible_body_2s_13.h:166
fmatvec::Mat NodeCoordinates
matrix mapping nodes and coordinates (size number of nodes x number of node coordinates) ...
Definition: flexible_body_2s_13.h:258
double computeThickness(const double &r_)
Definition: flexible_body_2s_13.cc:234
2s flexible
Definition: nurbs_disk_2s.h:54
std::vector< fmatvec::Vec > ElementalNodes
vector of boundary data of the FE (r1,j1,r2,j2)
Definition: flexible_body_2s_13.h:230
double dr
radial and azimuthal length of an FE
Definition: flexible_body_2s_13.h:203
fmatvec::RangeV ILocked
index of condensated dofs
Definition: flexible_body_2s_13.h:282
int RefDofs
dof of moving frame of reference
Definition: flexible_body_2s_13.h:171
double m0
mass of the attached shaft
Definition: flexible_body_2s_13.h:208
fmatvec::Matrix< fmatvec::General, fmatvec::Ref, fmatvec::Ref, int > ElementNodeList
matrix mapping elements and nodes (size number of elements x number of nodes per elements) ...
Definition: flexible_body_2s_13.h:265
int degV
degree of surface interpolation in radial and azimuthal direction
Definition: flexible_body_2s_13.h:220
void BuildElement(const fmatvec::Vec &s)
detect involved element for contact description
Definition: flexible_body_2s_13.cc:227
fmatvec::SqrMat3 G
transformation matrix of the time derivates of the angles into tho angular velocity in reference coor...
Definition: flexible_body_2s_13.h:297
int currentElement
number of element currently involved in contact calculations
Definition: flexible_body_2s_13.h:235
virtual void updateAG()=0
update the transformation matrices A and G
plate according to Reissner-Mindlin with moving frame of reference
Definition: flexible_body_2s_13.h:75
virtual fmatvec::Vec transformCW(const fmatvec::Vec &WrPoint)=0
transform Cartesian to cylinder system
void setNumberElements(int nr_, int nj_)
set number of elements in radial and azimuthal direction
Definition: flexible_body_2s_13.cc:206
tbd
Definition: flexible_body_2s.h:38
double rho
density
Definition: flexible_body_2s_13.h:186
int drawDegree
number of points drawn between nodes
Definition: flexible_body_2s_13.h:225
int Dofs
total dof of disk with reference movement and elastic deformation but without including bearing ...
Definition: flexible_body_2s_13.h:270
fmatvec::Vec d
parameterization of thickness over radius function: d(0) + d(1)*r + d(2)*r*r
Definition: flexible_body_2s_13.h:193
LockType LType
Dirichlet boundary condition concerning reference movement.
Definition: flexible_body_2s_13.h:277
virtual void initMatrices()=0
calculate the matrices for the first time
double E
Young's modulus.
Definition: flexible_body_2s_13.h:176
fmatvec::SymMat K
stiffness matrix
Definition: flexible_body_2s_13.h:245
fmatvec::SymMat3 J0
inertia of the attached shaft in local coordinates
Definition: flexible_body_2s_13.h:213
FlexibleBody2s13(const std::string &name, const int &DEBUGLEVEL_=0)
constructor
Definition: flexible_body_2s_13.cc:114
NurbsDisk2s * contour
contour for contact description
Definition: flexible_body_2s_13.h:307
double computePotentialEnergy()
Definition: flexible_body_2s_13.h:138
LockType
condensation setting for clamping to rigid body motion
Definition: flexible_body_2s_13.h:81