00001 ////////////////////////////////////////////////////////////////////////////////////////////////// 00002 /*! \file CombinedNumericPropagator.h 00003 * \brief Interface to the Combined Numeric Propagator class. 00004 * \author $Author: jayhawk_hokie $ 00005 * \version $Revision: 1.2 $ 00006 * \date $Date: 2005/06/10 12:53:28 $ 00007 *////////////////////////////////////////////////////////////////////////////////////////////////// 00008 /* \todo Finish documentation 00009 * 00010 */ 00011 ////////////////////////////////////////////////////////////////////////////////////////////////// 00012 00013 #ifndef __OSESSAME_COMBINED_NUMERIC_PROPAGATOR_H__ 00014 #define __OSESSAME_COMBINED_NUMERIC_PROPAGATOR_H__ 00015 00016 #include <matrix/Matrix.h> 00017 #include <rotation/Rotation.h> 00018 #include <utils/Integrator.h> 00019 #include <dynamics/NumericPropagator.h> 00020 00021 namespace O_SESSAME { 00022 00023 /*! \brief Propagation of orbit & attitude using a numeric integrator. 00024 * \ingroup PropagatorToolkit 00025 * 00026 * \example testPropagation.cpp 00027 * This example demonstrates how to use a CombinedNumericPropagator to propagate a combined 00028 orbit \& attitude. 00029 */ 00030 class CombinedNumericPropagator : public NumericPropagator 00031 { 00032 public: 00033 /*! Default Constructor */ 00034 CombinedNumericPropagator(); 00035 /*! Default Deconstructor */ 00036 virtual ~CombinedNumericPropagator(); 00037 00038 /*! Propagates the dynamics forward through time 00039 * @param _propTime vector of ssfTime values specifying beginning, ending times of propagation as well as time step [initialTime, timeStep, finalTime] (s) 00040 * @param _orbitInitConditions initial conditions of the orbit integration. 00041 * @param _attInitConditions initial conditions of the attitude integration. 00042 */ 00043 virtual void Propagate(const vector<ssfTime> &_propTime, const Vector &_orbitInitConditions, const Vector &_attInitConditions); 00044 00045 void SetOrbitIntegrator(Integrator* _pOrbitIntegrator); 00046 void SetAttitudeIntegrator(Integrator* _pAttitudeIntegrator); 00047 00048 Integrator* GetOrbitIntegrator() const; 00049 Integrator* GetAttitudeIntegrator() const; 00050 00051 protected: 00052 /*! \brief Propagate the orbit through a specified time 00053 * @param _propTime vector of values specifying beginning, ending times of propagation as well as time step [initialTime, timeStep, finalTime] (s) 00054 * @param _initConditions Vector of initial conditions of the orbit propagation. 00055 * @return Matrix of integrated times and states as returned by the orbit dynamics equation 00056 */ 00057 virtual Matrix PropagateOrbit(const vector<ssfTime> &_propTime, const Vector &_initConditions); 00058 00059 /*! \brief Propagate the attitude through a specified time 00060 * @param _propTime Vector of values specifying beginning, ending times of propagation as well as time step [initialTime, timeStep, finalTime] (s) 00061 * @param _initConditions Vector of initial conditions of the attitude propagation. 00062 * @return Matrix of integrated times and states as returned by the attitude dynamics equation 00063 */ 00064 virtual Matrix PropagateAttitude(const vector<ssfTime> &_propTime, const Vector &_initConditions); 00065 00066 private: 00067 /*! \brief Matrix of calculated integration mesh points for the orbit dynamics */ 00068 Matrix m_OrbitStateMeshPoints; 00069 /*! \brief Matrix of calculated integration mesh points for the attitude dynamics */ 00070 Matrix m_AttitudeStateMeshPoints; 00071 00072 /*! \brief pointer to the integrator used by the numeric propagator for orbit integration. */ 00073 Integrator* m_pOrbitIntegrator; 00074 /*! \brief pointer to the integrator used by the numeric propagator for attitude integration. */ 00075 Integrator* m_pAttitudeIntegrator; 00076 }; 00077 } // close namespace O_SESSAME 00078 00079 #endif 00080 /***************************************************************************** 00081 * $Log: CombinedNumericPropagator.h,v $ 00082 * Revision 1.2 2005/06/10 12:53:28 jayhawk_hokie 00083 * 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). 00084 * 00085 * Revision 1.1.1.1 2005/04/26 17:40:56 cakinli 00086 * Adding OpenSESSAME to DSACSS distrib to capture fixed version. 00087 * 00088 * Revision 1.4 2003/10/18 21:37:27 rsharo 00089 * Removed "../utils" from all qmake project paths. Prepended "utils 00090 * /" to all #include directives for utils. Removed ".h" extensions from STL header 00091 * s and referenced STL components from "std::" namespace. Overall, changed to be 00092 * more portable. 00093 * 00094 * Revision 1.3 2003/06/10 02:24:04 nilspace 00095 * Updated moving of StateConversion functions to Attitude and Orbit. 00096 * 00097 * Revision 1.2 2003/05/22 21:02:28 nilspace 00098 * Updated comments. 00099 * 00100 * Revision 1.1 2003/05/20 17:56:24 nilspace 00101 * Initial submission. 00102 * 00103 * 00104 ******************************************************************************/