Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages | Examples

Propagator.h

Go to the documentation of this file.
00001 //////////////////////////////////////////////////////////////////////////////////////////////////
00002 /*! \file Propagator.h
00003 *  \brief Interface to the Propagator abstract 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_PROPAGATOR_H__
00014 #define __OSESSAME_PROPAGATOR_H__
00015 
00016 #include <rotation/Rotation.h>
00017 #include <utils/Integrator.h>
00018 #include <orbit/Orbit.h>
00019 #include <attitude/Attitude.h>
00020 #include <datahandling/AttitudeHistory.h>
00021 #include <datahandling/OrbitHistory.h>
00022 
00023 
00024 namespace O_SESSAME {
00025 //////////////////////////////////////////////////////////////////////////////////////////////////
00026 /*! @defgroup PropagatorToolkit Propagator Toolkit 
00027 * The propagator toolkit contains all the functionality required to propagate the full dynamics 
00028 * of a spacecraft. This can include only attitude or orbit dynamics, combined, or even propagation 
00029 * using an external source of states, such as another simulation program or hardware.
00030 *
00031 * \par 
00032 * The Propagator class offers an abstract interface to the specific propagation strategies 
00033 * that implement each of the examples given above, as well as any further user defined algorithms. 
00034 A propagator requires the following parts:
00035     - Orbit object (if propagating with an orbit), including:
00036         - Dynamic equations, the right-hand side, or time derivate equations (odeFunctor)
00037         - A state conversion function that converts the integrated state variables to an 
00038             object stored in OrbitHistory.
00039         - An Interpolator in the OrbitHistory.
00040     - Attitude object (if propagating with an attitude), including:
00041         - Dynamic equations, the right-hand side, or time derivate equations (odeFunctor)
00042         - A state conversion function that converts the integrated state variables to an 
00043             object stored in AttitudeHistory
00044         - An Interpolator in the AttitudeHistory
00045     - An attitude state propagator
00046         - Use either an Integrator
00047         - Tie in the external source to the AttitudeHistory object (Exporter, Communications)
00048     - An orbit state propagator
00049         - Use either an Integrator
00050         - Tie in the external source to the OrbitHistory object (Exporter, Communications)
00051     - An Environment object
00052         - Environmental force and torque disturbance functions (EnvFunction)
00053         - A CentralBody (EarthCentralBody, MoonCentralBody, etc.)
00054         
00055 An example of a propagator use is included in testPropagation.cpp.
00056         
00057 *
00058 * \par Extension Points:
00059 *       The propagation toolkit currently has functionality for independent attitude \& orbit 
00060 * propagation, as well as combined propagation using weak coupling, and full coupling. Any new 
00061 * propagation schemes should be derived from the appropriate AnalyticPropagator or NumericPropagator 
00062 * interface classes as necessary.
00063 */
00064 
00065 class Attitude;
00066 class Orbit;
00067 
00068 
00069 /*! \brief Encapsulation of the propagation of the spacecraft dynamics (attitude, orbital, etc.)
00070 * \ingroup PropagatorToolkit
00071 *
00072 *  The propagator is used to tie together the various spacecraft dynamics that are desired to be 
00073 * propagated. The user has the ability to set the time derivative equations, integrators, parameters,
00074 * etc. as necessary. Furthermore, the Propagator class can be derived for more functionality.
00075 */
00076 class Propagator
00077 {
00078 public:
00079     /*! \brief Default Deconstructor */
00080     virtual ~Propagator();
00081     
00082     /*! \brief Propagates the dynamics forward through time
00083         * @param _propTime STL vector of values specifying beginning, ending times of propagation as well as time step [initialTime, timeStep, finalTime] (s)
00084         */
00085     virtual void Propagate(const vector<ssfTime> &_propTime);
00086     
00087     /*! \brief Sets the Attitude Representation object to be propagated
00088         * @param _AttitudeObject pointer to the attitude representation
00089         */
00090     virtual void SetAttitudeObject(Attitude *_pAttitudeObject);
00091     
00092     /*! \brief Sets the Orbit Representation object to be propagated
00093         * @param _OrbitObject pointer to the Orbit representation
00094         */
00095     virtual void SetOrbitObject(Orbit *_pOrbitObject);
00096 
00097 protected:
00098     /*! \brief Propagate the orbit through a specified time 
00099         * @param _propTime vector of values specifying beginning, ending times of propagation as well as time step [initialTime, timeStep, finalTime] (s)
00100         * @param _initConditions Vector of initial conditions of the orbit propagation. 
00101         * @return Matrix of integrated times and states as returned by the orbit dynamics equation
00102         */
00103     virtual Matrix PropagateOrbit(const vector<ssfTime> &_propTime, const Vector &_initConditions);
00104 
00105     /*! \brief Propagate the attitude through a specified time
00106         * @param _propTime Vector of values specifying beginning, ending times of propagation as well as time step [initialTime, timeStep, finalTime] (s)
00107         * @param _initConditions Vector of initial conditions of the attitude propagation. 
00108         * @return Matrix of integrated times and states as returned by the attitude dynamics equation
00109         */
00110     virtual Matrix PropagateAttitude(const vector<ssfTime> &_propTime, const Vector &_initConditions);
00111 
00112 protected:
00113     /*! \brief Default Constructor */
00114     Propagator();
00115 
00116     /*! Pointer to the Orbit Representation being propagated */
00117     Orbit *m_pOrbitObject;
00118     /*! Pointer to the Attitude Representation being propagated */
00119     Attitude *m_pAttitudeObject;
00120     
00121     /*! Collection of calculated orbit state mesh points */
00122     OrbitHistory m_OrbitStateMeshPoints;
00123     /*! Collection of calculated attitude state mesh points */
00124     AttitudeHistory m_AttitudeStateMeshPoints;
00125         
00126 };
00127 // end of Propagator
00128 }
00129 #endif
00130 /*****************************************************************************
00131 *       $Log: Propagator.h,v $
00132 *       Revision 1.2  2005/06/10 12:53:28  jayhawk_hokie
00133 *       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).
00134 *       
00135 *       Revision 1.1.1.1  2005/04/26 17:40:56  cakinli
00136 *       Adding OpenSESSAME to DSACSS distrib to capture fixed version.
00137 *       
00138 *       Revision 1.11  2003/10/18 21:37:27  rsharo
00139 *       Removed "../utils" from all qmake project paths. Prepended "utils
00140 *       /" to all #include directives for utils. Removed ".h" extensions from STL header
00141 *       s and referenced STL components from "std::" namespace.  Overall, changed to be
00142 *       more portable.
00143 *       
00144 *       Revision 1.10  2003/06/10 02:24:04  nilspace
00145 *       Updated moving of StateConversion functions to Attitude and Orbit.
00146 *       
00147 *       Revision 1.9  2003/05/22 15:09:46  nilspace
00148 *       Updated documentation.
00149 *       
00150 *       Revision 1.8  2003/05/20 17:55:35  nilspace
00151 *       Updated comments, also now use derived CombinedNumericProp.
00152 *       
00153 *       Revision 1.7  2003/05/13 18:52:45  nilspace
00154 *       Fixed comments. Passed in initial conditions to propagate functions.
00155 *       
00156 *       Revision 1.6  2003/04/27 22:04:33  nilspace
00157 *       Created the namespace O_SESSAME.
00158 *       
00159 *       Revision 1.5  2003/04/25 18:23:43  nilspace
00160 *       Added implementation of ~Propagator()
00161 *       
00162 *       Revision 1.4  2003/04/25 13:43:52  nilspace
00163 *       Updated to actually work. Still needs verification.
00164 *       
00165 *       Revision 1.3  2003/04/23 16:30:58  nilspace
00166 *       Various bugfixes & uploading of all changed code for new programmers.
00167 *       
00168 *       Revision 1.2  2003/04/08 22:50:28  nilspace
00169 *       Updated to derive classes based on numeric or analytical nature.
00170 *       
00171 *       Revision 1.1  2003/03/27 02:49:20  nilspace
00172 *       Initial submission
00173 *
00174 ******************************************************************************/

Generated on Wed Sep 5 12:54:24 2007 for DSACSS Operational Code by  doxygen 1.3.9.1