20#ifndef _FLEXIBLE_BODY_LINEAR_EXTERNAL_FFR_H_
21#define _FLEXIBLE_BODY_LINEAR_EXTERNAL_FFR_H_
29#include "mbsim/frames/frame.h"
31#include "mbsimFlexibleBody/flexible_body.h"
32#include "mbsimFlexibleBody/flexible_body/fe/linear_external_lumped_node.h"
34#include "mbsimFlexibleBody/frames/node_frame.h"
40namespace MBSimFlexibleBody {
64 virtual int getNumberElements()
const {
return nNodes; }
65 virtual double getLength()
const;
66 virtual bool isOpenStructure()
const {
return openStructure; }
74 void updateM()
override;
82 void updateh(
int k = 0)
override;
86 void init(
InitStage stage,
const MBSim::InitConfigSet &config)
override;
87 void calcqSize()
override;
88 void calcuSize(
int j)
override;
95 void setNumberOfModes(
int nf_) {
99 int getNumberModes()
const {
107 const fmatvec::Vec3 getModeShapeVector(
int node,
int column)
const;
112 void readFEMData(
const std::string &inFilePath,
const bool millimeterUnits,
bool output =
false);
114 void enableFramePlot(
double size = 1e-3, fmatvec::VecInt numbers = fmatvec::VecInt(0));
116 void resetUpToDate()
override;
120 const fmatvec::Vec& evalQv() {
if(updQv)
updateQv();
return Qv; }
128 void updatePositions(
int nodeIndex)
override;
129 void updateVelocities(
int nodeIndex)
override;
130 void updateAccelerations(
int nodeIndex)
override;
131 void updateJacobians(
int nodeIndex,
int j=0)
override;
132 void updateGyroscopicAccelerations(
int nodeIndex)
override;
134 fmatvec::Vec3 evalLocalPosition(
int i);
262 std::vector<fmatvec::Vec3>
u0;
flexible body entirely described within MBSim holding all informations about continuum approximations
Definition: flexible_body.h:227
FlexibleBodyContinuum(const std::string &name)
constructor
Definition: flexible_body.h:233
flexible body model based on floating frame reference using the system information external linear FE...
Definition: linear_external_ffr.h:50
fmatvec::Mat I_ThetaF_bar
I_ThetaF 3*nf.
Definition: linear_external_ffr.h:205
void GlobalMatrixContribution(int CurrentElement, const fmatvec::Mat &locMat, fmatvec::Mat &gloMat) override
insert 'local' information in global matrices
Definition: linear_external_ffr.cc:674
fmatvec::SymMat3 I_kl
matrix
Definition: linear_external_ffr.h:180
fmatvec::SymMat K
stiffness matrix
Definition: linear_external_ffr.h:210
fmatvec::Mat phiFull
matrix of all modes
Definition: linear_external_ffr.h:252
bool openStructure
open or closed beam structure
Definition: linear_external_ffr.h:272
fmatvec::RowVec I_kl_bar[3][3]
matrix for the computation of the mass-matrix (assembled part of the element matrix)
Definition: linear_external_ffr.h:195
void initM()
initialize the mass matrix
Definition: linear_external_ffr.cc:275
fmatvec::SymMat M_FF
matrix for the computation of the mass-matrix (assembled part of the element matrix)
Definition: linear_external_ffr.h:237
~FlexibleBodyLinearExternalFFR() override=default
destructor
void GlobalVectorContribution(int CurrentElement, const fmatvec::Vec &locVec, fmatvec::Vec &gloVec) override
insert 'local' information in global vectors
Definition: linear_external_ffr.cc:670
fmatvec::SymMat3 I_ThetaTheta_bar
inertia tensor
Definition: linear_external_ffr.h:200
int nNodes
total number of nodes
Definition: linear_external_ffr.h:165
void updateAGbarGbardot()
update A, G_bar, and G_bar_Dot
Definition: linear_external_ffr.cc:482
void BuildElements() override
references finite element coordinates to assembled coordinates
Definition: linear_external_ffr.cc:666
fmatvec::Vec3 I_1
matrix for the computation of the mass-matrix (assembled part of the element matrix)
Definition: linear_external_ffr.h:175
fmatvec::Vec mij
lumped mass for each node
Definition: linear_external_ffr.h:247
int nf
number of mode shapes used to describe the deformation
Definition: linear_external_ffr.h:267
MBSim::Frame * FFR
Floating Frame of Reference.
Definition: linear_external_ffr.h:170
fmatvec::SymMat KFull
full stiffness matrix
Definition: linear_external_ffr.h:215
fmatvec::SqrMat3 A
transformation matrix of coordinates of the moving frame of reference into the reference frame
Definition: linear_external_ffr.h:230
void computeShapeIntegrals()
compute the constant shape integrals of the whole body
Definition: linear_external_ffr.cc:418
fmatvec::Mat phi
matrix of modes used
Definition: linear_external_ffr.h:257
fmatvec::SqrMat3 G_bar
transformation matrix of the time derivates of the angles into tho angular velocity in reference coor...
Definition: linear_external_ffr.h:220
fmatvec::SqrMat3 G_bar_Dot
transformation matrix of the time derivates of the angles into tho angular velocity in reference coor...
Definition: linear_external_ffr.h:225
void updateQv()
update the quadratic velocity vector
Definition: linear_external_ffr.cc:373
void readFEMData(const std::string &inFilePath, const bool millimeterUnits, bool output=false)
read u0, mij, mode shape matrix and stiffness matrix form the input file
Definition: linear_external_ffr.cc:116
std::vector< fmatvec::Vec3 > u0
initial position of each node
Definition: linear_external_ffr.h:262
fmatvec::Mat S_bar
matrix for the computation of the mass-matrix (assembled part of the element matrix)
Definition: linear_external_ffr.h:185
fmatvec::Vec Qv
quadratic velocity vector
Definition: linear_external_ffr.h:242
void initQv()
initialize the quadratic velocity vector
Definition: linear_external_ffr.cc:367
fmatvec::SqrMat S_kl_bar[3][3]
matrix for the computation of the mass-matrix (assembled part of the element matrix)
Definition: linear_external_ffr.h:190
FlexibleBodyLinearExternalFFR(const std::string &name)
constructor
Definition: linear_external_ffr.cc:39
std::vector< Frame * > frame