All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
finite_element_1s_21_cosserat_rotation.h
1 /* Copyright (C) 2004-2012 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: thomas.cebulla@mytum.de
18  */
19 
20 #ifndef _FINITE_ELEMENT_1S_21_COSSERAT_ROTATION_H_
21 #define _FINITE_ELEMENT_1S_21_COSSERAT_ROTATION_H_
22 
23 #include "mbsimFlexibleBody/discretization_interface.h"
24 #include "mbsim/mbsim_event.h"
25 #include "mbsimFlexibleBody/pointer.h"
26 #include "fmatvec/fmatvec.h"
27 
28 namespace MBSimFlexibleBody {
29 
49  public:
50 
61  FiniteElement1s21CosseratRotation(double l0_,double E_,double G_,double I1_);
62 
67 
68  /* INHERITED INTERFACE OF DISCRETIZATIONINTERFACE */
69  virtual const fmatvec::SymMat& getM() const;
70  virtual const fmatvec::Vec& geth() const;
71  virtual const fmatvec::SqrMat& getdhdq() const;
72  virtual const fmatvec::SqrMat& getdhdu() const;
73  virtual int getqSize() const;
74  virtual int getuSize() const;
75 
76  virtual void computeM(const fmatvec::Vec& qG);
77  virtual void computeh(const fmatvec::Vec& qG, const fmatvec::Vec& qGt);
78  virtual void computedhdz(const fmatvec::Vec& qG, const fmatvec::Vec& qGt);
79  virtual double computeKineticEnergy(const fmatvec::Vec& qG, const fmatvec::Vec& qGt);
80  virtual double computeGravitationalEnergy(const fmatvec::Vec& qG);
81  virtual double computeElasticEnergy(const fmatvec::Vec& qG);
82 
83  virtual fmatvec::Vec3 getPosition(const fmatvec::Vec& qElement, double s);
84  virtual fmatvec::SqrMat3 getOrientation(const fmatvec::Vec& qElement, double s);
85  virtual fmatvec::Vec3 getVelocity (const fmatvec::Vec& qElement, const fmatvec::Vec& qpElement, double s);
86  virtual fmatvec::Vec3 getAngularVelocity(const fmatvec::Vec& qElement, const fmatvec::Vec& qpElement, double s);
87  virtual fmatvec::Mat getJacobianOfMotion(const fmatvec::Vec& qElement, double s) { return computeJXqG(qElement,s); }
88 
89  /* GETTER / SETTER */
90  void setCurlRadius(double R1);
91  double getl0() const;
92 
98  fmatvec::Mat computeJXqG(const fmatvec::Vec& qG,double x);
99 
100  private:
104  double l0;
105 
109  double E;
110 
114  double G;
115 
119  double I1;
120 
126  double k10;
127 
132 
137 
142 
143 
144  FiniteElement1s21CosseratRotation(); // standard constructor
146  FiniteElement1s21CosseratRotation& operator=(const FiniteElement1s21CosseratRotation&); // assignment operator
147  };
148 
149  inline const fmatvec::SymMat& FiniteElement1s21CosseratRotation::getM() const { throw MBSim::MBSimError("(FiniteElement1s21CosseratRotation::getM): Not implemented"); }
150  inline const fmatvec::Vec& FiniteElement1s21CosseratRotation::geth() const { return h; }
152  inline const fmatvec::SqrMat& FiniteElement1s21CosseratRotation::getdhdu() const { return dhdu; }
153  inline int FiniteElement1s21CosseratRotation::getqSize() const { return 4; }
154  inline int FiniteElement1s21CosseratRotation::getuSize() const { return 4; }
155  inline void FiniteElement1s21CosseratRotation::computeM(const fmatvec::Vec& qG) { throw MBSim::MBSimError("(FiniteElement1s21CosseratRotation::computeM): Not implemented"); }
156  inline void FiniteElement1s21CosseratRotation::computedhdz(const fmatvec::Vec& qG, const fmatvec::Vec& qGt) { throw MBSim::MBSimError("(FiniteElement1s21CosseratRotation::computedhdz): Not implemented"); }
157  inline double FiniteElement1s21CosseratRotation::computeKineticEnergy(const fmatvec::Vec& qG, const fmatvec::Vec& qGt) { throw MBSim::MBSimError("(FiniteElement1s21CosseratRotation::computeKineticEnergy): Not implemented"); }
158  inline double FiniteElement1s21CosseratRotation::computeGravitationalEnergy(const fmatvec::Vec& qG) { throw MBSim::MBSimError("(FiniteElement1s21CosseratRotation::computeGravitationalEnergy): Not implemented"); }
159  inline double FiniteElement1s21CosseratRotation::getl0() const { return l0; }
160 
161 }
162 
163 #endif /* _FINITE_ELEMENT_1S_21_COSSERAT_ROTATION_H_ */
virtual void computeh(const fmatvec::Vec &qG, const fmatvec::Vec &qGt)
compute smooth right hand side
Definition: finite_element_1s_21_cosserat_rotation.cc:39
virtual int getuSize() const
Definition: finite_element_1s_21_cosserat_rotation.h:154
fmatvec::Vec h
global system description
Definition: finite_element_1s_21_cosserat_rotation.h:131
finite element for planar beam using Cosserat model : rotation element for bending and torsion ...
Definition: finite_element_1s_21_cosserat_rotation.h:48
fmatvec::Mat computeJXqG(const fmatvec::Vec &qG, double x)
compute JACOBIAN of contact description in global coordinates
Definition: finite_element_1s_21_cosserat_rotation.cc:68
double l0
length of finite element
Definition: finite_element_1s_21_cosserat_rotation.h:104
virtual double computeGravitationalEnergy(const fmatvec::Vec &qG)
compute gravitational energy
Definition: finite_element_1s_21_cosserat_rotation.h:158
virtual const fmatvec::SymMat & getM() const
Definition: finite_element_1s_21_cosserat_rotation.h:149
virtual void computedhdz(const fmatvec::Vec &qG, const fmatvec::Vec &qGt)
compute Jacobian for implicit integration
Definition: finite_element_1s_21_cosserat_rotation.h:156
virtual const fmatvec::SqrMat & getdhdq() const
Definition: finite_element_1s_21_cosserat_rotation.h:151
virtual ~FiniteElement1s21CosseratRotation()
destructor
Definition: finite_element_1s_21_cosserat_rotation.cc:33
virtual const fmatvec::SqrMat & getdhdu() const
Definition: finite_element_1s_21_cosserat_rotation.h:152
fmatvec::SqrMat dhdq
matrices for implicit integration
Definition: finite_element_1s_21_cosserat_rotation.h:141
virtual const fmatvec::Vec & geth() const
Definition: finite_element_1s_21_cosserat_rotation.h:150
fmatvec::Vec X
state at Lagrangian coordinate
Definition: finite_element_1s_21_cosserat_rotation.h:136
virtual double computeElasticEnergy(const fmatvec::Vec &qG)
compute elastic energy
Definition: finite_element_1s_21_cosserat_rotation.cc:47
virtual double computeKineticEnergy(const fmatvec::Vec &qG, const fmatvec::Vec &qGt)
compute kinetic energy
Definition: finite_element_1s_21_cosserat_rotation.h:157
discretization interface for flexible systems
Definition: discretization_interface.h:36
double I1
geometrical moment of inertia
Definition: finite_element_1s_21_cosserat_rotation.h:119
double G
shear modulus
Definition: finite_element_1s_21_cosserat_rotation.h:114
virtual int getqSize() const
Definition: finite_element_1s_21_cosserat_rotation.h:153
double k10
predefined bending k10: precurvature in t-b-plane k20: precurvature in t-n-plane
Definition: finite_element_1s_21_cosserat_rotation.h:126
double E
Young's modulus.
Definition: finite_element_1s_21_cosserat_rotation.h:109
virtual void computeM(const fmatvec::Vec &qG)
compute mass matrix
Definition: finite_element_1s_21_cosserat_rotation.h:155

Impressum / Disclaimer / Datenschutz Generated by doxygen 1.8.5 Valid HTML