00001 ////////////////////////////////////////////////////////////////////////////////////////////////// 00002 /*!\file RungeKuttaIntegrator.h 00003 * \brief Runge-Kutta integrator. 00004 * \author $Author: jayhawk_hokie $ 00005 * \version $Revision: 1.2 $ 00006 * \date $Date: 2005/06/10 12:53:29 $ 00007 *////////////////////////////////////////////////////////////////////////////////////////////////// 00008 /* \todo Add test cases 00009 */ 00010 ////////////////////////////////////////////////////////////////////////////////////////////////// 00011 00012 #ifndef __SSF_RUNGEKUTTA_INTEGRATOR_H__ 00013 #define __SSF_RUNGEKUTTA_INTEGRATOR_H__ 00014 00015 #include <matrix/Matrix.h> 00016 #include <utils/Integrator.h> 00017 namespace O_SESSAME { 00018 00019 /*! \class RungeKuttaIntegrator 00020 * \brief Implementation of a Runge-Kutta (Fourth Order) %Integrator. 00021 * \ingroup IntegrationLibrary 00022 * 00023 * \copydoc Integrator 00024 * \todo document algorithm 00025 * \example testAttitudeIntegration.cpp 00026 * \example testOrbitIntegration.cpp 00027 */ 00028 class RungeKuttaIntegrator : public Integrator 00029 { 00030 public: 00031 RungeKuttaIntegrator(); 00032 00033 Matrix Integrate(const vector<ssfTime>& _propTime, odeFunctor _odeFunctorPtr, const Vector& _initialConditions, Orbit* _Orbit, Attitude* _Attitude, const Matrix& _constants, const Functor& _functorPtr); 00034 00035 /*! Standard Integration Function */ 00036 // Matrix Integrate(const Vector &_propTime, odeFunc _FuncPtr, const Vector &_initialConditions, const Matrix &_constants, vectorFuncPtr _vectorFuncPtr); 00037 00038 /*! \brief Set the number of integration steps 00039 * @param _numSteps number of steps to include between integration timesteps 00040 */ 00041 void SetNumSteps(const int &_numSteps) { m_NumSteps = _numSteps; return; } 00042 00043 /*! \brief Return the number of integration steps 00044 * @return current number of integration steps performed b/w every timestep 00045 */ 00046 int GetNumSteps() { return m_NumSteps; } 00047 private: 00048 int m_NumSteps; /*!< \brief number of integration steps performed b/w every timestep */ 00049 }; 00050 } // close namespace O_SESSAME 00051 00052 #endif 00053 00054 // Do not change the comments below - they will be added automatically by CVS 00055 /***************************************************************************** 00056 * $Log: RungeKuttaIntegrator.h,v $ 00057 * Revision 1.2 2005/06/10 12:53:29 jayhawk_hokie 00058 * Changed header file format to make it easier to link to the spacecraft code by only having to specify dsacss/dep/spacecraft/src (ex. "file.h" changed to <dir/file.h> where dir is a folder in src). 00059 * 00060 * Revision 1.1.1.1 2005/04/26 17:41:00 cakinli 00061 * Adding OpenSESSAME to DSACSS distrib to capture fixed version. 00062 * 00063 * Revision 1.8 2003/05/22 02:59:15 nilspace 00064 * Updated comments. Changed to pass in pointers to Orbit & Attitude objects. 00065 * 00066 * Revision 1.7 2003/05/21 19:52:47 nilspace 00067 * Updated comments. 00068 * 00069 * Revision 1.6 2003/05/20 17:44:21 nilspace 00070 * Updated comments. 00071 * 00072 * Revision 1.5 2003/05/13 18:58:27 nilspace 00073 * Cleaned up comments. 00074 * 00075 * Revision 1.4 2003/04/27 22:04:34 nilspace 00076 * Created the namespace O_SESSAME. 00077 * 00078 * Revision 1.3 2003/04/25 13:45:55 nilspace 00079 * const'd Get() functions. 00080 * 00081 * Revision 1.2 2003/04/23 16:30:59 nilspace 00082 * Various bugfixes & uploading of all changed code for new programmers. 00083 * 00084 * Revision 1.1 2003/04/08 22:29:55 nilspace 00085 * Initial submission. Made a subclass of Integrator. 00086 * 00087 ******************************************************************************/