00001
00002
00003
00004
00005 #ifndef __suKinematics_h__
00006 #define __suKinematics_h__
00007
00008
00009
00010
00011
00012 #include <rdMath.h>
00013 #include <rdTools.h>
00014 #include <rdStorage.h>
00015 #include <rdModel.h>
00016 #include <rdAnalysis.h>
00017 #include "suAnalysesDLL.h"
00018
00019
00020
00021
00029 class SUANALYSES_API suKinematics : public rdAnalysis
00030 {
00031
00032
00033
00034 private:
00035
00036 protected:
00037 double *_y;
00038 double *_dy;
00039 rdStorage *_pStore;
00040 rdStorage *_vStore;
00041 rdStorage *_aStore;
00042
00043
00044
00045
00046 public:
00047 suKinematics(rdModel *aModel);
00048 virtual ~suKinematics();
00049 private:
00050 void constructDescription();
00051 void constructColumnLabels();
00052 void allocateStorage();
00053 void deleteStorage();
00054
00055 public:
00056
00057
00058
00059
00060 void setStorageCapacityIncrements(int aIncrement);
00061 rdStorage* getAccelerationStorage();
00062 rdStorage* getVelocityStorage();
00063 rdStorage* getPositionStorage();
00064
00065
00066
00067
00068 virtual int
00069 begin(int aStep,double aDT,double aT,double *aX,double *aY,
00070 void *aClientData=NULL);
00071 virtual int
00072 analyze(double *aXPrev,double *aYPrev,
00073 int aStep,double aDT,double aT,double *aX,double *aY,
00074 void *aClientData=NULL);
00075 virtual int
00076 end(int aStep,double aDT,double aT,double *aX,double *aY,
00077 void *aClientData=NULL);
00078 protected:
00079 virtual int
00080 record(double aT,double *aX,double *aY);
00081
00082
00083
00084
00085 public:
00086 virtual int
00087 printResults(char *aBaseName,char *aDir=NULL,double aDT=-1.0,
00088 char *aExtension=".sto");
00089
00090
00091 };
00092
00093
00094
00095
00096 #endif // #ifndef __suKinematics_h__