All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
trafo33RCM.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 TRAFO33RCM_H_
21 #define TRAFO33RCM_H_
22 
23 #include <mbsim/functions/function.h>
24 #include "mbsimFlexibleBody/pointer.h"
25 
26 namespace MBSimFlexibleBody {
27 
28  /***
29  * \brief computation of FiniteElement1s33RCM position coordinates (cp-angles and bending)
30  * \author Thorsten Schindler
31  * \date 2009-04-24 initial commit (Thorsten Schindler)
32  */
33  class PositionFunction : public MBSim::Function<fmatvec::Vec(fmatvec::Vec)> {
34  public:
43  PositionFunction(RevCardanPtr angle_,double l0_,const fmatvec::Vec& pL_,const fmatvec::Vec& pR_,
44  double cL1_,double cR1_,double cL2_,double cR2_,const fmatvec::RowVec& rRrLmH_);
45 
49  virtual ~PositionFunction();
50 
51  /* INHERITED INTERFACE */
52  fmatvec::Vec operator()(const fmatvec::Vec& pos);
53  /***************************************************/
54 
55  private:
59  RevCardanPtr angle;
60 
64  double l0;
65 
70 
74  double cL1, cR1, cL2, cR2;
75 
80  };
81 
87  class PositionJacobian : public MBSim::Function<fmatvec::SqrMat(fmatvec::Vec)> {
88  public:
96  PositionJacobian(RevCardanPtr angle_,double l0_,const fmatvec::RowVec &rRrLmH_,const fmatvec::Mat &pSbE_);
97 
101  virtual ~PositionJacobian();
102 
103  /* INHERITED INTERFACE */
104  fmatvec::SqrMat operator()(const fmatvec::Vec &pos);
105  /***************************************************/
106 
107  private:
111  RevCardanPtr angle;
112 
116  double l0;
117 
122 
127  };
128  /*******************************************************************/
129 
135  class Trafo33RCM {
136  public:
140  Trafo33RCM(RevCardanPtr angle_,double l0_);
141 
145  virtual ~Trafo33RCM();
146 
147  /* GETTER / SETTER */
148  const fmatvec::SqrMat& getJIG() const;
149  const fmatvec::SqrMat& getJIGt() const;
150  const fmatvec::Vec& getpS() const;
151  const fmatvec::Vec& getpSt() const;
152  const fmatvec::Vec& gettS() const;
153  const fmatvec::Vec& getnS() const;
154  const fmatvec::Vec& getbS() const;
155  const fmatvec::RowVec& getnSH() const;
156  const fmatvec::RowVec& getbSH() const;
157  const fmatvec::Vec& getntilS() const;
158  const fmatvec::Vec& getbtilS() const;
159  const fmatvec::RowVec& getntilSH() const;
160  const fmatvec::RowVec& getbtilSH() const;
161  const fmatvec::Vec& gettSt() const;
162  const fmatvec::Vec& getnSt() const;
163  const fmatvec::Vec& getbSt() const;
164  const fmatvec::RowVec& gettStH() const;
165  const fmatvec::RowVec& getnStH() const;
166  const fmatvec::RowVec& getbStH() const;
167  const fmatvec::RowVec& getntilStH() const;
168  const fmatvec::RowVec& getbtilStH() const;
169  const fmatvec::SqrMat& gettSpS() const;
170  const fmatvec::SqrMat& getnSpS() const;
171  const fmatvec::SqrMat& getbSpS() const;
172  const fmatvec::SqrMat& getntilSpS() const;
173  const fmatvec::SqrMat& getbtilSpS() const;
174  const fmatvec::SqrMat& gettSpSt() const;
175  const fmatvec::SqrMat& getnSpSt() const;
176  const fmatvec::SqrMat& getbSpSt() const;
177  const fmatvec::SqrMat& getntilSpSt() const;
178  const fmatvec::SqrMat& getbtilSpSt() const;
179 
180  const fmatvec::Vec& getqIt() const;
181  const double& getepstil() const;
182  const double& getepstilt() const;
183  const fmatvec::Vec& getrS() const;
184  const fmatvec::Vec& getrSt() const;
185  const double& getk0() const;
186  const double& getk0t() const;
187  const fmatvec::Vec& getbe() const;
188  const fmatvec::Vec& getbet() const;
189 
190  const double& getxintil() const;
191  const double& getxibtil() const;
192  const double& getetantil() const;
193  const double& getetabtil() const;
194  const double& getxintilt() const;
195  const double& getxibtilt() const;
196  const double& getetantilt() const;
197  const double& getetabtilt() const;
198  const fmatvec::SqrMat& getV() const;
199  /***************************************************/
200 
205  void computeqI(const fmatvec::Vec& qG);
206 
211  void computeJIG(const fmatvec::Vec& qG);
212 
218  void computezI(const fmatvec::Vec& qG,const fmatvec::Vec& qGt);
219 
225  void computeCOSYt(const fmatvec::Vec& qG,const fmatvec::Vec& qGt);
226 
232  void computeTrafo(const fmatvec::Vec& qG,const fmatvec::Vec& qGt);
233 
234  private:
238  RevCardanPtr angle;
239 
243  double l0, l0h2, l0h3, l0h4, l0h5;
244  double xstar, xstarh2, xstarh3;
245 
249  double epstil, k0;
250  fmatvec::Vec rS, pS;
251 
256  fmatvec::RowVec rRrLmH;
257 
262 
266  fmatvec::Vec tS, nS, bS, ntilS, btilS;
267  fmatvec::RowVec nSH, bSH, ntilSH, btilSH;
268  fmatvec::SqrMat tSpS, nSpS, bSpS, ntilSpS, btilSpS;
269  double xibtil, xintil, etabtil, etantil;
270 
275 
280 
284  fmatvec::Mat drRdrLp, drRdrLm, pSbE;
285 
289  fmatvec::Mat SMRHS, nSbE, bSbE, ntilSbE, btilSbE;
290  fmatvec::RowVec xibtilbE, xintilbE, etabtilbE, etantilbE;
291 
295  fmatvec::Mat beqG, tSqG, nSqG, bSqG, ntilSqG, btilSqG;
296  fmatvec::RowVec xintilqG, xibtilqG, etantilqG, etabtilqG;
297 
302 
306  double k0t, epstilt;
307  fmatvec::Vec qIt, rSt, bet, pSt, tSt, nSt, bSt;
308  fmatvec::RowVec tStH, nStH, bStH, ntilStH, btilStH;
309  fmatvec::SqrMat tSpSt, nSpSt, bSpSt, ntilSpSt, btilSpSt;
310  double xibtilt, xintilt, etabtilt, etantilt;
311 
316  void computeprelim(const fmatvec::Vec& qG);
317 
323 
328  void computebe(const fmatvec::Vec& qG);
329 
333  void computeCOSY();
334 
339  void computerSepstk0(const fmatvec::Vec& qG);
340 
344  void computedrRdrL();
345 
349  void computeV();
350 
354  void computebeqG();
355 
359  void computeCOSYqG();
360 
364  void computeCOSYt();
365 
370  void computeJIGt(const fmatvec::Vec& qGt);
371  };
372 
373  inline const fmatvec::SqrMat& Trafo33RCM::getJIG() const { return JIG; }
374  inline const fmatvec::SqrMat& Trafo33RCM::getJIGt() const { return JIGt; }
375  inline const fmatvec::Vec& Trafo33RCM::getpS() const { return pS; }
376  inline const fmatvec::Vec& Trafo33RCM::getpSt() const { return pSt; }
377  inline const fmatvec::Vec& Trafo33RCM::gettS() const { return tS; }
378  inline const fmatvec::Vec& Trafo33RCM::getnS() const { return nS; }
379  inline const fmatvec::Vec& Trafo33RCM::getbS() const { return bS; }
380  inline const fmatvec::RowVec& Trafo33RCM::getnSH() const { return nSH; }
381  inline const fmatvec::RowVec& Trafo33RCM::getbSH() const { return bSH; }
382  inline const fmatvec::Vec& Trafo33RCM::getntilS() const { return ntilS; }
383  inline const fmatvec::Vec& Trafo33RCM::getbtilS() const { return btilS; }
384  inline const fmatvec::RowVec& Trafo33RCM::getntilSH() const { return ntilSH; }
385  inline const fmatvec::RowVec& Trafo33RCM::getbtilSH() const { return btilSH; }
386  inline const fmatvec::Vec& Trafo33RCM::gettSt() const { return tSt; }
387  inline const fmatvec::Vec& Trafo33RCM::getnSt() const { return nSt; }
388  inline const fmatvec::Vec& Trafo33RCM::getbSt() const { return bSt; }
389  inline const fmatvec::RowVec& Trafo33RCM::gettStH() const { return tStH; }
390  inline const fmatvec::RowVec& Trafo33RCM::getnStH() const { return nStH; }
391  inline const fmatvec::RowVec& Trafo33RCM::getbStH() const { return bStH; }
392  inline const fmatvec::RowVec& Trafo33RCM::getntilStH() const { return ntilStH; }
393  inline const fmatvec::RowVec& Trafo33RCM::getbtilStH() const { return btilStH; }
394  inline const fmatvec::SqrMat& Trafo33RCM::gettSpS() const { return tSpS; }
395  inline const fmatvec::SqrMat& Trafo33RCM::getnSpS() const { return nSpS; }
396  inline const fmatvec::SqrMat& Trafo33RCM::getbSpS() const { return bSpS; }
397  inline const fmatvec::SqrMat& Trafo33RCM::getntilSpS() const { return ntilSpS; }
398  inline const fmatvec::SqrMat& Trafo33RCM::getbtilSpS() const { return btilSpS; }
399  inline const fmatvec::SqrMat& Trafo33RCM::gettSpSt() const { return tSpSt; }
400  inline const fmatvec::SqrMat& Trafo33RCM::getnSpSt() const { return nSpSt; }
401  inline const fmatvec::SqrMat& Trafo33RCM::getbSpSt() const { return bSpSt; }
402  inline const fmatvec::SqrMat& Trafo33RCM::getntilSpSt() const { return ntilSpSt; }
403  inline const fmatvec::SqrMat& Trafo33RCM::getbtilSpSt() const { return btilSpSt; }
404  inline const fmatvec::Vec& Trafo33RCM::getqIt() const { return qIt; }
405  inline const double& Trafo33RCM::getepstil() const { return epstil; }
406  inline const double& Trafo33RCM::getepstilt() const { return epstilt; }
407  inline const fmatvec::Vec& Trafo33RCM::getrS() const { return rS; }
408  inline const fmatvec::Vec& Trafo33RCM::getrSt() const { return rSt; }
409  inline const double& Trafo33RCM::getk0() const { return k0; }
410  inline const double& Trafo33RCM::getk0t() const { return k0t; }
411  inline const fmatvec::Vec& Trafo33RCM::getbe() const { return be; }
412  inline const fmatvec::Vec& Trafo33RCM::getbet() const { return bet; }
413  inline const double& Trafo33RCM::getxintil() const { return xintil; }
414  inline const double& Trafo33RCM::getxibtil() const { return xibtil; }
415  inline const double& Trafo33RCM::getetantil() const { return etantil; }
416  inline const double& Trafo33RCM::getetabtil() const { return etabtil; }
417  inline const double& Trafo33RCM::getxintilt() const { return xintilt; }
418  inline const double& Trafo33RCM::getxibtilt() const { return xibtilt; }
419  inline const double& Trafo33RCM::getetantilt() const { return etantilt; }
420  inline const double& Trafo33RCM::getetabtilt() const { return etabtilt; }
421  inline const fmatvec::SqrMat& Trafo33RCM::getV() const { return V; }
422  /*******************************************************************/
423 
424 }
425 
426 #endif /*TRAFO33RCM_H_*/
427 
computation of FiniteElement1s33RCM position JACOBIAN (cp-angles and bending)
Definition: trafo33RCM.h:87
void computezI(const fmatvec::Vec &qG, const fmatvec::Vec &qGt)
compute the internal state
Definition: trafo33RCM.cc:393
virtual ~Trafo33RCM()
destructor
Definition: trafo33RCM.cc:175
fmatvec::Vec tS
COSY definitions.
Definition: trafo33RCM.h:266
double cL1
global bending parameters
Definition: trafo33RCM.h:74
void computeJIG(const fmatvec::Vec &qG)
compute the Jacobian of the trafo
Definition: trafo33RCM.cc:371
fmatvec::Mat pSbE
differentiated centre angles with respect to bending coordinates
Definition: trafo33RCM.h:126
void computebe(const fmatvec::Vec &qG)
compute the angle and bending positions
Definition: trafo33RCM.cc:226
fmatvec::RowVec rRrLmH
transpose of difference of right and left beam position
Definition: trafo33RCM.h:121
fmatvec::Mat SMRHS_Jac
system matrix and right hand side for computebe()
Definition: trafo33RCM.h:274
RevCardanPtr angle
reversed Cardan-Object
Definition: trafo33RCM.h:111
void computerSepstk0(const fmatvec::Vec &qG)
compute the CP, prolongation and torsion
Definition: trafo33RCM.cc:273
void computeCOSYqG()
compute the derivative of COSY with respect to qG
Definition: trafo33RCM.cc:356
void computeCOSYt()
compute the derivative of COSY with respect to time
fmatvec::Vec be
bending coordinates
Definition: trafo33RCM.h:261
Trafo33RCM(RevCardanPtr angle_, double l0_)
constructor
Definition: trafo33RCM.cc:126
void computebeqG()
compute the derivative of bE with respect to qG
Definition: trafo33RCM.cc:320
fmatvec::Mat drRdrLp
delta matrices for computebe()
Definition: trafo33RCM.h:284
virtual ~PositionFunction()
destructor
Definition: trafo33RCM.cc:36
fmatvec::RowVec rRrLmH
transpose of difference of right and left beam position
Definition: trafo33RCM.h:79
void computeJIGt(const fmatvec::Vec &qGt)
compute the derivative of JIG with respect to time
Definition: trafo33RCM.cc:431
fmatvec::Vec rRrLp
sum of right and left translational vector as well as transpose of the difference ...
Definition: trafo33RCM.h:255
virtual ~PositionJacobian()
destructor
Definition: trafo33RCM.cc:69
RevCardanPtr angle
reversed Cardan-Object
Definition: trafo33RCM.h:59
double l0
length of FiniteElement1s33RCM and powers
Definition: trafo33RCM.h:243
double l0
length of FiniteElement1s33RCM
Definition: trafo33RCM.h:116
transformation of coordinates for FiniteElement1s33RCM
Definition: trafo33RCM.h:135
void computeqI(const fmatvec::Vec &qG)
compute the internal coordinates
Definition: trafo33RCM.cc:283
fmatvec::SqrMat V
derivative of coefficients of bending polynomials w with respect to bending coordinates ...
Definition: trafo33RCM.h:279
fmatvec::Vec pL
angles of COG of rigid left-right connection
Definition: trafo33RCM.h:69
fmatvec::SqrMat JIG
Jacobian and differentiated Jacobian.
Definition: trafo33RCM.h:301
PositionJacobian(RevCardanPtr angle_, double l0_, const fmatvec::RowVec &rRrLmH_, const fmatvec::Mat &pSbE_)
constructor
Definition: trafo33RCM.cc:67
double epstil
internal coordinates of the FiniteElement1s33RCM
Definition: trafo33RCM.h:249
void computeprelim(const fmatvec::Vec &qG)
computes preliminaries
Definition: trafo33RCM.cc:177
double l0
length of FiniteElement1s33RCM
Definition: trafo33RCM.h:64
fmatvec::Mat SMRHS
COSY definitions for computebe()
Definition: trafo33RCM.h:289
void computeTrafo(const fmatvec::Vec &qG, const fmatvec::Vec &qGt)
compute the internal coordinates and velocities as well as JIGt
Definition: trafo33RCM.cc:513
double k0t
derivative of k0, epstilt, qI, rS, be and COSY with respect to time
Definition: trafo33RCM.h:306
Definition: trafo33RCM.h:33
void computeCOSY()
compute the COSY
Definition: trafo33RCM.cc:248
RevCardanPtr angle
reversed Cardan-Object
Definition: trafo33RCM.h:238
void computedrRdrL()
compute delta matrix for right and left beam end
Definition: trafo33RCM.cc:290
fmatvec::Mat beqG
derivative of be and COSY with respect to qG
Definition: trafo33RCM.h:295
fmatvec::Vec computes0(const fmatvec::Vec &qG)
compute the initial value for computebe()
Definition: trafo33RCM.cc:181
PositionFunction(RevCardanPtr angle_, double l0_, const fmatvec::Vec &pL_, const fmatvec::Vec &pR_, double cL1_, double cR1_, double cL2_, double cR2_, const fmatvec::RowVec &rRrLmH_)
constructor
Definition: trafo33RCM.cc:34
void computeV()
compute the derivative of coefficients of bending polynomials w with respect to bending coordinates ...
Definition: trafo33RCM.cc:298

Impressum / Disclaimer / Datenschutz Generated by doxygen 1.8.5 Valid HTML