All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
finite_element_1s_21_cosserat_translation.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: thorsten.schindler@mytum.de
18  */
19 
20 #ifndef _FINITE_ELEMENT_1S_21_COSSERAT_TRANSLATION_H_
21 #define _FINITE_ELEMENT_1S_21_COSSERAT_TRANSLATION_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  FiniteElement1s21CosseratTranslation(double l0_,double rho_,double A_,double E_,double G_,double I1_,const fmatvec::Vec& g_);
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 setMaterialDamping(double cEps0D_,double cEps1D_);
91  void setShearCorrectionFactors(double sigma1_);
92  double getl0() const;
93 
100  const fmatvec::Vec& computeStateTranslation(const fmatvec::Vec& qG, const fmatvec::Vec& qGt, double s);
101 
107  fmatvec::Mat computeJXqG(const fmatvec::Vec& qG,double x);
108 
112  void initM();
113 
114  private:
118  double l0;
119 
123  double rho;
124 
128  double A;
129 
133  double E;
134 
138  double G;
139 
143  double I1;
144 
149 
153  double cEps0D, cEps1D;
154 
158  double sigma1;
159 
164  fmatvec::Vec h;
165 
170 
175 
179  CardanPtr ag;
180 
181  FiniteElement1s21CosseratTranslation(); // standard constructor
183  FiniteElement1s21CosseratTranslation& operator=(const FiniteElement1s21CosseratTranslation&); // assignment operator
184  };
185 
187  inline const fmatvec::Vec& FiniteElement1s21CosseratTranslation::geth() const { return h; }
189  inline const fmatvec::SqrMat& FiniteElement1s21CosseratTranslation::getdhdu() const { return dhdu; }
190  inline int FiniteElement1s21CosseratTranslation::getqSize() const { return 5; }
191  inline int FiniteElement1s21CosseratTranslation::getuSize() const { return 5; }
192  inline void FiniteElement1s21CosseratTranslation::computedhdz(const fmatvec::Vec& qG, const fmatvec::Vec& qGt) { throw MBSim::MBSimError("(FiniteElement1s21CosseratTranslation::computedhdz): Not implemented"); }
193  inline void FiniteElement1s21CosseratTranslation::setShearCorrectionFactors(double sigma1_) { sigma1 = sigma1_; }
194  inline double FiniteElement1s21CosseratTranslation::getl0() const { return l0; }
195 
196 }
197 
198 #endif /* _FINITE_ELEMENT_1S_21_COSSERAT_TRANSLATION_H_ */
CardanPtr ag
Cardan-object.
Definition: finite_element_1s_21_cosserat_translation.h:179
virtual double computeKineticEnergy(const fmatvec::Vec &qG, const fmatvec::Vec &qGt)
compute kinetic energy
Definition: finite_element_1s_21_cosserat_translation.cc:127
virtual const fmatvec::SqrMat & getdhdu() const
Definition: finite_element_1s_21_cosserat_translation.h:189
double rho
density
Definition: finite_element_1s_21_cosserat_translation.h:123
virtual double computeGravitationalEnergy(const fmatvec::Vec &qG)
compute gravitational energy
Definition: finite_element_1s_21_cosserat_translation.cc:139
double cEps0D
strain damping
Definition: finite_element_1s_21_cosserat_translation.h:153
virtual const fmatvec::Vec & geth() const
Definition: finite_element_1s_21_cosserat_translation.h:187
double A
cross sectional area
Definition: finite_element_1s_21_cosserat_translation.h:128
virtual int getqSize() const
Definition: finite_element_1s_21_cosserat_translation.h:190
double l0
length of finite element
Definition: finite_element_1s_21_cosserat_translation.h:118
fmatvec::Mat computeJXqG(const fmatvec::Vec &qG, double x)
compute JACOBIAN of contact description in global coordinates
Definition: finite_element_1s_21_cosserat_translation.cc:180
fmatvec::Vec g
gravitation
Definition: finite_element_1s_21_cosserat_translation.h:148
finite translation element for planar beam using Cosserat model
Definition: finite_element_1s_21_cosserat_translation.h:48
virtual const fmatvec::SymMat & getM() const
Definition: finite_element_1s_21_cosserat_translation.h:186
virtual const fmatvec::SqrMat & getdhdq() const
Definition: finite_element_1s_21_cosserat_translation.h:188
double I1
geometrical moment of inertia
Definition: finite_element_1s_21_cosserat_translation.h:143
virtual int getuSize() const
Definition: finite_element_1s_21_cosserat_translation.h:191
virtual void computedhdz(const fmatvec::Vec &qG, const fmatvec::Vec &qGt)
compute Jacobian for implicit integration
Definition: finite_element_1s_21_cosserat_translation.h:192
double sigma1
shear correction factors
Definition: finite_element_1s_21_cosserat_translation.h:158
void initM()
initialize translational part of mass matrix
Definition: finite_element_1s_21_cosserat_translation.cc:184
double G
shear modulus
Definition: finite_element_1s_21_cosserat_translation.h:138
fmatvec::Vec X
state at Lagrangian coordinate
Definition: finite_element_1s_21_cosserat_translation.h:174
virtual ~FiniteElement1s21CosseratTranslation()
destructor
Definition: finite_element_1s_21_cosserat_translation.cc:33
virtual void computeM(const fmatvec::Vec &qG)
compute mass matrix
Definition: finite_element_1s_21_cosserat_translation.cc:40
virtual double computeElasticEnergy(const fmatvec::Vec &qG)
compute elastic energy
Definition: finite_element_1s_21_cosserat_translation.cc:143
discretization interface for flexible systems
Definition: discretization_interface.h:36
virtual void computeh(const fmatvec::Vec &qG, const fmatvec::Vec &qGt)
compute smooth right hand side
Definition: finite_element_1s_21_cosserat_translation.cc:43
double E
Young's modulus.
Definition: finite_element_1s_21_cosserat_translation.h:133
fmatvec::SqrMat dhdq
matrices for implicit integration
Definition: finite_element_1s_21_cosserat_translation.h:169
fmatvec::SymMat M
global system description
Definition: finite_element_1s_21_cosserat_translation.h:163
const fmatvec::Vec & computeStateTranslation(const fmatvec::Vec &qG, const fmatvec::Vec &qGt, double s)
compute state of finite element
Definition: finite_element_1s_21_cosserat_translation.cc:154

Impressum / Disclaimer / Datenschutz Generated by doxygen 1.8.5 Valid HTML