Public Member Functions | Private Attributes | List of all members
gnsstk::IonoModel Class Reference

Detailed Description

Simple model of the ionosphere ("Klobuchar"), specified in the GPS IS. It is used to compute the satellite signal ionospheric delay seen at the receiver by a single-band user.

See ICD-GPS-200, section 20.3.3.5.2.5 and Figure 20-4.

Verbatim from the above section: "It is estimated that the use of this model will provide at least a 50% reduction in the single-frequency user's RMS error due to ionospheric propagation effects. During extended operations, or for the Block IIR SVs in the Autonav mode if the CS is unable to upload the SVs, the use of this model will yield unpredictable results."

Definition at line 70 of file IonoModel.hpp.

#include <IonoModel.hpp>

Public Member Functions

virtual void dump (std::ostream &s=std::cout) const
 
double getCorrection (const CommonTime &time, const Position &rxgeo, double svel, double svaz, CarrierBand band=CarrierBand::L1) const
 
bool getModel (double a[4], double b[4]) const noexcept
 
 IonoModel () noexcept
 Default constructor, creates an invalid model for lack of parameters. More...
 
 IonoModel (const double a[4], const double b[4], const bool semicircle_units=true) noexcept
 
 IonoModel (const EngAlmanac &engalm) noexcept
 
bool isValid () const noexcept
 
 NEW_EXCEPTION_CLASS (InvalidIonoModel, gnsstk::Exception)
 
bool operator!= (const IonoModel &right) const noexcept
 Inequality operator. More...
 
bool operator== (const IonoModel &right) const noexcept
 Equality operator. More...
 
void setModel (const double a[4], const double b[4], const bool semicircle_units=true) noexcept
 
virtual ~IonoModel () noexcept
 Destructor. More...
 

Private Attributes

double alpha [4]
 
double beta [4]
 
bool valid
 

Constructor & Destructor Documentation

◆ IonoModel() [1/3]

gnsstk::IonoModel::IonoModel ( )
inlinenoexcept

Default constructor, creates an invalid model for lack of parameters.

Definition at line 80 of file IonoModel.hpp.

◆ ~IonoModel()

virtual gnsstk::IonoModel::~IonoModel ( )
inlinevirtualnoexcept

Destructor.

Definition at line 83 of file IonoModel.hpp.

◆ IonoModel() [2/3]

gnsstk::IonoModel::IonoModel ( const double  a[4],
const double  b[4],
const bool  semicircle_units = true 
)
noexcept

Ionosphere model constructor. Creates a valid model with satellite transmitted alpha and beta (Klobuchar) parameters provided by the user.

Parameters
[in]aAn array containing the four alpha terms.
[in]bAn array containing the four beta terms.
[in]semicircle_unitsA boolean indicating params are in semicircles (T, default) or radians (F). Note that the IS-GPS-200 defines the algorithm and parameters in terms of semi-circles, not radians; but that the GNSSTk for historical reasons extracts parameters from a GPS Nav message in power of inverse radians. Hence the need for the boolean flag.

Definition at line 52 of file IonoModel.cpp.

◆ IonoModel() [3/3]

gnsstk::IonoModel::IonoModel ( const EngAlmanac engalm)
noexcept

EngAlmanac constructor. Creates a valid model from and EngAlmanac object.

Parameters
[in]engalmAn EngAlmanac object.

Definition at line 59 of file IonoModel.cpp.

Member Function Documentation

◆ dump()

void gnsstk::IonoModel::dump ( std::ostream &  s = std::cout) const
virtual

Dump to contents of the model in human-readable form.

Parameters
[in,out]sStream to receive the output; defaults to cout

Definition at line 209 of file IonoModel.cpp.

◆ getCorrection()

double gnsstk::IonoModel::getCorrection ( const CommonTime time,
const Position rxgeo,
double  svel,
double  svaz,
CarrierBand  band = CarrierBand::L1 
) const

Get the ionospheric correction value.

Parameters
[in]timeTime of the observation.
[in]rxgeoWGS84 geodetic position of the receiver.
[in]svelElevation angle between the rx and SV (degrees).
[in]svazAzimuth angle between the rx and SV (degrees).
[in]bandGPS frequency band the observation was made from.
Returns
The ionospheric correction (meters).
Exceptions
InvalidIonoModel

Definition at line 96 of file IonoModel.cpp.

◆ getModel()

bool gnsstk::IonoModel::getModel ( double  a[4],
double  b[4] 
) const
noexcept

Get the raw model contents in semicircle units.

Parameters
[in,out]aIonospheric model alpha parameters
[in,out]bIonospheric model beta parameters
Returns
true if a and b were populated successfully

Definition at line 194 of file IonoModel.cpp.

◆ isValid()

bool gnsstk::IonoModel::isValid ( ) const
inlinenoexcept

Return whether the model contains valid data.

Returns
model validity

Definition at line 118 of file IonoModel.hpp.

◆ operator!=()

bool gnsstk::IonoModel::operator!= ( const IonoModel right) const
noexcept

Inequality operator.

Definition at line 188 of file IonoModel.cpp.

◆ operator==()

bool gnsstk::IonoModel::operator== ( const IonoModel right) const
noexcept

Equality operator.

Definition at line 177 of file IonoModel.cpp.

◆ setModel()

void gnsstk::IonoModel::setModel ( const double  a[4],
const double  b[4],
const bool  semicircle_units = true 
)
noexcept

Method to feed the model with satellite-transmitted alpha and beta parameters from the passed almanac. See the IS-GPS-200, 20.3.3.3.3.2.

Parameters
[in]aAn array containing the four alpha terms.
[in]bAn array containing the four beta terms.

Definition at line 73 of file IonoModel.cpp.

Member Data Documentation

◆ alpha

double gnsstk::IonoModel::alpha[4]
private

Definition at line 156 of file IonoModel.hpp.

◆ beta

double gnsstk::IonoModel::beta[4]
private

Definition at line 157 of file IonoModel.hpp.

◆ valid

bool gnsstk::IonoModel::valid
private

Definition at line 159 of file IonoModel.hpp.


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


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