00001 00002 00008 /* 00009 */ 00011 00012 #ifndef __SSF_INTEGRATOR_H__ 00013 #define __SSF_INTEGRATOR_H__ 00014 00015 #include <Matrix.h> 00016 #include "Functor.h" 00017 #include "Time.h" 00018 #include <vector.h> 00019 using namespace std; 00020 namespace O_SESSAME { 00021 class Orbit; 00022 class Attitude; 00023 00025 00026 /* @{ */ 00027 00029 typedef Vector (*vectorFuncPtr)(const Vector& _vectorFuncPtrParams); 00030 00032 typedef Vector (*odeFunc)(const double& _time, const Vector& _state, const Matrix& _parameters, vectorFuncPtr _funcPtr); 00033 //typedef Vector(*odeFunc)(const double& _time, const Vector& _states, const Matrix& _params); 00034 00078 typedef Vector (*odeFunctor)(const ssfTime& _time, const Vector& _integratingState, Orbit *_pOrbit, Attitude *_pAttitude, const Matrix& _parameters, const Functor& _forceFunctorPtr); 00107 class Integrator 00108 { 00109 public: 00111 // virtual Matrix Integrate(const Vector& _propTime, odeFunc _FuncPtr, const Vector& _initialConditions, const Matrix& _constants, vectorFuncPtr _vectorFuncPtr) = 0; 00112 00113 00155 virtual Matrix Integrate(const vector<ssfTime>& _propTime, odeFunctor _FunctorPtr, const Vector& _initialConditions, Orbit* _pOrbit, Attitude* _pAttitude, const Matrix& _constants, const Functor& _functorPtr) = 0; 00156 protected: 00157 // Integrator() {}; 00158 }; 00159 00160 } // close namespace O_SESSAME 00161 00162 #endif 00163 // Do not change the comments below - they will be added automatically by CVS 00164 /***************************************************************************** 00165 * $Log: Integrator.h,v $ 00166 * Revision 1.9 2003/05/22 21:03:52 nilspace 00167 * Updated comments. 00168 * 00169 * Revision 1.8 2003/05/22 02:59:38 nilspace 00170 * Changed to pass pointers instead of references of Orbit & Attitude objects. 00171 * 00172 * Revision 1.7 2003/05/21 19:45:01 nilspace 00173 * Updated documentation. 00174 * 00175 * Revision 1.6 2003/05/20 17:44:21 nilspace 00176 * Updated comments. 00177 * 00178 * Revision 1.5 2003/05/13 18:58:27 nilspace 00179 * Cleaned up comments. 00180 * 00181 * Revision 1.4 2003/04/27 22:04:34 nilspace 00182 * Created the namespace O_SESSAME. 00183 * 00184 * Revision 1.3 2003/04/25 13:45:55 nilspace 00185 * const'd Get() functions. 00186 * 00187 * Revision 1.2 2003/04/23 16:30:59 nilspace 00188 * Various bugfixes & uploading of all changed code for new programmers. 00189 * 00190 * Revision 1.1 2003/04/08 22:32:20 nilspace 00191 * Initial submission. 00192 * 00193 * 00194 ******************************************************************************/