All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
finite_element_1s_33_rcm.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 _FINITE_ELEMENT_1S_33_RCM_H_
21 #define _FINITE_ELEMENT_1S_33_RCM_H_
22 
23 #include "mbsimFlexibleBody/discretization_interface.h"
24 #include "mbsimFlexibleBody/pointer.h"
25 #include "mbsimFlexibleBody/flexible_body/finite_elements/finite_element_1s_33_rcm/weight33RCM.h"
26 #include "fmatvec/fmatvec.h"
27 
28 namespace MBSimFlexibleBody {
29 
40  public:
54  FiniteElement1s33RCM(double l0_, double rho_, double A_, double E_, double G_, double I1_, double I2_, double I0_, const fmatvec::Vec& g_, const RevCardanPtr &ag_);
55 
56  /* INHERITED INTERFACE OF DISCRETIZATIONINTERFACE */
57  virtual const fmatvec::SymMat& getM() const;
58  virtual const fmatvec::Vec& geth() const;
59  virtual const fmatvec::SqrMat& getdhdq() const;
60  virtual const fmatvec::SqrMat& getdhdu() const;
61  virtual int getqSize() const;
62  virtual int getuSize() const;
63 
64  virtual void computeM(const fmatvec::Vec& qG);
65  virtual void computeh(const fmatvec::Vec& qG, const fmatvec::Vec& qGt);
66  virtual void computedhdz(const fmatvec::Vec& qG, const fmatvec::Vec& qGt);
67  virtual double computeKineticEnergy(const fmatvec::Vec& qG, const fmatvec::Vec& qGt);
68  virtual double computeGravitationalEnergy(const fmatvec::Vec& qG);
69  virtual double computeElasticEnergy(const fmatvec::Vec& qG);
70 
71  virtual fmatvec::Vec3 getPosition(const fmatvec::Vec& qElement, double s);
72  virtual fmatvec::SqrMat3 getOrientation(const fmatvec::Vec& qElement, double s);
73  virtual fmatvec::Vec3 getVelocity(const fmatvec::Vec& qElement, const fmatvec::Vec& qpElement, double s);
74  virtual fmatvec::Vec3 getAngularVelocity(const fmatvec::Vec& qElement, const fmatvec::Vec& qpElement, double s);
75  virtual fmatvec::Mat computeJacobianOfMotion(const fmatvec::Vec& qG, double s) { return computeJXqG(qG,s); }
76  /*****************************************************/
77 
78  /* GETTER / SETTER */
79  void setGauss(int nGauss);
80  void setCurlRadius(double R1, double R2);
81  void setMaterialDamping(double epstD_, double k0D_);
82  void setLehrDamping(double epstL, double k0L);
83  double getl0() const;
84  /*****************************************************/
85 
86  fmatvec::Vector<fmatvec::Fixed<6>, double> getPositions(const fmatvec::Vec& qElement, double s);
87 
88  fmatvec::Vector<fmatvec::Fixed<6>, double> getVelocities(const fmatvec::Vec& qElement, const fmatvec::Vec& qpElement, double s);
89 
95  fmatvec::Mat computeJXqG(const fmatvec::Vec& qG, double x);
96 
102  fmatvec::Vec computeData(const fmatvec::Vec& qG, const fmatvec::Vec& qGt);
103 
109  double computePhysicalStrain(const fmatvec::Vec& qG, const fmatvec::Vec& qGt);
110 
111  private:
115  double l0;
116 
120  double rho;
121 
125  double A;
126 
130  double E;
131 
135  double G;
136 
140  double I1, I2, I0;
141 
146 
150  double k10, k20;
151 
155  double epstD, k0D;
156 
161  fmatvec::Vec h;
162 
167 
172 
177 
181  double l0h2, l0h3;
182 
186  double x_Old;
187 
192 
196  double tol_comp;
197 
202  fmatvec::RowVec depstil, dk0;
203 
207  RevCardanPtr ag;
208 
212  Trafo33RCMPtr tf;
213 
217  Weight33RCMPtr wt;
218 
222  void computedrS();
223 
227  void computedepstil();
228 
232  void computedk0();
233  };
234 
235  inline void FiniteElement1s33RCM::setGauss(int nGauss) { wt->setGauss(nGauss); }
236  inline double FiniteElement1s33RCM::getl0() const { return l0; }
237  inline const fmatvec::SymMat& FiniteElement1s33RCM::getM() const { return M; }
238  inline const fmatvec::Vec& FiniteElement1s33RCM::geth() const { return h; }
239  inline const fmatvec::SqrMat& FiniteElement1s33RCM::getdhdq() const { return dhdq; }
240  inline const fmatvec::SqrMat& FiniteElement1s33RCM::getdhdu() const { return dhdu; }
241  inline int FiniteElement1s33RCM::getqSize() const { return 16; }
242  inline int FiniteElement1s33RCM::getuSize() const { return 16; }
243 
244 }
245 
246 #endif /* _FINITE_ELEMENT_1S_33_RCM_H_ */
double A
cross sectional area
Definition: finite_element_1s_33_rcm.h:125
virtual void computeM(const fmatvec::Vec &qG)
compute mass matrix
Definition: finite_element_1s_33_rcm.cc:64
fmatvec::Vec computeData(const fmatvec::Vec &qG, const fmatvec::Vec &qGt)
compute interesting data
Definition: finite_element_1s_33_rcm.cc:386
RevCardanPtr ag
reversed Cardan-object
Definition: finite_element_1s_33_rcm.h:207
virtual void computeh(const fmatvec::Vec &qG, const fmatvec::Vec &qGt)
compute smooth right hand side
Definition: finite_element_1s_33_rcm.cc:93
virtual double computeElasticEnergy(const fmatvec::Vec &qG)
compute elastic energy
Definition: finite_element_1s_33_rcm.cc:263
FiniteElement1s33RCM(double l0_, double rho_, double A_, double E_, double G_, double I1_, double I2_, double I0_, const fmatvec::Vec &g_, const RevCardanPtr &ag_)
constructor
Definition: finite_element_1s_33_rcm.cc:32
fmatvec::SymMat MI
internal system description
Definition: finite_element_1s_33_rcm.h:171
double epstD
prolongational and torsional damping
Definition: finite_element_1s_33_rcm.h:155
double l0h2
beam length powers
Definition: finite_element_1s_33_rcm.h:181
void computedrS()
compute delta matrix for CP with respect to translation
Definition: finite_element_1s_33_rcm.cc:410
double x_Old
last Lagrangian coordinate in state calculation
Definition: finite_element_1s_33_rcm.h:186
fmatvec::SymMat M
global system description
Definition: finite_element_1s_33_rcm.h:160
virtual const fmatvec::SqrMat & getdhdu() const
Definition: finite_element_1s_33_rcm.h:240
fmatvec::SqrMat dhdq
matrices for implicit integration
Definition: finite_element_1s_33_rcm.h:166
virtual double computeGravitationalEnergy(const fmatvec::Vec &qG)
compute gravitational energy
Definition: finite_element_1s_33_rcm.cc:253
void computedepstil()
compute delta matrix for elongation
Definition: finite_element_1s_33_rcm.cc:417
double l0
length of finite element
Definition: finite_element_1s_33_rcm.h:115
double computePhysicalStrain(const fmatvec::Vec &qG, const fmatvec::Vec &qGt)
compute the physical strain as defined in Schindler2010, p. 25, eq. (2.52)
Definition: finite_element_1s_33_rcm.cc:403
virtual const fmatvec::SymMat & getM() const
Definition: finite_element_1s_33_rcm.h:237
fmatvec::Vec g
gravitation
Definition: finite_element_1s_33_rcm.h:145
fmatvec::Mat computeJXqG(const fmatvec::Vec &qG, double x)
compute JACOBIAN of contact description in global coordinates
Definition: finite_element_1s_33_rcm.cc:276
virtual int getuSize() const
Definition: finite_element_1s_33_rcm.h:242
double rho
density
Definition: finite_element_1s_33_rcm.h:120
void computedk0()
compute delta matrix for torsion
Definition: finite_element_1s_33_rcm.cc:421
virtual const fmatvec::SqrMat & getdhdq() const
Definition: finite_element_1s_33_rcm.h:239
virtual double computeKineticEnergy(const fmatvec::Vec &qG, const fmatvec::Vec &qGt)
compute kinetic energy
Definition: finite_element_1s_33_rcm.cc:236
double I1
geometrical moment of inertia
Definition: finite_element_1s_33_rcm.h:140
fmatvec::Vec qG_Old
global and local state of the last time step
Definition: finite_element_1s_33_rcm.h:191
virtual int getqSize() const
Definition: finite_element_1s_33_rcm.h:241
fmatvec::SqrMat Damp
internal damping matrix
Definition: finite_element_1s_33_rcm.h:176
double tol_comp
tolerance for comparison of state with old state
Definition: finite_element_1s_33_rcm.h:196
virtual void computedhdz(const fmatvec::Vec &qG, const fmatvec::Vec &qGt)
compute Jacobian for implicit integration
Definition: finite_element_1s_33_rcm.cc:204
finite element for spatial beam using Redundant Coordinate Method (RCM)
Definition: finite_element_1s_33_rcm.h:39
double k10
predefined bending
Definition: finite_element_1s_33_rcm.h:150
virtual const fmatvec::Vec & geth() const
Definition: finite_element_1s_33_rcm.h:238
discretization interface for flexible systems
Definition: discretization_interface.h:36
double G
shear modulus
Definition: finite_element_1s_33_rcm.h:135
fmatvec::Mat drS
delta matrices
Definition: finite_element_1s_33_rcm.h:201
Trafo33RCMPtr tf
trafo-object
Definition: finite_element_1s_33_rcm.h:212
double E
Young&#39;s modulus.
Definition: finite_element_1s_33_rcm.h:130
Weight33RCMPtr wt
weight-function-object
Definition: finite_element_1s_33_rcm.h:217

Impressum / Disclaimer / Datenschutz Generated by doxygen 1.8.5 Valid HTML