00001 // suSIMM.h 00002 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00003 // AUTHORS: Frank C. Anderson, Darryl G. Thelen 00004 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00005 #ifndef __suSIMM_h__ 00006 #define __suSIMM_h__ 00007 00008 00009 //============================================================================ 00010 // INCLUDE 00011 //============================================================================ 00012 #include "rdSDFastDLL.h" 00013 #include <rdModel.h> 00014 #include <rdSDFast.h> 00015 00016 00017 //============================================================================= 00018 //============================================================================= 00031 class RDSDFAST_API suSIMM : public rdSDFast 00032 { 00033 00034 //============================================================================= 00035 // DATA 00036 //============================================================================= 00037 protected: 00038 00039 //============================================================================= 00040 // METHODS 00041 //============================================================================= 00042 //-------------------------------------------------------------------------- 00043 // CONSTRUCTION 00044 //-------------------------------------------------------------------------- 00045 public: 00046 suSIMM(const char *aFileName); 00047 virtual ~suSIMM(); 00048 void constructNames(); 00049 00050 //-------------------------------------------------------------------------- 00051 // CONTACT 00052 //-------------------------------------------------------------------------- 00053 virtual void computeContact(); 00054 virtual void applyContactForces(); 00055 00056 //-------------------------------------------------------------------------- 00057 // ACTUATION 00058 //-------------------------------------------------------------------------- 00059 virtual void computeActuation(); 00060 virtual void applyActuatorForce(int aID); 00061 virtual void applyActuatorForces(); 00062 00063 //-------------------------------------------------------------------------- 00064 // DERIVATIVES 00065 //-------------------------------------------------------------------------- 00066 virtual int 00067 deriv(double t,double *xt,double *y,double *dy) = 0; 00068 virtual int 00069 deriv(double t,double *xt,double *y,double *dqdt,double *dudt) = 0; 00070 00071 //-------------------------------------------------------------------------- 00072 // CALLBACKS 00073 //-------------------------------------------------------------------------- 00074 virtual void 00075 integBeginCallback(int aStep,double aDT,double aT,double *aX,double *aY, 00076 void *aClientData=NULL); 00077 virtual void 00078 integStepCallback(double *aXPrev,double *aYPrev,int aStep,double aDT, 00079 double aT,double *aX,double *aY, 00080 void *aClientData=NULL); 00081 virtual void 00082 integEndCallback(int aStep,double aDT,double aT,double *aX,double *aY, 00083 void *aClientData=NULL); 00084 00085 //============================================================================= 00086 }; // END of class suSIMM 00087 //============================================================================= 00088 //============================================================================= 00089 00090 #endif // __suSIMM_h__ 00091 00092
1.3