20#ifndef _FLEXIBLE_BODY_1S_21_COSSERAT_H_
21#define _FLEXIBLE_BODY_1S_21_COSSERAT_H_
23#include <fmatvec/fmatvec.h>
24#include "mbsimFlexibleBody/flexible_body/1s_cosserat.h"
25#include "mbsimFlexibleBody/flexible_body.h"
26#include "mbsimFlexibleBody/pointer.h"
27#include "mbsimFlexibleBody/contours/flexible_band.h"
28#include "mbsimFlexibleBody/flexible_body/fe/1s_21_cosserat_translation.h"
29#include "mbsimFlexibleBody/flexible_body/fe/1s_21_cosserat_rotation.h"
30#include <openmbvcppinterface/spineextrusion.h>
32namespace MBSimFlexibleBody {
78 void exportPositionVelocity(
const std::string & filenamePos,
const std::string & filenameVel = std::string(),
const int & deg = 3,
const bool & writePsFile =
false)
override;
79 void importPositionVelocity(
const std::string & filenamePos,
const std::string & filenameVel = std::string())
override;
85 void updateGyroscopicAccelerations(
Frame1s*
frame)
override;
87 void updatePositions(
int node)
override;
88 void updateVelocities(
int node)
override;
89 void updateAccelerations(
int node)
override;
90 void updateJacobians(
int node,
int j=0)
override;
91 void updateGyroscopicAccelerations(
int node)
override;
97 void init(
InitStage stage,
const MBSim::InitConfigSet &config)
override;
98 double computePotentialEnergy()
override;
99 void updateM()
override;
100 void updateLLM()
override;
105 void updateh(
int i = 0)
override;
111 void setNumberElements(
int n)
override;
113 void setMomentsInertia(
double I1_)
override;
114 void setCurlRadius(
double R1_)
override;
115 void setMaterialDamping(
double cEps0D_,
double cEps1D_)
override;
123 int getNumberOfElementDOF()
const override {
127 int getNumberElements()
const override {
130 double getLength()
const {
133 int getqSizeFull()
const override {
136 bool isOpenStructure()
const {
143 void enablePOD(
const std::string & h5Path,
int reduceMode = 0,
int POMSize = 0);
150 fmatvec::Vector<fmatvec::Fixed<6>,
double>
getPositions(
double x);
156 fmatvec::Vector<fmatvec::Fixed<6>,
double>
getVelocities(
double x);
163 fmatvec::Vec3
computeAngles(
double sGlobal,
const fmatvec::Vec & vec);
227 void initM()
override;
257 int findPOMSize(
const fmatvec::Mat & POM,
const fmatvec::Mat &SVD,
double precission = 1 - 1.e-3);
262 inline void FlexibleBody1s21Cosserat::updateM() {
266 inline void FlexibleBody1s21Cosserat::updateLLM() {
270 inline void FlexibleBody1s21Cosserat::setMomentsInertia(
double I1_) {
274 inline void FlexibleBody1s21Cosserat::setCurlRadius(
double R1_) {
280 inline void FlexibleBody1s21Cosserat::setMaterialDamping(
double cEps0D_,
double cEps1D_) {
flexible body for planar beam using Cosserat model
Definition: 1s_21_cosserat.h:56
fmatvec::SymMat MConst
constant mass matrix
Definition: 1s_21_cosserat.h:183
void initInfo() override
initialise beam only for giving information with respect to state, number elements,...
Definition: 1s_21_cosserat.cc:433
fmatvec::SymMat LLMConst
constant decomposed mass matrix
Definition: 1s_21_cosserat.h:188
void BuildElements() override
references finite element coordinates to assembled coordinates
Definition: 1s_21_cosserat.cc:51
fmatvec::Mat U
POM projection matrix.
Definition: 1s_21_cosserat.h:203
void BuildElementTranslation(const double &sGlobal, double &sLocal, int ¤tElementTranslation) override
detect current finite element (translation)
Definition: 1s_21_cosserat.cc:458
void GlobalVectorContributionRotation(int n, const fmatvec::Vec &locVec, fmatvec::Vec &gloVec) override
insert 'local' information in global vectors for rotation grid
Definition: 1s_21_cosserat.cc:114
fmatvec::Vec qFull
vector of position-DOFs of full system
Definition: 1s_21_cosserat.h:208
fmatvec::Vector< fmatvec::Fixed< 6 >, double > getPositions(double x)
compute positions and angle at Lagrangian coordinate in local FE coordinates
Definition: 1s_21_cosserat.cc:374
void GlobalMatrixContribution(int n, const fmatvec::SymMat &locMat, fmatvec::SymMat &gloMat) override
insert 'local' information in global matrices
bool PODreduced
bool true: execute POD, false: without POD
Definition: 1s_21_cosserat.h:198
void computeBoundaryCondition() override
compute boundary conditions for rotation grid first and last finite difference rotation beam element ...
Definition: 1s_21_cosserat.cc:503
fmatvec::Vec3 computeAngles(double sGlobal, const fmatvec::Vec &vec)
compute angles at Lagrangian coordinate in local FE coordinates
Definition: 1s_21_cosserat.cc:399
fmatvec::Mat readPositionMatrix(const std::string &h5File, const std::string &job)
read position matrix of other simulation for POD-reduction
Definition: 1s_21_cosserat.cc:656
FlexibleBody1s21Cosserat(const std::string &name, bool openStructure)
constructor
bool JInterp
marker if Jacobians already interpolated
Definition: 1s_21_cosserat.h:193
void GlobalVectorContribution(int n, const fmatvec::Vec &locVec, fmatvec::Vec &gloVec) override
insert 'local' information in global vectors
Definition: 1s_21_cosserat.cc:102
void GlobalMatrixContribution(int n, const fmatvec::Mat &locMat, fmatvec::Mat &gloMat) override
insert 'local' information in global matrices
fmatvec::Vector< fmatvec::Fixed< 6 >, double > getVelocities(double x)
compute velocities and differentiated angles at Lagrangian coordinate in local FE coordinates
Definition: 1s_21_cosserat.cc:387
fmatvec::Mat3xV transformJacobian(fmatvec::Mat3xV J) override
interface function to transform the Jacobian if the generalized coordinates have been changed
Definition: 1s_21_cosserat.h:117
fmatvec::Vec hFull
vector of smooth right-hand side of full system
Definition: 1s_21_cosserat.h:218
void initM() override
initialize translational part of mass matrix and calculate Cholesky decomposition
Definition: 1s_21_cosserat.cc:477
~FlexibleBody1s21Cosserat() override
destructor
Definition: 1s_21_cosserat.cc:42
fmatvec::Vec uFull
vector of velocity-DOFs of full system
Definition: 1s_21_cosserat.h:213
int findPOMSize(const fmatvec::Mat &POM, const fmatvec::Mat &SVD, double precission=1 - 1.e-3)
find reduction order for POM
Definition: 1s_21_cosserat.cc:704
void importPositionVelocity(const std::string &filenamePos, const std::string &filenameVel=std::string()) override
imports the interpolated position and optional the velocity files (created with exportPositionVelocit...
Definition: 1s_21_cosserat.cc:572
void exportPositionVelocity(const std::string &filenamePos, const std::string &filenameVel=std::string(), const int °=3, const bool &writePsFile=false) override
interpolates the position and optional the velocity coordinates of the flexible body with Nurbs-packa...
Definition: 1s_21_cosserat.cc:507
Definition: 1s_cosserat.h:52
double cEps0D
strain damping
Definition: 1s_cosserat.h:208
int Elements
number of translational elements
Definition: 1s_cosserat.h:163
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
std::vector< DiscretizationInterface * > rotationDiscretization
stl-vector of finite elements for rotation grid
Definition: 1s_cosserat.h:143
double R1
radius of undeformed shape R1: in t-b-plane R2: in t-n-plane
Definition: 1s_cosserat.h:203
bool initialised
initialised FLAG
Definition: 1s_cosserat.h:213
bool openStructure
flag for open (cantilever beam) or closed (rings) structures
Definition: 1s.h:73
double L
length of beam
Definition: 1s.h:68
std::vector< DiscretizationInterface * > discretization
stl-vector of discretizations/finite elements
Definition: flexible_body.h:186
bool updEle
vector of contour parameters each describing a frame
Definition: flexible_body.h:217
Definition: frame_1s.h:27
std::vector< Frame * > frame