20#ifndef FLEXIBLEBODY2S13_H_
21#define FLEXIBLEBODY2S13_H_
23#include "mbsimFlexibleBody/flexible_body/2s.h"
25namespace MBSimFlexibleBody {
35 fmatvec::Mat condenseMatrixRows(
const fmatvec::Mat &A,
const fmatvec::RangeV &I);
43 fmatvec::Mat condenseMatrixCols(
const fmatvec::Mat &A,
const fmatvec::RangeV &I);
51 fmatvec::SymMat condenseMatrix(
const fmatvec::SymMat &A,
const fmatvec::RangeV &I);
57 void MapleOutput(
const fmatvec::Mat &A,
const std::string &MatName,
const std::string &file);
63 void MapleOutput(
const fmatvec::SymMat &C,
const std::string &MatName,
const std::string &file);
95 void updateh(
int j=0)
override;
96 void updatedhdz()
override;
100 void updateM()
override;
101 void updateLLM()
override { }
104 void plot()
override;
108 void setRadius(
double Ri_,
double Ra_) {
Ri = Ri_; Ra = Ra_; }
109 void setEModul(
double E_) {
E = E_; }
110 void setPoissonRatio(
double nu_) {
nu = nu_; }
111 void setThickness(
const fmatvec::Vec &d_) {
d = d_; }
112 fmatvec::Vec getThickness()
const {
return d; }
113 void setDensity(
double rho_) {
rho = rho_; }
114 int getReferenceDegreesOfFreedom()
const {
return RefDofs; }
115 int getRadialNumberOfElements()
const {
return nr; }
116 int getAzimuthalNumberOfElements()
const {
return nj; }
117 double getInnerRadius()
const {
return Ri; }
118 double getOuterRadius()
const {
return Ra; }
119 double getAzimuthalDegree()
const {
return degU; }
120 double getRadialDegree()
const {
return degV; }
121 fmatvec::SqrMat3& evalA() {
if(updAG)
updateAG();
return A; }
122 fmatvec::SqrMat3& evalG() {
if(updAG)
updateAG();
return G; }
123 void setReferenceInertia(
double m0_, fmatvec::SymMat3 J0_) {
m0 = m0_;
J0 = J0_; }
144 virtual fmatvec::Vec
transformCW(
const fmatvec::Vec& WrPoint) = 0;
146 void resetUpToDate()
override;
150 const fmatvec::Vec& evalqExt() {
if(updExt) updateExt();
return qext; }
151 const fmatvec::Vec& evaluExt() {
if(updExt) updateExt();
return uext; }
153 virtual fmatvec::Vec3 evalPosition() {
return fmatvec::Vec3(); }
154 virtual fmatvec::SqrMat3 evalOrientation() {
return fmatvec::SqrMat3(fmatvec::EYE); }
plate according to Reissner-Mindlin with moving frame of reference
Definition: 2s_13.h:75
double rho
density
Definition: 2s_13.h:185
int Elements
total number of elements
Definition: 2s_13.h:160
fmatvec::Mat NodeCoordinates
matrix mapping nodes and coordinates (size number of nodes x number of node coordinates)
Definition: 2s_13.h:257
NurbsDisk2s * contour
contour for contact description
Definition: 2s_13.h:306
LockType
condensation setting for clamping to rigid body motion
Definition: 2s_13.h:81
fmatvec::SymMat MConst
constant part of the mass matrix
Definition: 2s_13.h:239
int drawDegree
number of points drawn between nodes
Definition: 2s_13.h:224
std::vector< fmatvec::Vec > ElementalNodes
vector of boundary data of the FE (r1,j1,r2,j2)
Definition: 2s_13.h:229
fmatvec::SqrMat3 G
transformation matrix of the time derivates of the angles into tho angular velocity in reference coor...
Definition: 2s_13.h:296
virtual void updateAG()=0
update the transformation matrices A and G
int NodeDofs
elastic dof per node
Definition: 2s_13.h:165
int nr
number of elements in radial and azimuthal direction, number of FE nodes
Definition: 2s_13.h:249
virtual fmatvec::Vec transformCW(const fmatvec::Vec &WrPoint)=0
transform Cartesian to cylinder system
fmatvec::SymMat3 J0
inertia of the attached shaft in local coordinates
Definition: 2s_13.h:212
void setNumberElements(int nr_, int nj_)
set number of elements in radial and azimuthal direction
Definition: 2s_13.cc:204
double dr
radial and azimuthal length of an FE
Definition: 2s_13.h:202
int RefDofs
dof of moving frame of reference
Definition: 2s_13.h:170
double computeThickness(const double &r_)
Definition: 2s_13.cc:232
FlexibleBody2s13(const std::string &name)
constructor
Definition: 2s_13.cc:114
fmatvec::SqrMat3 A
transformation matrix of coordinates of the moving frame of reference into the reference frame
Definition: 2s_13.h:291
LockType LType
Dirichlet boundary condition concerning reference movement.
Definition: 2s_13.h:276
virtual void initMatrices()=0
calculate the matrices for the first time
fmatvec::SymMat K
stiffness matrix
Definition: 2s_13.h:244
fmatvec::Vec d
parameterization of thickness over radius function: d(0) + d(1)*r + d(2)*r*r
Definition: 2s_13.h:192
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: 2s_13.h:264
fmatvec::Vec qext
position and velocity with respect to Dofs
Definition: 2s_13.h:286
~FlexibleBody2s13() override=default
destructor
double nu
Poisson ratio.
Definition: 2s_13.h:180
int Dofs
total dof of disk with reference movement and elastic deformation but without including bearing
Definition: 2s_13.h:269
double Ri
inner and outer radius of disk
Definition: 2s_13.h:197
double computePotentialEnergy() override
Definition: 2s_13.h:137
fmatvec::RangeV ILocked
index of condensated dofs
Definition: 2s_13.h:281
int degV
degree of surface interpolation in radial and azimuthal direction
Definition: 2s_13.h:219
void BuildElement(const fmatvec::Vec &s)
detect involved element for contact description
Definition: 2s_13.cc:225
int currentElement
number of element currently involved in contact calculations
Definition: 2s_13.h:234
double m0
mass of the attached shaft
Definition: 2s_13.h:207
double E
Young's modulus.
Definition: 2s_13.h:175
2s flexible
Definition: nurbs_disk_2s.h:54