All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
finite_element_1s_33_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 _FINITE_ELEMENT_1S_33_ANCF_H_
21 #define _FINITE_ELEMENT_1S_33_ANCF_H_
22 
23 #include "mbsimFlexibleBody/discretization_interface.h"
24 #include "fmatvec/fmatvec.h"
25 
26 namespace MBSimFlexibleBody {
27 
41  {
42  public:
55  explicit FiniteElement1s33ANCF(double sl0, double srho, double sE, double sG, double sA, double sI0, double sI1, double sI2, fmatvec::Vec sg);
56 
57  /* INHERITED INTERFACE */
58  virtual const fmatvec::SymMat& getM() const { return M; }
59  virtual const fmatvec::Vec& geth() const { return h; }
60  virtual const fmatvec::SqrMat& getdhdq() const { return Dhq; }
61  virtual const fmatvec::SqrMat& getdhdu() const { return Dhqp; }
62  virtual int getqSize() const { return 12; }
63  virtual int getuSize() const { return 12; }
64  virtual void computeM(const fmatvec::Vec& qElement);
65  virtual void computeh(const fmatvec::Vec& qElement, const fmatvec::Vec& qpElement);
66  virtual void computedhdz(const fmatvec::Vec& qElement, const fmatvec::Vec& qpElement);
67  virtual double computeKineticEnergy(const fmatvec::Vec& qElement, const fmatvec::Vec& qpElement);
68  virtual double computeGravitationalEnergy(const fmatvec::Vec& qElement);
69  virtual double computeElasticEnergy(const fmatvec::Vec& qElement);
70  virtual fmatvec::Vec3 getPosition(const fmatvec::Vec& qElement, double s);
71  virtual fmatvec::SqrMat3 getOrientation(const fmatvec::Vec& qElement, double s);
72  virtual fmatvec::Vec3 getVelocity(const fmatvec::Vec& qElement, const fmatvec::Vec& qpElement, double s);
73  virtual fmatvec::Vec3 getAngularVelocity(const fmatvec::Vec& qElement, const fmatvec::Vec& qpElement, double s);
74  virtual fmatvec::Mat computeJacobianOfMotion(const fmatvec::Vec& qElement, double s) { return JGeneralized(qElement,s); }
75  /***************************************************/
76 
77  /* GETTER / SETTER */
78  void setCurlRadius(double R1, double R2);
79  void setMaterialDamping(double depsilons);
80  /***************************************************/
81 
85  void initM();
86 
93  fmatvec::Vec LocateBalken(const fmatvec::Vec& qElement, double s);
94 
102  fmatvec::Vec StateBalken(const fmatvec::Vec& qElement, const fmatvec::Vec& qpElement, double s);
103 
110  fmatvec::Mat JGeneralized(const fmatvec::Vec& qElement, double s);
111 
118 
125  fmatvec::Vec3 getTangent(const fmatvec::Vec& qElement, double s);
126 
133  fmatvec::Vec3 getNormal(const fmatvec::Vec& qElement, double s);
134 
141  fmatvec::Vec3 getBinormal(const fmatvec::Vec& qElement, double s);
142 
143  private:
147  double l0;
148 
152  double rho;
153 
157  double E;
158 
162  double G;
163 
167  double A;
168 
172  double I0;
173 
177  double I1;
178 
182  double I2;
183 
187  double wss01;
188 
192  double wss02;
193 
197  double depsilon;
198 
203 
208 
213 
218 
223 
228 
233 
238  };
239 
240 }
241 
242 #endif /* _FINITE_ELEMENT_1S_33_ANCF_H_ */
double I0
polar moment of inertia
Definition: finite_element_1s_33_ancf.h:172
double rho
density
Definition: finite_element_1s_33_ancf.h:152
fmatvec::Vec StateBalken(const fmatvec::Vec &qElement, const fmatvec::Vec &qpElement, double s)
return the state including Cardan angles at a contour point
Definition: finite_element_1s_33_ancf.cc:260
virtual const fmatvec::SqrMat & getdhdu() const
Definition: finite_element_1s_33_ancf.h:61
double wss01
predefined bending curvature
Definition: finite_element_1s_33_ancf.h:187
FiniteElement1s33ANCF(double sl0, double srho, double sE, double sG, double sA, double sI0, double sI1, double sI2, fmatvec::Vec sg)
constructor
Definition: finite_element_1s_33_ancf.cc:33
virtual double computeKineticEnergy(const fmatvec::Vec &qElement, const fmatvec::Vec &qpElement)
compute kinetic energy
Definition: finite_element_1s_33_ancf.cc:391
fmatvec::Vec g
gravitation
Definition: finite_element_1s_33_ancf.h:202
virtual void computeh(const fmatvec::Vec &qElement, const fmatvec::Vec &qpElement)
compute smooth right hand side
Definition: finite_element_1s_33_ancf.cc:83
fmatvec::Vec3 getNormal(const fmatvec::Vec &qElement, double s)
returns the normal
Definition: finite_element_1s_33_ancf.cc:357
double I2
area moment of inertia
Definition: finite_element_1s_33_ancf.h:182
virtual double computeGravitationalEnergy(const fmatvec::Vec &qElement)
compute gravitational energy
Definition: finite_element_1s_33_ancf.cc:395
fmatvec::Vec3 getTangent(const fmatvec::Vec &qElement, double s)
returns the tangent
Definition: finite_element_1s_33_ancf.cc:342
fmatvec::Mat GlobalShapeFunctions(double s)
return the matrix of global shape functions
Definition: finite_element_1s_33_ancf.cc:323
double E
Young's modulus.
Definition: finite_element_1s_33_ancf.h:157
virtual const fmatvec::SqrMat & getdhdq() const
Definition: finite_element_1s_33_ancf.h:60
virtual int getqSize() const
Definition: finite_element_1s_33_ancf.h:62
double A
cross-secion area
Definition: finite_element_1s_33_ancf.h:167
virtual void computedhdz(const fmatvec::Vec &qElement, const fmatvec::Vec &qpElement)
compute Jacobian for implicit integration
Definition: finite_element_1s_33_ancf.cc:387
fmatvec::SymMat M
mass matrix
Definition: finite_element_1s_33_ancf.h:207
fmatvec::Mat JGeneralized(const fmatvec::Vec &qElement, double s)
return the JACOBIAN of translation and rotation with respect to generalised coordinates ...
Definition: finite_element_1s_33_ancf.cc:271
virtual const fmatvec::SymMat & getM() const
Definition: finite_element_1s_33_ancf.h:58
fmatvec::Vec h
right hand side
Definition: finite_element_1s_33_ancf.h:212
fmatvec::SqrMat Dhq
derivative of right hand side with respect to positions
Definition: finite_element_1s_33_ancf.h:222
double I1
area moment of inertia
Definition: finite_element_1s_33_ancf.h:177
virtual const fmatvec::Vec & geth() const
Definition: finite_element_1s_33_ancf.h:59
virtual int getuSize() const
Definition: finite_element_1s_33_ancf.h:63
virtual void computeM(const fmatvec::Vec &qElement)
compute mass matrix
double wss02
predefined bending curvature
Definition: finite_element_1s_33_ancf.h:192
double l0
beam element length
Definition: finite_element_1s_33_ancf.h:147
finite element for spatial beam using Absolute Nodal Coordinate Formulation (ANCF) ...
Definition: finite_element_1s_33_ancf.h:40
fmatvec::SqrMat Damp
damping matrix
Definition: finite_element_1s_33_ancf.h:217
fmatvec::SqrMat Dhqp
derivative of right hand side with respect to velocities
Definition: finite_element_1s_33_ancf.h:227
fmatvec::Vec LocateBalken(const fmatvec::Vec &qElement, double s)
return the position and Cardan angles at a contour point
Definition: finite_element_1s_33_ancf.cc:252
discretization interface for flexible systems
Definition: discretization_interface.h:36
virtual double computeElasticEnergy(const fmatvec::Vec &qElement)
compute elastic energy
Definition: finite_element_1s_33_ancf.cc:399
fmatvec::Vec3 getBinormal(const fmatvec::Vec &qElement, double s)
returns the binormal
Definition: finite_element_1s_33_ancf.cc:372
FiniteElement1s33ANCF & operator=(const FiniteElement1s33ANCF &)
assignment operator is declared private
double G
shear modulus
Definition: finite_element_1s_33_ancf.h:162
double depsilon
longitudinal damping
Definition: finite_element_1s_33_ancf.h:197
void initM()
calculate constant mass matrix
Definition: finite_element_1s_33_ancf.cc:50

Impressum / Disclaimer / Datenschutz Generated by doxygen 1.8.5 Valid HTML