Classes | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Static Private Attributes | Friends | List of all members
gnsstk::NeQuickIonoNavData Class Reference

Detailed Description

Class containing data elements unique to NeQuick ionospheric model. Design criteria:

References: [galileo:iono] [itur:iono]

Definition at line 81 of file NeQuickIonoNavData.hpp.

#include <NeQuickIonoNavData.hpp>

Inheritance diagram for gnsstk::NeQuickIonoNavData:
Inheritance graph
[legend]

Classes

class  IntegrationParameters
 Class to contain data used when integrating TEC. More...
 
class  ModelParameters
 Aggregate the model parameters as defined in section 2.5.5. More...
 

Public Member Functions

void dump (std::ostream &s, DumpDetail dl) const override
 
double getIonoCorr (const CommonTime &when, const Position &rxgeo, const Position &svgeo, CarrierBand band) const override
 
double getTEC (const CommonTime &when, const Position &rxgeo, const Position &svgeo) const
 
 NeQuickIonoNavData ()
 Initialize internal data. More...
 
bool validate () const override
 
- Public Member Functions inherited from gnsstk::IonoNavData
std::list< std::string > compare (const NavDataPtr &right) const override
 
 IonoNavData ()
 Set the messageType. More...
 
bool isSameData (const NavDataPtr &right) const override
 
virtual ~IonoNavData ()
 Obligatory virtual destructor. More...
 
- Public Member Functions inherited from gnsstk::NavData
virtual NavDataPtr clone () const =0
 Create a deep copy of this object, whatever it truly is. More...
 
virtual std::string getClassName () const
 
std::string getDumpTime (DumpDetail dl, const CommonTime &t) const
 
std::string getDumpTimeHdr (DumpDetail dl) const
 
virtual CommonTime getNearTime () const
 
std::string getSignalString () const
 
bool getSVN (const SatID &sat, const gnsstk::CommonTime &when, std::string &svn) const
 
virtual CommonTime getUserTime () const
 
 NavData ()
 Initialize internal data fields. More...
 

Static Public Member Functions

static double neExp (double x)
 
- Static Public Member Functions inherited from gnsstk::NavData
static gnsstk::SatMetaDataStoregetSatMetaDataStore ()
 Accessor for python. More...
 
static void setSatMetaDataStore (gnsstk::SatMetaDataStore *smds)
 Accessor for python. More...
 

Public Attributes

double ai [3]
 
bool idf [5]
 Ionospheric disturbance flag for regions 1-5 (0-4). More...
 
- Public Attributes inherited from gnsstk::NavData
NavMessageID signal
 Source signal identification for this navigation message data. More...
 
CommonTime timeStamp
 
std::string weekFmt
 

Protected Member Functions

double getEffIonoLevel (double modip_u) const
 
double getSED (double dist, const Position &rxgeo, const Position &svgeo, const MODIP &modip, CCIR &ccirData, const CivilTime &when, double azu) const
 
double getVED (double dist, const Position &rxgeo, const Position &svgeo, double modip_u, CCIR &ccirData, const CivilTime &when, double azu) const
 
double integrateGaussKronrod (double heightPt1, double heightPt2, const Position &rxgeo, const Position &svgeo, const MODIP &modip, double modipSta, CCIR &ccirData, const CivilTime &when, double azu, double tolerance, bool vertical, unsigned recursionLevel=0) const
 

Protected Attributes

GalileoIonoEllipsoid elModel
 
- Protected Attributes inherited from gnsstk::NavData
double msgLenSec
 

Static Private Attributes

static constexpr double DEGREE_PER_HOUR = 15.0
 Number of degrees longitude per hour. More...
 

Friends

class ::NeQuickIonoNavData_T
 

Additional Inherited Members

- Static Public Attributes inherited from gnsstk::NavData
static const GNSSTK_EXPORT std::string dumpTimeFmt
 Time format used for the dump method (Full). More...
 
static const GNSSTK_EXPORT std::string dumpTimeFmtBrief
 Time format used for the dump method (Brief). More...
 
static GNSSTK_EXPORT gnsstk::SatMetaDataStoresatMetaDataStore = nullptr
 Set this to a valid store to get PRN->SVN translations in dump(). More...
 

Constructor & Destructor Documentation

◆ NeQuickIonoNavData()

gnsstk::NeQuickIonoNavData::NeQuickIonoNavData ( )

Initialize internal data.

Definition at line 121 of file NeQuickIonoNavData.cpp.

Member Function Documentation

◆ dump()

void gnsstk::NeQuickIonoNavData::dump ( std::ostream &  s,
DumpDetail  dl 
) const
overridevirtual

Print the contents of this NeQuickIonoNavData object in a human-readable format.

Parameters
[in,out]sThe stream to write the data to.
[in]dlThe level of detail the output should contain.

Reimplemented from gnsstk::NavData.

Definition at line 129 of file NeQuickIonoNavData.cpp.

◆ getEffIonoLevel()

double gnsstk::NeQuickIonoNavData::getEffIonoLevel ( double  modip_u) const
protected
Note
I'm not dead set on making these protected or private. Someone may have a use for them as public methods down the road and move them out, but to avoid confusion by users looking through a bunch of functions they don't need, I currently only expose the top-level method. Get the effective ionization level in solar flux units.
Parameters
[in]modip_uModified dip latitude of observer.
Returns
The effective ionization level Az in solar flux units.

Definition at line 263 of file NeQuickIonoNavData.cpp.

◆ getIonoCorr()

double gnsstk::NeQuickIonoNavData::getIonoCorr ( const CommonTime when,
const Position rxgeo,
const Position svgeo,
CarrierBand  band 
) const
overridevirtual

Get the ionospheric correction in meters.

Parameters
[in]whenThe time of the observation to correct.
[in]rxgeoThe receiver's geodetic position.
[in]svgeoThe observed satellite's geodetic position.
[in]bandThe carrier band of the signal being corrected.
Returns
The ionospheric delay, in meters, on band.

Implements gnsstk::IonoNavData.

Definition at line 183 of file NeQuickIonoNavData.cpp.

◆ getSED()

double gnsstk::NeQuickIonoNavData::getSED ( double  dist,
const Position rxgeo,
const Position svgeo,
const MODIP modip,
CCIR ccirData,
const CivilTime when,
double  azu 
) const
protected

Get the electron density at a distance along a path where svgeo is not directly overhead rxgeo.

Parameters
[in]distThe height above the ellipsoid in km at which to get the electron density.
[in]rxgeoThe position of the GNSS receiver's antenna.
[in]svgeoThe position of the transmitting satellite.
[in]modipA pre-constructed MODIP object to use.
[in]ccirDataA pre-constructed CCIR object to use.
[in]whenThe time when the RF signal was received.
[in]azuEffective ionization level, in solar flux units, at the modified dip latitude of the receiver.
Returns
The electron density in TECU.

Definition at line 285 of file NeQuickIonoNavData.cpp.

◆ getTEC()

double gnsstk::NeQuickIonoNavData::getTEC ( const CommonTime when,
const Position rxgeo,
const Position svgeo 
) const

Get the total electron content between rxgeo and svgeo at the given time.

Parameters
[in]whenThe time when the RF signal was received.
[in]rxgeoThe position of the GNSS receiver's antenna.
[in]svgeoThe position of the transmitting satellite.
Returns
The total electron content in TEC units.

Definition at line 198 of file NeQuickIonoNavData.cpp.

◆ getVED()

double gnsstk::NeQuickIonoNavData::getVED ( double  dist,
const Position rxgeo,
const Position svgeo,
double  modip_u,
CCIR ccirData,
const CivilTime when,
double  azu 
) const
protected

Get the electron density at a distance along a path where svgeo is directly overhead rxgeo.

Parameters
[in]distThe height above the ellipsoid in km at which to get the electron density.
[in]rxgeoThe position of the GNSS receiver's antenna.
[in]svgeoThe position of the transmitting satellite.
[in]modip_uThe modified dip latitude in degrees for rxgeo.
[in]ccirDataA pre-constructed CCIR object to use.
[in]whenThe time when the RF signal was received.
[in]azuEffective ionization level, in solar flux units, at the modified dip latitude of the receiver.
Returns
The electron density in TECU.

Definition at line 304 of file NeQuickIonoNavData.cpp.

◆ integrateGaussKronrod()

double gnsstk::NeQuickIonoNavData::integrateGaussKronrod ( double  heightPt1,
double  heightPt2,
const Position rxgeo,
const Position svgeo,
const MODIP modip,
double  modipSta,
CCIR ccirData,
const CivilTime when,
double  azu,
double  tolerance,
bool  vertical,
unsigned  recursionLevel = 0 
) const
protected

Perform Gauss-Kronrod integration of the TEC along the ray between rxgeo and svgeo from heightPt1 to heightPt2.

Parameters
[in]heightPt1The height above the ellipsoid at which integration should start.
[in]heightPt2The height above the ellipsoid at which integration should end.
[in]rxgeoThe position of the GNSS receiver's antenna.
[in]svgeoThe position of the transmitting satellite.
[in]modipA pre-constructed MODIP object to use.
[in]modipStaThe modified dip latitude in degrees for rxgeo.
[in]ccirDataA pre-constructed CCIR object to use.
[in]whenThe time when the RF signal was received.
[in]azuEffective ionization level, in solar flux units, at the modified dip latitude of the receiver.
[in]toleranceIf the delta between K15 and G7 integration results is less than this number, integration will complete.
[in]verticalIf true, svgeo is directly overhead rxgeo and integration is simplified.
[in]recursionLevelintegrateGaussKronrod will recurse if the results are not within tolerance, up to RecursionMax (defined in cpp file) times.
Returns
The integrated TEC.
Note
This code is based on pseudocode in F.2.6.1; there are no formulae references in the document.

Definition at line 913 of file NeQuickIonoNavData.cpp.

◆ neExp()

double gnsstk::NeQuickIonoNavData::neExp ( double  x)
static

Similar to standard exp() function, but with the exponent clipped to +/- 80, per F2.1.2.3 [galileo:iono]

Parameters
[in]xThe exponent to raise e to.
Returns
e^x.

Definition at line 322 of file NeQuickIonoNavData.cpp.

◆ validate()

bool gnsstk::NeQuickIonoNavData::validate ( ) const
inlineoverridevirtual

Checks the contents of this message against known validity rules as defined in the appropriate ICD.

Todo:
implement some checking.
Returns
true if this message is valid according to ICD criteria.

Implements gnsstk::NavData.

Definition at line 92 of file NeQuickIonoNavData.hpp.

Friends And Related Function Documentation

◆ ::NeQuickIonoNavData_T

friend class ::NeQuickIonoNavData_T
friend

Definition at line 400 of file NeQuickIonoNavData.hpp.

Member Data Documentation

◆ ai

double gnsstk::NeQuickIonoNavData::ai[3]

ai terms of NeQuick model in solar flux units, solar flux units/degree, solar flux units/degree2. Refer to Galileo-OS-SIS-ICD.

Definition at line 125 of file NeQuickIonoNavData.hpp.

◆ DEGREE_PER_HOUR

constexpr double gnsstk::NeQuickIonoNavData::DEGREE_PER_HOUR = 15.0
staticconstexprprivate

Number of degrees longitude per hour.

Definition at line 398 of file NeQuickIonoNavData.hpp.

◆ elModel

GalileoIonoEllipsoid gnsstk::NeQuickIonoNavData::elModel
protected

Galileo ellipsoid model for ionospheric modeling. This is as defined in galileo:iono.

Note
This "ellipsoid" model is really a sphere, i.e. eccentricity of 0, and the equations reflect that fact. Any attempts to use non-spherical models will result in incorrect results.

Definition at line 394 of file NeQuickIonoNavData.hpp.

◆ idf

bool gnsstk::NeQuickIonoNavData::idf[5]

Ionospheric disturbance flag for regions 1-5 (0-4).

Definition at line 132 of file NeQuickIonoNavData.hpp.


The documentation for this class was generated from the following files:


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