mbsimflexiblebody  4.0.0
MBSim Flexible Body Module
1s_01_torsion.h
1/* Copyright (C) 2004-2015 MBSim Development Team
2 *
3 * This library is free software; you can redistribute it and/or
4 * modify it under the terms of the GNU Lesser General Public
5 * License as published by the Free Software Foundation; either
6 * version 2.1 of the License, or (at your option) any later version.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public
14 * License along with this library; if not, write to the Free Software
15 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16 *
17 * Contact: thorsten.schindler@mytum.de
18 * rzander@users.berlios.de
19 */
20
21#ifndef BODY_FLEXIBLE_1S_01_TORSION_H_
22#define BODY_FLEXIBLE_1S_01_TORSION_H_
23
24#include "body_flexible.h"
25
26namespace MBSim {
27
28// class Contour1sFlexible;
29
35 class BodyFlexible1s01Torsion : public BodyFlexible1s {
36 protected:
37 int n;
38 double E, rho, A, I , l;
39 // Vec JGeneralized(const double &s); // nur zur Kompatibilitaet
40
41 Vec sTangent;
42 Mat Wt;
43 Vec Wn, CrOC, CvC;
44
45 // KOS-Definition und Lage des ersten Knoten im Weltsystem
46 // Mat Jges;
47 Vec Axis; /* Enspricht der neutralen Faser */
48 Vec WrON00,WrON0;
49
50 void init(InitStage stage, const MBSim::InitConfigSet &config);
51 void initMatrizes();
52
53 void updateStateDependentVariables(double t);
54 void updatePorts(double t);
55 //void sumUpForceElements(double t);
56 //void updateW(double t);
57
58 void updateh(double t);
59
60
61 public:
62
63 BodyFlexible1s01Torsion(const string &name);
66 void setNumberShapeFunctions(int n_);
69 void setCrossSectionalArea(double A_){A = A_;}
72 void setMomentInertia(double I_){I = I_;}
75 void setEModul(double E_){E = E_;}
78 void setDensity(double rho_){rho = rho_;}
81 void setLength(double l_){l = l_;}
84 void setInitialRotationVelocity(double omega0) {u0(1) = omega0;}
87 void setInitialRotation(double omega0) {setInitialRotationVelocity(omega0);}
88
89 /* void addPort(const string &name, const double &S); */
90 /* using BodyFlexible1s::addPort; */
91
92 Mat computeJacobianMatrix(const ContourPointData &S_); // virtual of body_flexible
93
94 Mat computeWt (const ContourPointData &S_){return Axis; }
95 Vec computeWn (const ContourPointData &S_){return Vec(3); }
96 Vec computeWrOC(const ContourPointData &S_){return WrON00 + S_.alpha(0) * Axis;}
97 Vec computeWvC (const ContourPointData &S_){return Vec(3); }
98
99
102 bool hasConstMass() const {return true;}
103
105 void facLLM() {}
106
107 /* Jacobi Matrix der Rotation */
108 void setJR(const Vec &JR_) {assert(JR_.cols()==1); JR = JR_; Axis = JR_;};
109
110 // Lage des Ursprungs des Wellensystems im WKOS
111 // Per Default liegt es im Ursprung des WKOS
112 void setWrON00(const Vec &WrON00_) {WrON00 = WrON00_;}
113
115 SymMat K;
116
117 };
118
119}
120
121#endif
torsional axis with polynomial ansatz of order
Definition: 1s_01_torsion.h:35
void setMomentInertia(double I_)
Definition: 1s_01_torsion.h:72
void setInitialRotation(double omega0)
Definition: 1s_01_torsion.h:87
void setLength(double l_)
Definition: 1s_01_torsion.h:81
void setInitialRotationVelocity(double omega0)
Definition: 1s_01_torsion.h:84
bool hasConstMass() const
Definition: 1s_01_torsion.h:102
void setNumberShapeFunctions(int n_)
Definition: 1s_01_torsion.cc:34
void facLLM()
Definition: 1s_01_torsion.h:105
SymMat K
Definition: 1s_01_torsion.h:115
void setEModul(double E_)
Definition: 1s_01_torsion.h:75
void setDensity(double rho_)
Definition: 1s_01_torsion.h:78
void setCrossSectionalArea(double A_)
Definition: 1s_01_torsion.h:69