Ginan
Loading...
Searching...
No Matches
ionoModel.hpp File Reference

Functions

void obsIonoData (Trace &trace, Receiver &rec)
 
void obsIonoDataFromFilter (Trace &trace, ReceiverMap &receiverMap, KFState &measKFstate)
 
void filterIonosphere (Trace &trace, KFState &kfState, ReceiverMap &receiverMap, GTime time)
 Updating the ionosphere model parameters The ionosphere model should be initialized by calling 'config_ionosph_model' Ionosphere measurments from stations should be loaded using 'update_station_measr'.
 
void ionosphereSsrUpdate (Trace &trace, KFState &kfState)
 
bool queryBiasDCB (Trace &trace, KFState &kfState, SatSys Sat, string Rec, E_ObsCode code, double &bias, double &var)
 Estimate biases from Ionosphere modelling DCBs.
 
void ionexFileWrite (Trace &trace, string filename, GTime time, KFState &kfState)
 
void writeIonStec (string filename, KFState &kFstate)
 
bool configIonModel (Trace &trace)
 
int configIonModelSphhar (Trace &trace)
 configures the spherical harmonics model.
 
int configIonModelSphcap (Trace &trace)
 Initializes Spherical caps Ionosphere model The following configursation parameters are used.
 
int configIonModelBsplin (Trace &trace)
 Initializes grid map model The following configursation parameters are used.
 
int configIonModelLocal_ (Trace &trace)
 
bool ippCheckSphhar (GTime time, VectorPos &Ion_pp)
 rotates the Ionosphere piercing point time: I time of observations (to update the rotation matrix) IPP: I Ionospheric piercing point to be updated
 
bool ippCheckSphcap (GTime time, VectorPos &Ion_pp)
 transforms the Ionosphere Piercing Point and checks if it falls in area of coverage time: I time of observations (not used) IPP: I Ionospheric piercing point to be updated returns 1 if the IPP is within the area of coverage
 
bool ippCheckBsplin (GTime time, VectorPos &Ion_pp)
 checks if the Ionosphere Piercing Point falls in area of coverage time: I time of observations (not used) IPP: I Ionospheric piercing point to be updated
 
bool ippCheckLocal (GTime time, VectorPos &Ion_pp)
 Checks if the Ionosphere Piercing Point falls in area of coverage.
 
double ionModelCoef (Trace &trace, int ind, IonoObs &obs, bool slant=true)
 
double ionCoefSphhar (Trace &trace, int ind, IonoObs &obs, bool slant=true)
 Evaluates spherical harmonics basis functions int ind I obs I Ionosphere measurement struct latIPP - Latitude of Ionosphere Piercing Point lonIPP - Longitude of Ionosphere Piercing Point angIPP - Angular gain for Ionosphere Piercing Point.
 
double ionCoefSphcap (Trace &trace, int ind, IonoObs &obs, bool slant=true)
 Evaluates spherical cap harmonics basis functions int ind I Basis function number obs I Ionosphere measurement struct latIPP - Latitude of Ionosphere Piercing Point lonIPP - Longitude of Ionosphere Piercing Point angIPP - Angular gain for Ionosphere Piercing Point.
 
double ionCoefBsplin (Trace &trace, int ind, IonoObs &obs, bool slant=true)
 Evaluates B-splines basis functions int ind I Basis function number meas I Ionosphere measurement struct latIPP - Latitude of Ionosphere Piercing Point lonIPP - Longitude of Ionosphere Piercing Point angIPP - Angular gain for Ionosphere Piercing Point bool slant I state to delay gain; false: state to VTEC gain.
 
double ionCoefLocal (Trace &trace, int ind, IonoObs &obs)
 calcuates the partials of observations with respect to basis functions
 
double ionVtecSphhar (Trace &trace, GTime time, VectorPos &ionPP, int layer, double &var, KFState &kfState)
 Estimate Ionosphere VTEC using Spherical Cap Harmonic models gtime_t time I time of solutions (not useful for this one Ion_pp I Ionosphere Piercing Point layer I Layer number vari O variance of VTEC.
 
double ionVtecSphcap (Trace &trace, GTime time, VectorPos &ionPP, int layer, double &var, KFState &kfState)
 Estimate Ionosphere VTEC using Spherical Cap Harmonic models gtime_t time I time of solutions (not useful for this one Ion_pp I Ionosphere Piercing Point layer I Layer number vari O variance of VTEC.
 
double ionVtecBsplin (Trace &trace, GTime time, VectorPos &ionPP, int layer, double &var, KFState &kfState)
 Estimate Ionosphere VTEC using Ionospheric gridmaps Ion_pp I Ionosphere Piercing Point layer I Layer number vari O variance of VTEC returns: VETC at piercing point.
 
int checkSSRRegion (VectorPos &pos)
 
void ionOutputSphcal (Trace &trace, KFState &kfState)
 
void ionOutputLocal (Trace &trace, KFState &kfState)
 
double getSSRIono (Trace &trace, GTime time, Vector3d &rRec, AzEl &azel, double &var, SatSys &Sat)
 
bool getIGSSSRIono (Trace &trace, GTime time, SSRAtm &ssrAtm, Vector3d &rRec, AzEl &azel, double &iono, double &var)
 
bool getCmpSSRIono (Trace &trace, GTime time, SSRAtm &ssrAtm, Vector3d &rRec, double &iono, double &var, SatSys Sat)
 
bool configAtmosRegions (Trace &trace, ReceiverMap &receiverMap)
 

Function Documentation

◆ checkSSRRegion()

int checkSSRRegion ( VectorPos & pos)
Here is the caller graph for this function:

◆ configAtmosRegions()

bool configAtmosRegions ( Trace & trace,
ReceiverMap & receiverMap )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ configIonModel()

bool configIonModel ( Trace & trace)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ configIonModelBsplin()

int configIonModelBsplin ( Trace & trace)

Initializes grid map model The following configursation parameters are used.

  • acsConfig.ionFilterOpts.lat_center: latitude of map centre
  • acsConfig.ionFilterOpts.lon_center: longitude of map centre
  • acsConfig.ionFilterOpts.lat_width: latitude width of maps
  • acsConfig.ionFilterOpts.lon_width: longitude width of maps
  • acsConfig.ionFilterOpts.lat_res: latitude resolution of gridmap
  • acsConfig.ionFilterOpts.lon_res: longitude resolution of gridmap

- acsConfig.ionFilterOpts.layer_heights: Ionosphere layer Heights

Here is the caller graph for this function:

◆ configIonModelLocal_()

int configIonModelLocal_ ( Trace & trace)
Here is the caller graph for this function:

◆ configIonModelSphcap()

int configIonModelSphcap ( Trace & trace)

Initializes Spherical caps Ionosphere model The following configursation parameters are used.

  • acsConfig.ionoOpts.lat_center: latitude of map centre
  • acsConfig.ionoOpts.lon_center: longitude of map centre
  • acsConfig.ionoOpts.lat_width: latitude width of maps
  • acsConfig.ionoOpts.lon_width: longitude width of maps
  • acsConfig.ionoOpts.func_order: Legendre function order

- acsConfig.ionoOpts.layer_heights: Ionosphere layer Heights

Here is the call graph for this function:
Here is the caller graph for this function:

◆ configIonModelSphhar()

int configIonModelSphhar ( Trace & trace)

configures the spherical harmonics model.

Specifically it initializes: shar_valid time validity of a rotation matrix (the rotation matrix will chase the sun position) Sph_Basis_list List of ionosphere basis time: I time of observations (to update the rotation matrix) IPP: I Ionospheric piercing point to be updated

Since the spherical harmonic model has global validity, the check always return 1

Author: Ken Harima @ RMIT 29 July 2020

Here is the call graph for this function:
Here is the caller graph for this function:

◆ filterIonosphere()

void filterIonosphere ( Trace & trace,
KFState & kfState,
ReceiverMap & receiverMap,
GTime time )

Updating the ionosphere model parameters The ionosphere model should be initialized by calling 'config_ionosph_model' Ionosphere measurments from stations should be loaded using 'update_station_measr'.

todo aaron, ew..

Parameters
traceTrace to output to
kfStateFilter state
receiverMapList of pointers to stations to use
timeTime of this epoch
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getCmpSSRIono()

bool getCmpSSRIono ( Trace & trace,
GTime time,
SSRAtm & ssrAtm,
Vector3d & rRec,
double & iono,
double & var,
SatSys Sat )
Parameters
traceDebug trace
timeGPS time
ssrAtmSSR Atmospheric corrections
rRecreceiver position
ionoionoapheric delay (in TECu)
varionoapheric delay (in TECu^2)
SatSatellite
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getIGSSSRIono()

bool getIGSSSRIono ( Trace & trace,
GTime time,
SSRAtm & ssrAtm,
Vector3d & rRec,
AzEl & azel,
double & iono,
double & var )
Parameters
traceDebug trace
timetime of ionosphere correction
ssrAtmSSR atmospheric correction
rRecreceiver position
azelreceiver position
ionoIonosphere delay (in TECu)
varIonosphere variance
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getSSRIono()

double getSSRIono ( Trace & trace,
GTime time,
Vector3d & rRec,
AzEl & azel,
double & var,
SatSys & Sat )
Parameters
traceDebug trace
timetime of ionosphere correction
rRecreceiver position
azelsatellite azimut/elevation
varIonosphere variance
SatSatellite
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ionCoefBsplin()

double ionCoefBsplin ( Trace & trace,
int ind,
IonoObs & obs,
bool slant )

Evaluates B-splines basis functions int ind I Basis function number meas I Ionosphere measurement struct latIPP - Latitude of Ionosphere Piercing Point lonIPP - Longitude of Ionosphere Piercing Point angIPP - Angular gain for Ionosphere Piercing Point bool slant I state to delay gain; false: state to VTEC gain.

BSPLINE_LATINT and BSPLINE_LONINT needs to be set before calling this function

Here is the caller graph for this function:

◆ ionCoefLocal()

double ionCoefLocal ( Trace & trace,
int ind,
IonoObs & obs )

calcuates the partials of observations with respect to basis functions

Parameters
indBasis function number
obsMetadata containing piercing points
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ionCoefSphcap()

double ionCoefSphcap ( Trace & trace,
int ind,
IonoObs & obs,
bool slant )

Evaluates spherical cap harmonics basis functions int ind I Basis function number obs I Ionosphere measurement struct latIPP - Latitude of Ionosphere Piercing Point lonIPP - Longitude of Ionosphere Piercing Point angIPP - Angular gain for Ionosphere Piercing Point.

bool slant I false: output coefficient for Vtec, true: output coefficient for delay

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ionCoefSphhar()

double ionCoefSphhar ( Trace & trace,
int ind,
IonoObs & obs,
bool slant )

Evaluates spherical harmonics basis functions int ind I obs I Ionosphere measurement struct latIPP - Latitude of Ionosphere Piercing Point lonIPP - Longitude of Ionosphere Piercing Point angIPP - Angular gain for Ionosphere Piercing Point.

int slant I 0: coefficient for VTEC, 1: coefficient for STEC

Parameters
indBasis function number
obsIonospheric observation metadata
slantapply slant factor, false: coefficient for VTEC, true: coefficient for STEC
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ionexFileWrite()

void ionexFileWrite ( Trace & trace,
string filename,
GTime time,
KFState & kfState )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ionModelCoef()

double ionModelCoef ( Trace & trace,
int ind,
IonoObs & obs,
bool slant = true )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ionosphereSsrUpdate()

void ionosphereSsrUpdate ( Trace & trace,
KFState & kfState )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ionOutputLocal()

void ionOutputLocal ( Trace & trace,
KFState & kfState )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ionOutputSphcal()

void ionOutputSphcal ( Trace & trace,
KFState & kfState )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ionVtecBsplin()

double ionVtecBsplin ( Trace & trace,
GTime time,
VectorPos & ionPP,
int layer,
double & var,
KFState & kfState )

Estimate Ionosphere VTEC using Ionospheric gridmaps Ion_pp I Ionosphere Piercing Point layer I Layer number vari O variance of VTEC returns: VETC at piercing point.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ionVtecSphcap()

double ionVtecSphcap ( Trace & trace,
GTime time,
VectorPos & ionPP,
int layer,
double & var,
KFState & kfState )

Estimate Ionosphere VTEC using Spherical Cap Harmonic models gtime_t time I time of solutions (not useful for this one Ion_pp I Ionosphere Piercing Point layer I Layer number vari O variance of VTEC.

returns: VETC at piercing point

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ionVtecSphhar()

double ionVtecSphhar ( Trace & trace,
GTime time,
VectorPos & ionPP,
int layer,
double & var,
KFState & kfState )

Estimate Ionosphere VTEC using Spherical Cap Harmonic models gtime_t time I time of solutions (not useful for this one Ion_pp I Ionosphere Piercing Point layer I Layer number vari O variance of VTEC.

returns: VETC at piercing point

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ippCheckBsplin()

bool ippCheckBsplin ( GTime time,
VectorPos & Ion_pp )

checks if the Ionosphere Piercing Point falls in area of coverage time: I time of observations (not used) IPP: I Ionospheric piercing point to be updated

returns 1 if the IPP is within the area of coverage

Author: Ken Harima @ RMIT 04 August 2020

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ippCheckLocal()

bool ippCheckLocal ( GTime time,
VectorPos & ionPP )

Checks if the Ionosphere Piercing Point falls in area of coverage.

Return true if there is a region containing the IPP, false if out of coverage

Parameters
timetime of observations (not used)
ionPPIonospheric piercing point to be updated
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ippCheckSphcap()

bool ippCheckSphcap ( GTime time,
VectorPos & Ion_pp )

transforms the Ionosphere Piercing Point and checks if it falls in area of coverage time: I time of observations (not used) IPP: I Ionospheric piercing point to be updated returns 1 if the IPP is within the area of coverage

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ippCheckSphhar()

bool ippCheckSphhar ( GTime time,
VectorPos & ionPP )

rotates the Ionosphere piercing point time: I time of observations (to update the rotation matrix) IPP: I Ionospheric piercing point to be updated

Since the spherical harmonic model has global validity, the check always return 1

Author: Ken Harima @ RMIT 29 July 2020

Here is the call graph for this function:
Here is the caller graph for this function:

◆ obsIonoData()

void obsIonoData ( Trace & trace,
Receiver & rec )
Here is the call graph for this function:

◆ obsIonoDataFromFilter()

void obsIonoDataFromFilter ( Trace & trace,
ReceiverMap & receiverMap,
KFState & measKFstate )
Parameters
tracedebug trace
receiverMapList of stations containing observations for this epoch
measKFstateKalman filter object containing the ionosphere estimates
Here is the call graph for this function:
Here is the caller graph for this function:

◆ queryBiasDCB()

bool queryBiasDCB ( Trace & trace,
KFState & kfState,
SatSys Sat,
string Rec,
E_ObsCode code,
double & bias,
double & var )

Estimate biases from Ionosphere modelling DCBs.

Parameters
tracedebug trace
kfStateKalman filter to take biases from
SatGNSS Satellite
RecReceiver id
codeGNSS signal code
biasOutput bias value
varOutput bias variance
Here is the call graph for this function:
Here is the caller graph for this function:

◆ writeIonStec()

void writeIonStec ( string filename,
KFState & kFstate )
Here is the call graph for this function:
Here is the caller graph for this function: