00001 00002 00008 /* 00009 * \todo Add test cases 00010 */ 00012 00013 #ifndef __SSF_RUNGEKUTTAFEHLBERG_INTEGRATOR_H__ 00014 #define __SSF_RUNGEKUTTAFEHLBERG_INTEGRATOR_H__ 00015 00016 #include "Matrix.h" 00017 #include "Integrator.h" 00018 namespace O_SESSAME { 00025 class RungeKuttaFehlbergIntegrator : public Integrator 00026 { 00027 public: 00028 RungeKuttaFehlbergIntegrator(); 00029 00033 Matrix Integrate(const vector<ssfTime>& _propTime, odeFunctor _odeFunctorPtr, const Vector& _initialConditions, Orbit* _pOrbit, Attitude* _pAttitude, const Matrix& _constants, const Functor& _functorPtr); 00034 00038 void SetTolerance(const double& _Tolerance) { m_Tolerance = _Tolerance; return; } 00039 00043 double GetTolerance() { return m_Tolerance; } 00044 00049 void SetStepSizes(const double& _minStepSize, const double& _maxStepSize) { m_minStepSize = _minStepSize; m_maxStepSize = _maxStepSize; return; } 00050 00051 private: 00052 double m_Tolerance; 00053 double m_minStepSize; 00054 double m_maxStepSize; 00055 }; 00056 } // close namespace O_SESSAME 00057 00058 #endif 00059 // Do not change the comments below - they will be added automatically by CVS 00060 /***************************************************************************** 00061 * $Log: RungeKuttaFehlbergIntegrator.h,v $ 00062 * Revision 1.5 2003/06/05 20:09:14 nilspace 00063 * Finished implementation and verified against a short 2 second integration. 00064 * 00065 * Revision 1.4 2003/05/22 02:59:15 nilspace 00066 * Updated comments. Changed to pass in pointers to Orbit & Attitude objects. 00067 * 00068 * Revision 1.3 2003/05/13 18:58:27 nilspace 00069 * Cleaned up comments. 00070 * 00071 * Revision 1.2 2003/04/25 13:45:55 nilspace 00072 * const'd Get() functions. 00073 * 00074 * Revision 1.1 2003/04/23 15:08:28 nilspace 00075 * Initial submission of RKF integrator. 00076 * 00077 * 00078 ******************************************************************************/