00001 #pragma ident "$Id: HarrisPriesterDrag.hpp 2457 2010-08-18 14:20:12Z coandrei $"
00002
00008 #ifndef GPSTK_HARRIS_PRIESTER_DRAG_HPP
00009 #define GPSTK_HARRIS_PRIESTER_DRAG_HPP
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #include "AtmosphericDrag.hpp"
00036 #include "Matrix.hpp"
00037 #include <map>
00038
00039 namespace gpstk
00040 {
00043
00050 class HarrisPriesterDrag : public AtmosphericDrag
00051 {
00052 public:
00054 HarrisPriesterDrag();
00055
00057 virtual ~HarrisPriesterDrag() {};
00058
00060 void test();
00061
00063 void updateF107(double f107 = 157);
00064
00065
00073 virtual double computeDensity(UTCTime utc, EarthBody& rb, Vector<double> r, Vector<double> v);
00074
00075 protected:
00076
00078 void init();
00079
00080 Matrix<double> getDensityCoeficentsByF107(double f107 = 157);
00081
00082 protected:
00084 static const double upper_limit;
00085
00087 static const double lower_limit;
00088
00090 static const double ra_lag;
00091
00093 double workingF107;
00094
00096 Matrix<double> workingDens;
00097
00099 std::map<int, Matrix<double> > hpCoeficient;
00100
00103 static const double hpcoef[10][177];
00104
00105 };
00106
00107
00108
00109 }
00110
00111 #endif // GPSTK_HARRIS_PRIESTER_DRAG_HPP
00112
00113
00114
00115
00116