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