All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
flexible_body_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 
26 namespace 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);
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
Vector< Ref, double > Vec
bool hasConstMass() const
Definition: flexible_body_1s_01_torsion.h:102
void setEModul(double E_)
Definition: flexible_body_1s_01_torsion.h:75
void setInitialRotation(double omega0)
Definition: flexible_body_1s_01_torsion.h:87
SymMat K
Definition: flexible_body_1s_01_torsion.h:115
void setCrossSectionalArea(double A_)
Definition: flexible_body_1s_01_torsion.h:69
void setNumberShapeFunctions(int n_)
Definition: flexible_body_1s_01_torsion.cc:34
void setInitialRotationVelocity(double omega0)
Definition: flexible_body_1s_01_torsion.h:84
torsional axis with polynomial ansatz of order
Definition: flexible_body_1s_01_torsion.h:35
void setMomentInertia(double I_)
Definition: flexible_body_1s_01_torsion.h:72
void facLLM()
Definition: flexible_body_1s_01_torsion.h:105
void setDensity(double rho_)
Definition: flexible_body_1s_01_torsion.h:78
void setLength(double l_)
Definition: flexible_body_1s_01_torsion.h:81

Impressum / Disclaimer / Datenschutz Generated by doxygen 1.8.5 Valid HTML