All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
finite_element_1s_33_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: thorsten.schindler@mytum.de
18  */
19 
20 #ifndef _FINITE_ELEMENT_1S_33_COSSERAT_ROTATION_H_
21 #define _FINITE_ELEMENT_1S_33_COSSERAT_ROTATION_H_
22 
23 #include "mbsimFlexibleBody/discretization_interface.h"
24 #include "mbsimFlexibleBody/pointer.h"
25 #include "fmatvec/fmatvec.h"
26 
27 namespace MBSimFlexibleBody {
28 
47  public:
48 
59  FiniteElement1s33CosseratRotation(double l0_,double E_,double G_,double I1_,double I2_,double I0_,CardanPtr ag_);
60 
65 
66  /* INHERITED INTERFACE OF DISCRETIZATIONINTERFACE */
67  virtual const fmatvec::SymMat& getM() const;
68  virtual const fmatvec::Vec& geth() const { return h; }
69  virtual const fmatvec::SqrMat& getdhdq() const { return dhdq; }
70  virtual const fmatvec::SqrMat& getdhdu() const { return dhdu; }
71  virtual int getqSize() const { return 9; }
72  virtual int getuSize() const { return 9; }
73 
74  virtual void computeM(const fmatvec::Vec& qG);
75  virtual void computeh(const fmatvec::Vec& qG, const fmatvec::Vec& qGt);
76  virtual void computedhdz(const fmatvec::Vec& qG, const fmatvec::Vec& qGt);
77  virtual double computeKineticEnergy(const fmatvec::Vec& qG, const fmatvec::Vec& qGt);
78  virtual double computeGravitationalEnergy(const fmatvec::Vec& qG);
79  virtual double computeElasticEnergy(const fmatvec::Vec& qG);
80 
81  virtual fmatvec::Vec3 getPosition(const fmatvec::Vec& qElement, double s);
82  virtual fmatvec::SqrMat3 getOrientation(const fmatvec::Vec& qElement, double s);
83  virtual fmatvec::Vec3 getVelocity(const fmatvec::Vec& qElement, const fmatvec::Vec& qpElement, double s);
84  virtual fmatvec::Vec3 getAngularVelocity(const fmatvec::Vec& qElement, const fmatvec::Vec& qpElement, double s);
85  virtual fmatvec::Mat computeJacobianOfMotion(const fmatvec::Vec& qG, double s) { return computeJXqG(qG,s); }
86 
87  /* GETTER / SETTER */
88  void setCurlRadius(double R1,double R2);
89  double getl0() const { return l0; }
90 
96  fmatvec::Mat computeJXqG(const fmatvec::Vec& qG,double x);
97 
98  private:
102  double l0;
103 
107  double E;
108 
112  double G;
113 
117  double I1, I2, I0;
118 
124  double k10, k20;
125 
130 
135 
140 
144  CardanPtr ag;
145 
146  FiniteElement1s33CosseratRotation(); // standard constructor
148  FiniteElement1s33CosseratRotation& operator=(const FiniteElement1s33CosseratRotation&); // assignment operator
149  };
150 
151 }
152 
153 #endif /* _FINITE_ELEMENT_1S_33_COSSERAT_ROTATION_H_ */
virtual int getqSize() const
Definition: finite_element_1s_33_cosserat_rotation.h:71
fmatvec::Vec X
state at Lagrangian coordinate
Definition: finite_element_1s_33_cosserat_rotation.h:134
double E
Young's modulus.
Definition: finite_element_1s_33_cosserat_rotation.h:107
virtual void computeM(const fmatvec::Vec &qG)
compute mass matrix
Definition: finite_element_1s_33_cosserat_rotation.cc:107
double G
shear modulus
Definition: finite_element_1s_33_cosserat_rotation.h:112
virtual ~FiniteElement1s33CosseratRotation()
destructor
Definition: finite_element_1s_33_cosserat_rotation.cc:34
virtual void computedhdz(const fmatvec::Vec &qG, const fmatvec::Vec &qGt)
compute Jacobian for implicit integration
Definition: finite_element_1s_33_cosserat_rotation.cc:111
virtual void computeh(const fmatvec::Vec &qG, const fmatvec::Vec &qGt)
compute smooth right hand side
Definition: finite_element_1s_33_cosserat_rotation.cc:41
double k10
predefined bending k10: precurvature in t-b-plane k20: precurvature in t-n-plane
Definition: finite_element_1s_33_cosserat_rotation.h:124
virtual double computeGravitationalEnergy(const fmatvec::Vec &qG)
compute gravitational energy
Definition: finite_element_1s_33_cosserat_rotation.cc:119
double I1
geometrical moment of inertia
Definition: finite_element_1s_33_cosserat_rotation.h:117
CardanPtr ag
Cardan-object.
Definition: finite_element_1s_33_cosserat_rotation.h:144
double l0
length of finite element
Definition: finite_element_1s_33_cosserat_rotation.h:102
virtual int getuSize() const
Definition: finite_element_1s_33_cosserat_rotation.h:72
finite element for spatial beam using Cosserat model : rotation element for bending and torsion ...
Definition: finite_element_1s_33_cosserat_rotation.h:46
fmatvec::SqrMat dhdq
matrices for implicit integration
Definition: finite_element_1s_33_cosserat_rotation.h:139
fmatvec::Mat computeJXqG(const fmatvec::Vec &qG, double x)
compute JACOBIAN of contact description in global coordinates
Definition: finite_element_1s_33_cosserat_rotation.cc:139
virtual const fmatvec::Vec & geth() const
Definition: finite_element_1s_33_cosserat_rotation.h:68
discretization interface for flexible systems
Definition: discretization_interface.h:36
virtual double computeElasticEnergy(const fmatvec::Vec &qG)
compute elastic energy
Definition: finite_element_1s_33_cosserat_rotation.cc:88
virtual const fmatvec::SymMat & getM() const
Definition: finite_element_1s_33_cosserat_rotation.cc:103
virtual double computeKineticEnergy(const fmatvec::Vec &qG, const fmatvec::Vec &qGt)
compute kinetic energy
Definition: finite_element_1s_33_cosserat_rotation.cc:115
virtual const fmatvec::SqrMat & getdhdu() const
Definition: finite_element_1s_33_cosserat_rotation.h:70
virtual const fmatvec::SqrMat & getdhdq() const
Definition: finite_element_1s_33_cosserat_rotation.h:69
fmatvec::Vec h
global system description
Definition: finite_element_1s_33_cosserat_rotation.h:129

Impressum / Disclaimer / Datenschutz Generated by doxygen 1.8.5 Valid HTML