00001 00002 00008 /* 00009 * 00010 */ 00012 00013 #ifndef __SSF_ORBIT_H__ 00014 #define __SSF_ORBIT_H__ 00015 00016 #include "Functor.h" 00017 #include "Environment.h" 00018 #include "Propagator.h" 00019 #include "OrbitState.h" 00020 #include "OrbitHistory.h" 00021 00022 00023 namespace O_SESSAME { 00024 class Propagator; // forward declaration 00025 00033 typedef void (*IntegratedOrbitStateConversionFunction)(const Matrix &_meshPoint, OrbitState &_convertedOrbitState); 00034 00035 00037 00057 class Orbit 00058 { 00059 public: 00061 Orbit(); 00063 virtual ~Orbit(); 00064 00065 public: 00069 void SetStateObject(const OrbitState& _currentOrbitPosition); 00070 00074 OrbitState GetStateObject() const; 00075 00076 protected: 00078 OrbitState m_CurrentOrbitPosition; 00079 00080 00081 // ***************************** 00082 // ******** PROPAGATION ******** 00083 // ***************************** 00084 public: 00088 void SetDynamicsEq(odeFunctor _orbitDynamicsEq); 00089 00093 odeFunctor GetDynamicsEq(); 00094 00098 void SetStateConversion(IntegratedOrbitStateConversionFunction _ConversionFunction); 00099 00103 IntegratedOrbitStateConversionFunction GetStateConversion() const; 00104 00108 void SetPropagator(Propagator *_pPropagator); 00109 00113 Propagator* GetPropagator(); 00114 00117 void Propagate(const Vector &_propTime); 00118 00123 bool IsIntegrateable(); 00124 00125 private: 00127 Propagator *m_pPropagator; 00128 00130 IntegratedOrbitStateConversionFunction m_OrbitStateConversionFunction; 00131 00133 odeFunctor m_OrbitDynamicsEq; 00134 00136 bool m_Integrateable; 00137 00138 // ***************************** 00139 // ********* Physical ********** 00140 // ***************************** 00141 public: 00146 void SetParameters(const Matrix &_Parameters); 00147 00151 Matrix GetParameters() const; 00152 00153 private: 00154 Matrix m_Parameters; 00155 00156 // ***************************** 00157 // ******** ENVIRONMENT ******** 00158 // ***************************** 00159 public: 00163 void SetEnvironment(Environment *_pEnvironment); 00164 00168 Environment* GetEnvironment(); 00169 00170 00171 void SetControlForces(const Vector &_controlForces); 00172 Vector GetControlForces(); 00173 00179 ObjectFunctor<Environment> GetEnvironmentForcesFunctor(); 00180 private: 00182 Environment *m_pEnvironment; 00184 Vector m_ControlForces; 00185 00187 ObjectFunctor<Environment> m_EnvironmentForcesFunctor; 00188 00189 // ************************* 00190 // ******** HISTORY ******** 00191 // ************************* 00192 public: 00203 OrbitHistory& GetHistoryObject(); 00204 00205 private: 00206 OrbitHistory m_OrbitHistory; 00207 00208 }; // End of OrbitToolkit Group 00210 00211 } // close namespace O_SESSAME 00212 #endif 00213 00214 // Do not change the comments below - they will be added automatically by CVS 00215 /***************************************************************************** 00216 * $Log: Orbit.h,v $ 00217 * Revision 1.9 2003/06/10 14:52:05 nilspace 00218 * Changed GetHistory to GetHistoryObject 00219 * 00220 * Revision 1.8 2003/05/20 17:47:59 nilspace 00221 * Updated comments. 00222 * 00223 * Revision 1.7 2003/05/02 16:16:46 nilspace 00224 * Documented the API. 00225 * 00226 * Revision 1.6 2003/04/28 20:13:18 nilspace 00227 * GetHistory return by reference. 00228 * 00229 * Revision 1.5 2003/04/27 22:04:33 nilspace 00230 * Created the namespace O_SESSAME. 00231 * 00232 * Revision 1.4 2003/04/27 21:17:42 nilspace 00233 * Finished moving function declarations out of the class interface. 00234 * 00235 * Revision 1.3 2003/04/27 21:14:01 nilspace 00236 * Added to the namespace O_SESSAME. 00237 * Moved function definitions outside of the class interface definition. 00238 * 00239 * Revision 1.2 2003/04/25 13:36:28 nilspace 00240 * Updated to work with current History, Environment & Propagator objects. 00241 * 00242 * Revision 1.1 2003/04/08 22:48:59 nilspace 00243 * Initial Submission. 00244 * 00245 ******************************************************************************/