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 |
|
inlinenoexcept |
Default constructor, creates an invalid model for lack of parameters.
Definition at line 80 of file IonoModel.hpp.
|
inlinevirtualnoexcept |
Destructor.
Definition at line 83 of file IonoModel.hpp.
|
noexcept |
Ionosphere model constructor. Creates a valid model with satellite transmitted alpha and beta (Klobuchar) parameters provided by the user.
[in] | a | An array containing the four alpha terms. |
[in] | b | An array containing the four beta terms. |
[in] | semicircle_units | A 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.
|
noexcept |
EngAlmanac constructor. Creates a valid model from and EngAlmanac object.
[in] | engalm | An EngAlmanac object. |
Definition at line 59 of file IonoModel.cpp.
|
virtual |
Dump to contents of the model in human-readable form.
[in,out] | s | Stream to receive the output; defaults to cout |
Definition at line 209 of file IonoModel.cpp.
double gnsstk::IonoModel::getCorrection | ( | const CommonTime & | time, |
const Position & | rxgeo, | ||
double | svel, | ||
double | svaz, | ||
CarrierBand | band = CarrierBand::L1 |
||
) | const |
Get the ionospheric correction value.
[in] | time | Time of the observation. |
[in] | rxgeo | WGS84 geodetic position of the receiver. |
[in] | svel | Elevation angle between the rx and SV (degrees). |
[in] | svaz | Azimuth angle between the rx and SV (degrees). |
[in] | band | GPS frequency band the observation was made from. |
InvalidIonoModel |
Definition at line 96 of file IonoModel.cpp.
|
noexcept |
Get the raw model contents in semicircle units.
[in,out] | a | Ionospheric model alpha parameters |
[in,out] | b | Ionospheric model beta parameters |
Definition at line 194 of file IonoModel.cpp.
|
inlinenoexcept |
Return whether the model contains valid data.
Definition at line 118 of file IonoModel.hpp.
Inequality operator.
Definition at line 188 of file IonoModel.cpp.
Equality operator.
Definition at line 177 of file IonoModel.cpp.
|
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.
[in] | a | An array containing the four alpha terms. |
[in] | b | An array containing the four beta terms. |
Definition at line 73 of file IonoModel.cpp.
|
private |
Definition at line 156 of file IonoModel.hpp.
|
private |
Definition at line 157 of file IonoModel.hpp.
|
private |
Definition at line 159 of file IonoModel.hpp.