All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
flexible_body_1s_23_bta.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  */
19 
20 #ifndef _FLEXIBLE_BODY_1S_23_BTA_H_
21 #define _FLEXIBLE_BODY_1S_23_BTA_H_
22 
23 #include "mbsimFlexibleBody/flexible_body/flexible_body_1s.h"
24 
25 namespace MBSimFlexibleBody {
26 
35  public:
40  FlexibleBody1s23BTA(const std::string &name="");
41 
45  virtual ~FlexibleBody1s23BTA() {}
46 
47  /* INHERITED INTERFACE OF FLEXIBLE BODY */
48  virtual void BuildElements();
49  virtual void GlobalVectorContribution(int n, const fmatvec::Vec& locVec, fmatvec::Vec& gloVec);
50  virtual void GlobalMatrixContribution(int n, const fmatvec::Mat& locMat, fmatvec::Mat& gloMat);
51  virtual void GlobalMatrixContribution(int n, const fmatvec::SymMat& locMat, fmatvec::SymMat& gloMat);
52 
53  virtual void updatePositions(Frame1s* frame);
54  virtual void updateVelocities(Frame1s* frame);
55  virtual void updateAccelerations(Frame1s* frame);
56  virtual void updateJacobians(Frame1s* frame, int j=0);
57  virtual void updateGyroscopicAccelerations(Frame1s* frame);
58 
59  virtual void updatePositions(NodeFrame* frame);
60  virtual void updateVelocities(NodeFrame* frame);
61  virtual void updateAccelerations(NodeFrame* frame);
62  virtual void updateJacobians(NodeFrame* frame, int j=0);
63  virtual void updateGyroscopicAccelerations(NodeFrame* frame);
64 
65  virtual fmatvec::Vec3 getAngles(double s);
66  /***************************************************/
67 
68  /* INHERITED INTERFACE OF OBJECT */
69  virtual void init(InitStage stage);
70  /***************************************************/
71 
72  /* INHERITED INTERFACE OF ELEMENT */
73  virtual std::string getType() const { return "FlexibleBody1s23BTA"; }
74  virtual void initializeUsingXML(xercesc::DOMElement *element);
75  /***************************************************/
76 
77  /* GETTER / SETTER */
81  void setNumberElements(int n);
82  void setElastModuls(double E_, double G_) { E = E_;G = G_; }
83  void setDensity(double rho_) { rho = rho_; }
84  void setCrossSectionalArea(double A_) { A = A_; }
85  void setMomentsInertia(double Iyy_,double Izz_,double It_) { Iyy = Iyy_; Izz = Izz_; It = It_; }
86 // void setContourRadius(double r) { cylinderFlexible->setRadius(r); }
87  void setTorsionalDamping(double d) { dTorsional = d; }
88  /***************************************************/
89 
95 
101 
102  fmatvec::SqrMat3 getOrientation(double x);
103 
104  protected:
111  void BuildElement(const double& sGlobal, double& sLocal, int& currentElement);
112 
116  int Elements;
117 
121  double l0;
122 
126  double E, G;
127 
131  double A;
132 
136  double Iyy, Izz, It;
137 
141  double rho;
142 
146  double rc;
147 
151  double dTorsional;
152 
153 // /**
154 // * \brief contour of body
155 // */
156 // CylinderFlexible *cylinderFlexible;
157  };
158 
159 }
160 
161 #endif /* _FLEXIBLE_BODY_1S_23_BTA_H_ */
virtual void GlobalVectorContribution(int n, const fmatvec::Vec &locVec, fmatvec::Vec &gloVec)
insert 'local' information in global vectors
Definition: flexible_body_1s_23_bta.cc:51
void setNumberElements(int n)
sets size of positions and velocities
Definition: flexible_body_1s_23_bta.cc:150
int Elements
number of elements
Definition: flexible_body_1s_23_bta.h:116
double A
area of cross-section
Definition: flexible_body_1s_23_bta.h:131
fmatvec::Vector< fmatvec::Fixed< 6 >, double > getPositions(double x)
compute positions and angle at Lagrangian coordinate in local FE coordinates
Definition: flexible_body_1s_23_bta.cc:159
double rho
density
Definition: flexible_body_1s_23_bta.h:141
double l0
length of entire beam and finite elements
Definition: flexible_body_1s_23_bta.h:121
double Iyy
area moment of inertia
Definition: flexible_body_1s_23_bta.h:136
tbd
Definition: flexible_body_1s.h:33
Definition: frame_1s.h:27
void BuildElement(const double &sGlobal, double &sLocal, int &currentElement)
detect current finite element
Definition: flexible_body_1s_23_bta.cc:180
double rc
contour radius
Definition: flexible_body_1s_23_bta.h:146
virtual ~FlexibleBody1s23BTA()
destructor
Definition: flexible_body_1s_23_bta.h:45
FlexibleBody1s23BTA(const std::string &name="")
constructor
Definition: flexible_body_1s_23_bta.cc:37
std::vector< Frame * > frame
fmatvec::Vector< fmatvec::Fixed< 6 >, double > getVelocities(double x)
compute velocities and differentiated angles at Lagrangian coordinate in local FE coordinates ...
Definition: flexible_body_1s_23_bta.cc:166
virtual void BuildElements()
references finite element coordinates to assembled coordinates
Definition: flexible_body_1s_23_bta.cc:42
bending torsional axis
Definition: flexible_body_1s_23_bta.h:34
virtual void GlobalMatrixContribution(int n, const fmatvec::Mat &locMat, fmatvec::Mat &gloMat)
insert &#39;local&#39; information in global matrices
Definition: flexible_body_1s_23_bta.cc:56
double dTorsional
damping
Definition: flexible_body_1s_23_bta.h:151
cartesian frame on nodes of flexible bodies
Definition: node_frame.h:31
double E
elastic modules
Definition: flexible_body_1s_23_bta.h:126

Impressum / Disclaimer / Datenschutz Generated by doxygen 1.8.5 Valid HTML