AtmosphericDrag.hpp

Go to the documentation of this file.
00001 #pragma ident "$Id: AtmosphericDrag.hpp 2457 2010-08-18 14:20:12Z coandrei $"
00002 
00010 #ifndef GPSTK_ATMOSPHERIC_DRAG_HPP
00011 #define GPSTK_ATMOSPHERIC_DRAG_HPP
00012 
00013 
00014 //============================================================================
00015 //
00016 //  This file is part of GPSTk, the GPS Toolkit.
00017 //
00018 //  The GPSTk is free software; you can redistribute it and/or modify
00019 //  it under the terms of the GNU Lesser General Public License as published
00020 //  by the Free Software Foundation; either version 2.1 of the License, or
00021 //  any later version.
00022 //
00023 //  The GPSTk is distributed in the hope that it will be useful,
00024 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
00025 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00026 //  GNU Lesser General Public License for more details.
00027 //
00028 //  You should have received a copy of the GNU Lesser General Public
00029 //  License along with GPSTk; if not, write to the Free Software Foundation,
00030 //  Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00031 //
00032 //  Wei Yan - Chinese Academy of Sciences . 2009, 2010
00033 //
00034 //============================================================================
00035 
00036 #include "ForceModel.hpp"
00037 #include "ASConstant.hpp"
00038 #include "Spacecraft.hpp"
00039 
00040 namespace gpstk
00041 {
00042    
00045 
00054    class AtmosphericDrag : public ForceModel
00055    {
00056    public:
00057 
00059       AtmosphericDrag() : dailyF107(150.0), averageF107(150.0), dailyKp(3.0) 
00060       {};
00061 
00063       virtual ~AtmosphericDrag() {};
00064 
00065 
00072       virtual double computeDensity(UTCTime t, EarthBody& rb, Vector<double> r,Vector<double> v) = 0;
00073       
00074 
00076       virtual std::string modelName() const
00077       {return "AtmosphericDrag";}
00078 
00080       virtual int forceIndex() const
00081       { return FMI_DRAG; }
00082        
00084       virtual void doCompute(UTCTime utc, EarthBody& rb, Spacecraft& sc);
00085 
00086       virtual void setSpaceData(double dayF107,double aveF107, double dayKp)
00087       { dailyF107 = dayF107; averageF107 = aveF107; dailyKp = dayKp; }
00088 
00089 
00090    protected:
00091       double dailyF107;
00092       double averageF107;
00093       double dailyKp;
00094 
00096       Vector<double> dadcd;
00097 
00098          // Constant
00099       enum CiraSize{ CIRA_SIZE = 24 };
00100 
00102       static const double rho_0[CIRA_SIZE];
00103       static const double H[CIRA_SIZE];
00104       static const double h0[CIRA_SIZE];
00105       
00106    }; // End of class 'gpstk'
00107 
00108       // @}
00109 
00110 }  // End of namespace 'gpstk'
00111 
00112 #endif   // GPSTK_ATMOSPHERIC_DRAG_HPP
00113 

Generated on Tue May 22 03:30:56 2012 for GPS ToolKit Software Library by  doxygen 1.3.9.1