SolarRadiationPressure.hpp

Go to the documentation of this file.
00001 #pragma ident "$Id: SolarRadiationPressure.hpp 2457 2010-08-18 14:20:12Z coandrei $"
00002 
00009 #ifndef GPSTK_SOLAR_RADIATION_PRESSURE_HPP
00010 #define GPSTK_SOLAR_RADIATION_PRESSURE_HPP
00011 
00012 
00013 //============================================================================
00014 //
00015 //  This file is part of GPSTk, the GPS Toolkit.
00016 //
00017 //  The GPSTk is free software; you can redistribute it and/or modify
00018 //  it under the terms of the GNU Lesser General Public License as published
00019 //  by the Free Software Foundation; either version 2.1 of the License, or
00020 //  any later version.
00021 //
00022 //  The GPSTk is distributed in the hope that it will be useful,
00023 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
00024 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00025 //  GNU Lesser General Public License for more details.
00026 //
00027 //  You should have received a copy of the GNU Lesser General Public
00028 //  License along with GPSTk; if not, write to the Free Software Foundation,
00029 //  Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00030 //
00031 //  Wei Yan - Chinese Academy of Sciences . 2009, 2010
00032 //
00033 //============================================================================
00034 
00035 #include "ForceModel.hpp"
00036 
00037 
00038 namespace gpstk
00039 {
00042 
00048    class SolarRadiationPressure : public ForceModel
00049    {
00050    public:
00051       enum ShadowModel 
00052       {
00053          SM_CYLINDRICAL,         // cylindrical
00054          SM_CONICAL               // conical
00055       };
00056 
00057    public:
00059       SolarRadiationPressure() {}
00060 
00062       virtual ~SolarRadiationPressure() {}
00063 
00064 
00072       double getShadowFunction(Vector<double> r, 
00073                                Vector<double> r_Sun,
00074                                Vector<double> r_Moon, 
00075                                SolarRadiationPressure::ShadowModel sm = SM_CONICAL);
00076 
00077          // this is the real one
00078       virtual void doCompute(UTCTime t, EarthBody& bRef, Spacecraft& sc);
00079 
00081       virtual std::string modelName() const
00082       { return "SolarRadiationPressure"; }
00083 
00085       virtual int forceIndex() const
00086       { return FMI_SRP; }
00087 
00093       Vector<double> accelSRP(Vector<double> r, Vector<double> r_Sun);
00094 
00095 
00102       double partial_illumination(Vector<double> r, Vector<double> r_Sun );
00103 
00104     
00105    protected:      
00106 
00107       // some local variables
00108 
00110       double crossArea;
00111       double srpArea;
00112 
00114       double dryMass;
00115 
00117       double reflectCoeff;      // CR
00118 
00120       Vector<double> dadcr;
00121 
00122    }; // End of class 'SolarRadiationPressure'
00123 
00124       // @}
00125 
00126 }  // End of namespace 'gsptk'
00127 
00128 #endif   // GPSTK_SOLAR_RADIATION_PRESSURE_HPP
00129 
00130 

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