All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
finite_element_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 _FINITE_ELEMENT_1S_21_ANCF_H_
21 #define _FINITE_ELEMENT_1S_21_ANCF_H_
22 
23 #include "mbsimFlexibleBody/discretization_interface.h"
24 #include "fmatvec/fmatvec.h"
25 
26 namespace MBSimFlexibleBody {
27 
33  fmatvec::SqrMat differentiate_normalized_vector_respective_vector(const fmatvec::Vec &vector);
34 
50  {
51  public:
60  explicit FiniteElement1s21ANCF(double sl0, double sArho, double sEA, double sEI, fmatvec::Vec sg, bool sEuler=false, double sv0=0.);
61 
65  virtual ~FiniteElement1s21ANCF();
66 
67  /* INHERITED INTERFACE */
68  virtual const fmatvec::SymMat& getM() const { return M; }
69  virtual const fmatvec::Vec& geth() const { return h; }
70  virtual const fmatvec::SqrMat& getdhdq() const { return Dhq; }
71  virtual const fmatvec::SqrMat& getdhdu() const { return Dhqp; }
72  virtual int getqSize() const { return 8; }
73  virtual int getuSize() const { return 8; }
74  virtual void computeM(const fmatvec::Vec& qElement);
75  virtual void computeh(const fmatvec::Vec& qElement, const fmatvec::Vec& qpElement);
76  virtual void computedhdz(const fmatvec::Vec& qElement, const fmatvec::Vec& qpElement);
77  virtual double computeKineticEnergy(const fmatvec::Vec& qElement, const fmatvec::Vec& qpElement);
78  virtual double computeGravitationalEnergy(const fmatvec::Vec& qElement);
79  virtual double computeElasticEnergy(const fmatvec::Vec& qElement);
80  virtual fmatvec::Vec3 getPosition(const fmatvec::Vec& qElement, double s);
81  virtual fmatvec::SqrMat3 getOrientation(const fmatvec::Vec& qElement, double s);
82  virtual fmatvec::Vec3 getVelocity(const fmatvec::Vec& qElement, const fmatvec::Vec& qpElement, double s);
83  virtual fmatvec::Vec3 getAngularVelocity(const fmatvec::Vec& qElement, const fmatvec::Vec& qpElement, double s);
84  virtual fmatvec::Mat getJacobianOfMotion(const fmatvec::Vec& qElement, double s) { return JGeneralized(qElement,s); }
85  /***************************************************/
86 
87 // /**
88 // * compute additional informations for element
89 // */
90 // fmatvec::Vec computeAdditionalElementData(fmatvec::Vec &qElement, fmatvec::Vec &qpElement);
91 
92  /* GETTER / SETTER */
93  void setCurlRadius(double R);
94  void setMaterialDamping(double depsilon_, double dkappa_);
95  /***************************************************/
96 
100  void initM();
101 
108  fmatvec::Vec LocateBalken(const fmatvec::Vec& qElement, double s);
109 
117  fmatvec::Vec StateBalken(const fmatvec::Vec& qElement, const fmatvec::Vec& qpElement, double s);
118 
125  fmatvec::Mat JGeneralized(const fmatvec::Vec& qElement, double s);
126 
133 
140 
147  fmatvec::Vec3 getTangent(const fmatvec::Vec& qElement, double s);
148 
149  private:
153  double l0;
154 
158  double Arho;
159 
163  double EA;
164 
168  double EI;
169 
173  bool Euler;
174 
178  double v0;
179 
183  double wss0;
184 
188  double depsilon;
189 
193  double dkappa;
194 
199 
204 
209 
214 
219  };
220 
221 }
222 
223 #endif /* _FINITE_ELEMENT_1S_21_ANCF_H_ */
virtual const fmatvec::SqrMat & getdhdu() const
Definition: finite_element_1s_21_ancf.h:71
fmatvec::Vec StateBalken(const fmatvec::Vec &qElement, const fmatvec::Vec &qpElement, double s)
return the planar state at a contour point (Lagrange/Euler)
Definition: finite_element_1s_21_ancf.cc:294
virtual void computedhdz(const fmatvec::Vec &qElement, const fmatvec::Vec &qpElement)
compute Jacobian for implicit integration
Definition: finite_element_1s_21_ancf.cc:384
fmatvec::SqrMat Dhqp
derivative of right hand side with respect to velocities
Definition: finite_element_1s_21_ancf.h:218
fmatvec::Mat GlobalShapeFunctions_1stDerivative(double s)
return 1st derivative of the matrix of global shape functions
Definition: finite_element_1s_21_ancf.cc:354
fmatvec::Vec3 getTangent(const fmatvec::Vec &qElement, double s)
returns the tangent
Definition: finite_element_1s_21_ancf.cc:369
finite element for planar beam using Absolute Nodal Coordinate Formulation (ANCF) ...
Definition: finite_element_1s_21_ancf.h:49
void initM()
calculate constant mass matrix
Definition: finite_element_1s_21_ancf.cc:51
virtual void computeM(const fmatvec::Vec &qElement)
compute mass matrix
Definition: finite_element_1s_21_ancf.cc:400
virtual double computeGravitationalEnergy(const fmatvec::Vec &qElement)
compute gravitational energy
Definition: finite_element_1s_21_ancf.cc:392
virtual const fmatvec::SymMat & getM() const
Definition: finite_element_1s_21_ancf.h:68
double dkappa
curvature damping
Definition: finite_element_1s_21_ancf.h:193
void setCurlRadius(double R)
Definition: finite_element_1s_21_ancf.cc:41
double EA
longitudinal stiffness
Definition: finite_element_1s_21_ancf.h:163
virtual int getuSize() const
Definition: finite_element_1s_21_ancf.h:73
double EI
bending stiffness
Definition: finite_element_1s_21_ancf.h:168
fmatvec::Mat GlobalShapeFunctions(double s)
return the matrix of global shape functions
Definition: finite_element_1s_21_ancf.cc:339
double wss0
predefined bending curvature
Definition: finite_element_1s_21_ancf.h:183
fmatvec::SymMat M
mass matrix
Definition: finite_element_1s_21_ancf.h:203
virtual int getqSize() const
Definition: finite_element_1s_21_ancf.h:72
fmatvec::Vec g
gravitation
Definition: finite_element_1s_21_ancf.h:198
virtual ~FiniteElement1s21ANCF()
Definition: finite_element_1s_21_ancf.cc:38
fmatvec::Vec LocateBalken(const fmatvec::Vec &qElement, double s)
return the planar position and angle at a contour point (Lagrange/Euler)
Definition: finite_element_1s_21_ancf.cc:284
virtual double computeElasticEnergy(const fmatvec::Vec &qElement)
compute elastic energy
Definition: finite_element_1s_21_ancf.cc:396
virtual const fmatvec::SqrMat & getdhdq() const
Definition: finite_element_1s_21_ancf.h:70
double v0
Euler perspective: constant longitudinal velocity.
Definition: finite_element_1s_21_ancf.h:178
bool Euler
Euler perspective: true if set.
Definition: finite_element_1s_21_ancf.h:173
FiniteElement1s21ANCF(double sl0, double sArho, double sEA, double sEI, fmatvec::Vec sg, bool sEuler=false, double sv0=0.)
constructor
Definition: finite_element_1s_21_ancf.cc:36
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_21_ancf.cc:314
virtual double computeKineticEnergy(const fmatvec::Vec &qElement, const fmatvec::Vec &qpElement)
compute kinetic energy
Definition: finite_element_1s_21_ancf.cc:388
fmatvec::SqrMat Dhq
derivative of right hand side with respect to positions
Definition: finite_element_1s_21_ancf.h:213
discretization interface for flexible systems
Definition: discretization_interface.h:36
double Arho
line-density
Definition: finite_element_1s_21_ancf.h:158
virtual void computeh(const fmatvec::Vec &qElement, const fmatvec::Vec &qpElement)
compute smooth right hand side
Definition: finite_element_1s_21_ancf.cc:74
fmatvec::Vec h
right hand side
Definition: finite_element_1s_21_ancf.h:208
double l0
beam element length
Definition: finite_element_1s_21_ancf.h:153
virtual const fmatvec::Vec & geth() const
Definition: finite_element_1s_21_ancf.h:69
double depsilon
longitudinal damping
Definition: finite_element_1s_21_ancf.h:188

Impressum / Disclaimer / Datenschutz Generated by doxygen 1.8.5 Valid HTML