Program listing for file mechanics/src/joints/PrismaticJointR.hpp

Program listing for file mechanics/src/joints/PrismaticJointR.hpp#

  1#ifndef PrismaticJointRELATION_H
  2#define PrismaticJointRELATION_H
  3
  4#include <MechanicsFwd.hpp>
  5#include <SiconosFwd.hpp>
  6#include <NewtonEulerJointR.hpp>
  7
  8
  9class PrismaticJointR : public NewtonEulerJointR
 10{
 11protected:
 12
 13  ACCEPT_SERIALIZATION(PrismaticJointR);
 14
 15
 16  SP::SiconosVector _axis0;
 17
 18
 19  SP::SiconosVector _V1;
 20
 21
 22  SP::SiconosVector _V2;
 23
 24
 25  double _V1x;
 26  double _V1y;
 27  double _V1z;
 28  double _V2x;
 29  double _V2y;
 30  double _V2z;
 31
 32  double _G10G20d1x;
 33  double _G10G20d1y;
 34  double _G10G20d1z;
 35
 36  double _cq2q101;
 37  double _cq2q102;
 38  double _cq2q103;
 39  double _cq2q104;
 40
 41
 42  virtual void _normalDoF(SiconosVector& ans, const BlockVector& q0, int axis,
 43                          bool absoluteRef=true);
 44
 45public:
 46
 47
 48  PrismaticJointR();
 49
 50
 51  PrismaticJointR(SP::SiconosVector axis, bool absoluteRef,
 52                  SP::NewtonEulerDS d1 = SP::NewtonEulerDS(),
 53                  SP::NewtonEulerDS d2 = SP::NewtonEulerDS());
 54
 55
 56  virtual void setBasePositions(SP::SiconosVector q1,
 57                                SP::SiconosVector q2 = SP::SiconosVector());
 58
 59  void displayInitialPosition();
 60
 61  void computeV1V2FromAxis();
 62
 63
 64  virtual void computehDoF(double time, const BlockVector& q0, SiconosVector& y,
 65                           unsigned int axis);
 66
 67
 68  virtual void computeJachqDoF(double time, Interaction& inter,
 69                               SP::BlockVector q0, SimpleMatrix& jachq,
 70                               unsigned int axis);
 71
 72
 73  virtual ~PrismaticJointR() {};
 74
 75  virtual void computeJachq(double time, Interaction& inter, SP::BlockVector q0 );
 76
 77
 78  virtual void computeh(double time, const BlockVector& q0, SiconosVector& y);
 79
 80  virtual void computeDotJachq(double time, const BlockVector& workQ, BlockVector& workZ, const BlockVector& workQdot);
 81
 82
 83  double H1(double X1, double Y1, double Z1, double q10, double q11, double q12, double q13,
 84            double X2, double Y2, double Z2, double q20, double q21, double q22, double q23);
 85
 86
 87  double H2(double X1, double Y1, double Z1, double q10, double q11, double q12, double q13,
 88            double X2, double Y2, double Z2, double q20, double q21, double q22, double q23);
 89
 90
 91  double H3(double X1, double Y1, double Z1, double q10, double q11, double q12, double q13,
 92            double X2, double Y2, double Z2, double q20, double q21, double q22, double q23);
 93
 94  double H5(double X1, double Y1, double Z1, double q10, double q11, double q12, double q13,
 95            double X2, double Y2, double Z2, double q20, double q21, double q22, double q23);
 96
 97
 98  double H4(double X1, double Y1, double Z1, double q10, double q11, double q12, double q13,
 99            double X2, double Y2, double Z2, double q20, double q21, double q22, double q23);
100
101  void Jd1d2(double X1, double Y1, double Z1, double q10, double q11, double q12, double q13,
102             double X2, double Y2, double Z2, double q20, double q21, double q22, double q23);
103
104  void Jd1(double X1, double Y1, double Z1, double q10, double q11, double q12, double q13);
105
106  void DotJd1d2(double Xdot1, double Ydot1, double Zdot1, double qdot10, double qdot11, double qdot12, double qdot13,
107                double Xdot2, double Ydot2, double Zdot2, double qdot20, double qdot21, double qdot22, double qdot23);
108
109  void DotJd2(double Xdot1, double Ydot1, double Zdot1, double qdot10, double qdot11, double qdot12, double qdot13,
110              double X2, double Y2, double Z2, double qdot20, double qdot21, double qdot22, double qdot23);
111
112
113
114  virtual unsigned int numberOfConstraints() { return 5; }
115
116
117  virtual unsigned int numberOfDoF() { return 2; }
118
119
120  virtual DoF_Type typeOfDoF(unsigned int axis) {
121    if (axis==0) return DOF_TYPE_LINEAR;
122    else return DOF_TYPE_INVALID;
123  };
124};
125#endif