00001 #pragma ident "$Id: IonoModel.hpp 164 2006-09-29 16:57:16Z architest $" 00002 00003 00004 00005 #ifndef GPSTK_IONOMODEL_HPP 00006 #define GPSTK_IONOMODEL_HPP 00007 00008 //============================================================================ 00009 // 00010 // This file is part of GPSTk, the GPS Toolkit. 00011 // 00012 // The GPSTk is free software; you can redistribute it and/or modify 00013 // it under the terms of the GNU Lesser General Public License as published 00014 // by the Free Software Foundation; either version 2.1 of the License, or 00015 // any later version. 00016 // 00017 // The GPSTk is distributed in the hope that it will be useful, 00018 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00019 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00020 // GNU Lesser General Public License for more details. 00021 // 00022 // You should have received a copy of the GNU Lesser General Public 00023 // License along with GPSTk; if not, write to the Free Software Foundation, 00024 // Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00025 // 00026 // Copyright 2004, The University of Texas at Austin 00027 // 00028 //============================================================================ 00029 00030 //============================================================================ 00031 // 00032 //This software developed by Applied Research Laboratories at the University of 00033 //Texas at Austin, under contract to an agency or agencies within the U.S. 00034 //Department of Defense. The U.S. Government retains all rights to use, 00035 //duplicate, distribute, disclose, or release this software. 00036 // 00037 //Pursuant to DoD Directive 523024 00038 // 00039 // DISTRIBUTION STATEMENT A: This software has been approved for public 00040 // release, distribution is unlimited. 00041 // 00042 //============================================================================= 00043 00044 00045 00046 00047 00048 00054 #include "DayTime.hpp" 00055 #include "EngAlmanac.hpp" 00056 #include "Geodetic.hpp" 00057 00058 namespace gpstk 00059 { 00062 00078 class IonoModel 00079 { 00080 public: 00081 00085 NEW_EXCEPTION_CLASS(InvalidIonoModel, gpstk::Exception); 00086 00087 00088 enum Frequency 00089 { 00090 L1, 00091 L2 00092 }; 00093 00095 IonoModel() throw() : valid(false) {} 00096 00098 virtual ~IonoModel() throw() {} 00099 00107 IonoModel(const double a[4], const double b[4]) throw(); 00108 00114 IonoModel(const EngAlmanac& engalm) throw(); 00115 00121 void setModel(const double a[4], const double b[4]) throw(); 00122 00127 bool isValid() const throw() { return valid; } 00128 00138 double getCorrection(const DayTime& time, 00139 const Geodetic& rxgeo, 00140 double svel, 00141 double svaz, 00142 Frequency freq = L1) const 00143 throw(InvalidIonoModel); 00144 00146 bool operator==(const IonoModel& right) const throw(); 00147 00149 bool operator!=(const IonoModel& right) const throw(); 00150 00151 private: 00152 00153 double alpha[4]; 00154 double beta[4]; 00155 00156 bool valid; 00157 }; 00159 } 00160 00161 #endif
1.3.9.1