CCIR.hpp
Go to the documentation of this file.
1 //==============================================================================
2 //
3 // This file is part of GNSSTk, the ARL:UT GNSS Toolkit.
4 //
5 // The GNSSTk is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU Lesser General Public License as published
7 // by the Free Software Foundation; either version 3.0 of the License, or
8 // any later version.
9 //
10 // The GNSSTk is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with GNSSTk; if not, write to the Free Software Foundation,
17 // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
18 //
19 // This software was developed by Applied Research Laboratories at the
20 // University of Texas at Austin.
21 // Copyright 2004-2022, The Board of Regents of The University of Texas System
22 //
23 //==============================================================================
24 
25 
26 //==============================================================================
27 //
28 // This software was developed by Applied Research Laboratories at the
29 // University of Texas at Austin, under contract to an agency or agencies
30 // within the U.S. Department of Defense. The U.S. Government retains all
31 // rights to use, duplicate, distribute, disclose, or release this software.
32 //
33 // Pursuant to DoD Directive 523024
34 //
35 // DISTRIBUTION STATEMENT A: This software has been approved for public
36 // release, distribution is unlimited.
37 //
38 //==============================================================================
39 
40 #ifndef GNSSTK_CCIR_HPP
41 #define GNSSTK_CCIR_HPP
42 
43 #include <limits>
44 #include <vector>
45 #include "CommonTime.hpp"
46 
47 // test class forward declaration for friend.
48 class CCIR_T;
49 
50 namespace gnsstk
51 {
59  class CCIR
60  {
61  public:
66  {
69  // dimensions of the CCIR data arrays
71  F2MaxDegree = 76,
72  F2MaxOrder = 13,
73  FM3MaxDegree = 49,
75  };
76 
79  CCIR();
80 
89  void fourier(const CommonTime& when, double effSunSpots);
90 
97  double getCF2(unsigned degree) const
98  {
99  return (cacheFourierGood && degree < cacheCF2.size()
100  ? cacheCF2[degree]
101  : std::numeric_limits<double>::quiet_NaN());
102  }
103 
112  double getCM3(unsigned degree) const
113  {
114  return (cacheFourierGood && degree < cacheCM3.size()
115  ? cacheCM3[degree]
116  : std::numeric_limits<double>::quiet_NaN());
117  }
118 
119  private:
127  void validateCache(const CommonTime& when, double effSunSpots);
133  void interpolate(const CommonTime& when, double effSunSpots);
138  void interpolateF2(const CommonTime& when, double effSunSpots);
144  void interpolateFm3(const CommonTime& when, double effSunSpots);
145 
155  double ccirF2(unsigned month, int cond, int deg, int ord);
165  double ccirFm3(unsigned month, int cond, int deg, int ord);
177  double ccir11F2(int cond, int deg, int ord);
178  double ccir11Fm3(int cond, int deg, int ord);
179  double ccir12F2(int cond, int deg, int ord);
180  double ccir12Fm3(int cond, int deg, int ord);
181  double ccir13F2(int cond, int deg, int ord);
182  double ccir13Fm3(int cond, int deg, int ord);
183  double ccir14F2(int cond, int deg, int ord);
184  double ccir14Fm3(int cond, int deg, int ord);
185  double ccir15F2(int cond, int deg, int ord);
186  double ccir15Fm3(int cond, int deg, int ord);
187  double ccir16F2(int cond, int deg, int ord);
188  double ccir16Fm3(int cond, int deg, int ord);
189  double ccir17F2(int cond, int deg, int ord);
190  double ccir17Fm3(int cond, int deg, int ord);
191  double ccir18F2(int cond, int deg, int ord);
192  double ccir18Fm3(int cond, int deg, int ord);
193  double ccir19F2(int cond, int deg, int ord);
194  double ccir19Fm3(int cond, int deg, int ord);
195  double ccir20F2(int cond, int deg, int ord);
196  double ccir20Fm3(int cond, int deg, int ord);
197  double ccir21F2(int cond, int deg, int ord);
198  double ccir21Fm3(int cond, int deg, int ord);
199  double ccir22F2(int cond, int deg, int ord);
200  double ccir22Fm3(int cond, int deg, int ord);
202 
205  unsigned cacheMonth;
208  double cacheHour;
213  std::vector<double> cacheF2;
215  std::vector<double> cacheFM3;
217  std::vector<double> cacheCF2;
219  std::vector<double> cacheCM3;
221  bool cacheGood;
224 
225  friend class ::CCIR_T;
226  };
227 }
228 
229 #endif // GNSSTK_CCIR_HPP
gnsstk::CCIR::ccir22Fm3
double ccir22Fm3(int cond, int deg, int ord)
Definition: CCIR.cpp:11182
gnsstk::CCIR::ccirF2
double ccirF2(unsigned month, int cond, int deg, int ord)
Definition: CCIR.cpp:236
gnsstk::CCIR::ccir11Fm3
double ccir11Fm3(int cond, int deg, int ord)
Definition: CCIR.cpp:908
CCIR_T
Definition: CCIR_T.cpp:45
gnsstk::CCIR::cacheCF2
std::vector< double > cacheCF2
Cached interpolated CF2 coefficients.
Definition: CCIR.hpp:217
gnsstk::CCIR::ccir15F2
double ccir15F2(int cond, int deg, int ord)
Definition: CCIR.cpp:4020
gnsstk::CCIR::cacheHour
double cacheHour
Definition: CCIR.hpp:208
gnsstk::CCIR::ccir11F2
double ccir11F2(int cond, int deg, int ord)
Definition: CCIR.cpp:284
gnsstk::CCIR::HighSolarActIdx
@ HighSolarActIdx
Array index for low solar activity condition.
Definition: CCIR.hpp:68
gnsstk::CCIR::ccir19Fm3
double ccir19Fm3(int cond, int deg, int ord)
Definition: CCIR.cpp:8380
gnsstk::CCIR::CCIRConsts
CCIRConsts
Definition: CCIR.hpp:65
gnsstk::CCIR::ccir22F2
double ccir22F2(int cond, int deg, int ord)
Definition: CCIR.cpp:10558
gnsstk::CCIR::interpolateF2
void interpolateF2(const CommonTime &when, double effSunSpots)
Definition: CCIR.cpp:139
gnsstk::CCIR::ccir12Fm3
double ccir12Fm3(int cond, int deg, int ord)
Definition: CCIR.cpp:1842
gnsstk::CCIR::ccir20Fm3
double ccir20Fm3(int cond, int deg, int ord)
Definition: CCIR.cpp:9314
gnsstk::CCIR::LowSolarActIdx
@ LowSolarActIdx
Array index for low solar activity condition.
Definition: CCIR.hpp:67
gnsstk::CCIR::ccir16F2
double ccir16F2(int cond, int deg, int ord)
Definition: CCIR.cpp:4954
gnsstk::CCIR::cacheCM3
std::vector< double > cacheCM3
Cached interpolated Cm3 coefficients.
Definition: CCIR.hpp:219
gnsstk::CCIR::ccir12F2
double ccir12F2(int cond, int deg, int ord)
Definition: CCIR.cpp:1218
gnsstk::CCIR::ccir19F2
double ccir19F2(int cond, int deg, int ord)
Definition: CCIR.cpp:7756
gnsstk::CCIR::ccir21Fm3
double ccir21Fm3(int cond, int deg, int ord)
Definition: CCIR.cpp:10248
gnsstk::CCIR::cacheFourierGood
bool cacheFourierGood
Cache state information for Fourier data.
Definition: CCIR.hpp:223
gnsstk
For Sinex::InputHistory.
Definition: BasicFramework.cpp:50
gnsstk::CCIR::cacheFM3
std::vector< double > cacheFM3
Cached interpolated FM3 coefficients (Am3).
Definition: CCIR.hpp:215
gnsstk::CCIR::ccir20F2
double ccir20F2(int cond, int deg, int ord)
Definition: CCIR.cpp:8690
gnsstk::CCIR::cacheGood
bool cacheGood
Cache state information for interpolated (non-Fourier) data.
Definition: CCIR.hpp:221
gnsstk::CCIR::ccir16Fm3
double ccir16Fm3(int cond, int deg, int ord)
Definition: CCIR.cpp:5578
gnsstk::CCIR::ccirFm3
double ccirFm3(unsigned month, int cond, int deg, int ord)
Definition: CCIR.cpp:260
gnsstk::CCIR::ccir15Fm3
double ccir15Fm3(int cond, int deg, int ord)
Definition: CCIR.cpp:4644
gnsstk::CCIR::F2SolarActCond
@ F2SolarActCond
F2 layer solar activity conditions count.
Definition: CCIR.hpp:70
gnsstk::CCIR::FM3MaxOrder
@ FM3MaxOrder
FM3 coefficients maximum order.
Definition: CCIR.hpp:74
gnsstk::CCIR::ccir17F2
double ccir17F2(int cond, int deg, int ord)
Definition: CCIR.cpp:5888
gnsstk::CCIR::CCIR
CCIR()
Definition: CCIR.cpp:57
gnsstk::CCIR::cacheF2
std::vector< double > cacheF2
Cached interpolated F2 coefficients (AF2).
Definition: CCIR.hpp:213
gnsstk::CCIR::ccir14Fm3
double ccir14Fm3(int cond, int deg, int ord)
Definition: CCIR.cpp:3710
gnsstk::CCIR::ccir13Fm3
double ccir13Fm3(int cond, int deg, int ord)
Definition: CCIR.cpp:2776
gnsstk::CCIR::ccir18F2
double ccir18F2(int cond, int deg, int ord)
Definition: CCIR.cpp:6822
gnsstk::CCIR::FM3MaxDegree
@ FM3MaxDegree
FM3 coefficients maximum degree.
Definition: CCIR.hpp:73
gnsstk::CommonTime
Definition: CommonTime.hpp:84
gnsstk::CCIR::interpolate
void interpolate(const CommonTime &when, double effSunSpots)
Definition: CCIR.cpp:68
gnsstk::CCIR::ccir21F2
double ccir21F2(int cond, int deg, int ord)
Definition: CCIR.cpp:9624
gnsstk::CCIR::ccir17Fm3
double ccir17Fm3(int cond, int deg, int ord)
Definition: CCIR.cpp:6512
gnsstk::CCIR::cacheSunSpots
double cacheSunSpots
Definition: CCIR.hpp:211
gnsstk::CCIR::getCM3
double getCM3(unsigned degree) const
Definition: CCIR.hpp:112
gnsstk::CCIR::cacheMonth
unsigned cacheMonth
Definition: CCIR.hpp:205
gnsstk::CCIR::F2MaxDegree
@ F2MaxDegree
F2 coefficients maximum degree.
Definition: CCIR.hpp:71
gnsstk::CCIR::interpolateFm3
void interpolateFm3(const CommonTime &when, double effSunSpots)
Definition: CCIR.cpp:161
gnsstk::CCIR::ccir13F2
double ccir13F2(int cond, int deg, int ord)
Definition: CCIR.cpp:2152
gnsstk::CCIR
Definition: CCIR.hpp:59
CommonTime.hpp
example6.month
month
Definition: example6.py:65
gnsstk::CCIR::ccir14F2
double ccir14F2(int cond, int deg, int ord)
Definition: CCIR.cpp:3086
gnsstk::CCIR::F2MaxOrder
@ F2MaxOrder
F2 coefficients maximum order.
Definition: CCIR.hpp:72
gnsstk::CCIR::getCF2
double getCF2(unsigned degree) const
Definition: CCIR.hpp:97
gnsstk::CCIR::validateCache
void validateCache(const CommonTime &when, double effSunSpots)
Definition: CCIR.cpp:192
gnsstk::CCIR::fourier
void fourier(const CommonTime &when, double effSunSpots)
Definition: CCIR.cpp:81
gnsstk::CCIR::ccir18Fm3
double ccir18Fm3(int cond, int deg, int ord)
Definition: CCIR.cpp:7446


gnsstk
Author(s):
autogenerated on Wed Oct 25 2023 02:40:38