All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
flexible_body_1s_21_ancf.h
1 /* Copyright (C) 2004-2014 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_21_ANCF_H_
21 #define _FLEXIBLE_BODY_1S_21_ANCF_H_
22 
23 #include "mbsimFlexibleBody/flexible_body/flexible_body_1s.h"
24 
25 namespace MBSimFlexibleBody {
26 
42 
43  public:
49  FlexibleBody1s21ANCF(const std::string &name, bool openStructure);
50 
51  /* INHERITED INTERFACE OF FLEXIBLE BODY */
52  virtual void updateM() { }
53  virtual void updateLLM() { }
54 
55  virtual void BuildElements();
56 
57  virtual void GlobalVectorContribution(int n, const fmatvec::Vec& locVec, fmatvec::Vec& gloVec);
58  virtual void GlobalMatrixContribution(int n, const fmatvec::Mat& locMat, fmatvec::Mat& gloMat);
59  virtual void GlobalMatrixContribution(int n, const fmatvec::SymMat& locMat, fmatvec::SymMat& gloMat);
60 
61  virtual void updatePositions(Frame1s* frame);
62  virtual void updateVelocities(Frame1s* frame);
63  virtual void updateAccelerations(Frame1s* frame);
64  virtual void updateJacobians(Frame1s* frame, int j=0);
65  virtual void updateGyroscopicAccelerations(Frame1s* frame);
66 
67  virtual void updatePositions(NodeFrame* frame);
68  virtual void updateVelocities(NodeFrame* frame);
69  virtual void updateAccelerations(NodeFrame* frame);
70  virtual void updateJacobians(NodeFrame* frame, int j=0);
71  virtual void updateGyroscopicAccelerations(NodeFrame* frame);
72  /****************************************/
73 
74  /* INHERITED INTERFACE OF OBJECT */
75  virtual void init(InitStage stage);
76  /***************************************************/
77 
78  /* INHERITED INTERFACE OF ELEMENT */
79  virtual void plot();
80  virtual std::string getType() const { return "FlexibleBody1s21ANCF"; }
81  /***************************************************/
82 
83  /* GETTER / SETTER */
84  void setNumberElements(int n);
85  void setEModul(double E_) { E = E_; }
86  void setCrossSectionalArea(double A_) { A = A_; }
87  void setMomentInertia(double I_) { I = I_; }
88  void setDensity(double rho_) { rho = rho_; }
89  void setCurlRadius(double rc_);
90  void setMaterialDamping(double deps_, double dkappa_);
91  void setEulerPerspective(bool Euler_, double v0_);
92  int getNumberElements(){ return Elements; }
93  /***************************************************/
94 
98  void initInfo();
99 
104  void initRelaxed(double alpha);
105 
106  private:
110  int Elements;
111 
115  double l0;
116 
120  double E;
121 
125  double A;
126 
130  double I;
131 
135  double rho;
136 
140  double rc;
141 
145  double deps;
146 
150  double dkappa;
151 
156 
160  double v0;
161 
165  bool Euler;
166 
170  void initM();
171 
178  void BuildElement(const double& sGlobal, double& sLocal, int& currentElement);
179 
180  fmatvec::Vec3 X;
181  double sOld;
182  };
183 
184 }
185 
186 #endif /* _FLEXIBLE_BODY_1S_21_ANCF_H_ */
double deps
coefficient of material longitudinal damping
Definition: flexible_body_1s_21_ancf.h:145
FlexibleBody1s21ANCF(const std::string &name, bool openStructure)
constructor:
Definition: flexible_body_1s_21_ancf.cc:38
double dkappa
coefficient of material longitudinal damping
Definition: flexible_body_1s_21_ancf.h:150
void initInfo()
initialise beam only for giving information with respect to state, number elements, length, (not for simulation)
Definition: flexible_body_1s_21_ancf.cc:301
tbd
Definition: flexible_body_1s.h:33
Definition: frame_1s.h:27
double rho
material density
Definition: flexible_body_1s_21_ancf.h:135
bool initialised
flag for testing if beam is initialised
Definition: flexible_body_1s_21_ancf.h:155
double I
moment of inertia of cross-section
Definition: flexible_body_1s_21_ancf.h:130
double l0
length of one finite element
Definition: flexible_body_1s_21_ancf.h:115
void BuildElement(const double &sGlobal, double &sLocal, int &currentElement)
detect current finite element
Definition: flexible_body_1s_21_ancf.cc:272
double A
cross-section area
Definition: flexible_body_1s_21_ancf.h:125
void initM()
initialize mass matrix and calculate Cholesky decomposition
Definition: flexible_body_1s_21_ancf.cc:288
bool openStructure
flag for open (cantilever beam) or closed (rings) structures
Definition: flexible_body_1s.h:73
int Elements
number of finite elements used for discretisation
Definition: flexible_body_1s_21_ancf.h:110
void initRelaxed(double alpha)
initialise beam state concerning a straight cantilever setting or a circle shaped ring ...
Definition: flexible_body_1s_21_ancf.cc:312
double E
modulus of linear elasticity
Definition: flexible_body_1s_21_ancf.h:120
virtual void BuildElements()
references finite element coordinates to assembled coordinates
Definition: flexible_body_1s_21_ancf.cc:254
std::vector< Frame * > frame
virtual void GlobalMatrixContribution(int n, const fmatvec::Mat &locMat, fmatvec::Mat &gloMat)
insert &#39;local&#39; information in global matrices
Definition: flexible_body_1s_21_ancf.cc:52
double v0
Euler perspective: constant longitudinal velocity.
Definition: flexible_body_1s_21_ancf.h:160
Absolute Nodal Coordinate Formulation for flexible planar beams.
Definition: flexible_body_1s_21_ancf.h:41
virtual void GlobalVectorContribution(int n, const fmatvec::Vec &locVec, fmatvec::Vec &gloVec)
insert &#39;local&#39; information in global vectors
Definition: flexible_body_1s_21_ancf.cc:40
double rc
radius of undeformed shape
Definition: flexible_body_1s_21_ancf.h:140
bool Euler
Euler perspective: true if set.
Definition: flexible_body_1s_21_ancf.h:165
cartesian frame on nodes of flexible bodies
Definition: node_frame.h:31

Impressum / Disclaimer / Datenschutz Generated by doxygen 1.8.5 Valid HTML