2.1. Mathematical Model for GPS and Galileo Integration in PPP
This section briefly summarizes the mathematical model used to integrate GPS and Galileo measurements within the RT_PPP engine, which processes dual-frequency measurements. GPS data were acquired on the L1 (1575.42 MHz) and L2 (1227.60 MHz) carriers, while Galileo observations were collected on the E1 (1575.42 MHz) and E5b (1207.14 MHz) carriers. From these measurements, ionosphere-free linear combinations were formed.
The basic equations for the ionosphere-free linear combination (L3) of pseudorange (
PR) and carrier-phase (
) measurements, expressed in meters, can be written as [
2,
16]
where
superscript Sys indicates the GNSS system (“G” for GPS and “E” for Galileo);
is the geometric distance between receiver r and satellite s;
c is the speed of light in a vacuum;
and are the clock errors for the receiver and satellite, respectively;
is the tropospheric delay;
is the satellite orbital error;
is the hardware delay for receiver r and satellite s;
is the multipath error;
is the wavelength for the iono-free combination;
is the carrier-phase ambiguity term for the iono-free combination;
is the Uncalibrated Phase Delay (UPD), encompassing satellite and receiver hardware delays and initial phase biases [
17];
and are random and unmodeled errors affecting pseudorange and phase, respectively.
The unknown parameters estimated by the PPP engine include the receiver’s coordinates , the receiver clock error (), the Zenith Wet Tropospheric Delay (), and phase ambiguities ( for each satellite at a specific band . Satellite orbits are typically treated as fixed during the adjustment, implying that any inaccuracies in the orbit data will propagate into the estimated parameters.
The total tropospheric delay,
is modeled as the sum of the Zenith Hydrostatic Delay (ZHD),
, and the Zenith Wet Delay (ZWD),
, components, projected into the satellite–receiver line-of-sight using appropriate mapping functions, as shown in (
3).
The mapping functions
and
account for the satellite elevation angle
, allowing the projection of the zenith delays into the slant path delays. In the PPP solution, the Zenith Hydrostatic Delay,
, can be derived either from empirical models (e.g., Hopfield or Saastamoinen) [
18,
19] or from numerical weather models, such as those provided by the European Centre for Medium-Range Weather Forecasts (ECMWF) [
20]. The Zenith Wet Delay is estimated as part of the adjustment process, potentially absorbing any residual hydrostatic delay not captured by the a priori model.
The linearized mathematical model relating residual observations and unknowns in the PPP approach can be expressed as
, where
denotes the mathematical expectation. It can be explicitly rewritten as
where
H denotes the Jacobian matrix and the term
is the vector of differences between observed and computed measurement values. The contribution of the terms estimated using models, such as the Zenith Hydrostatic Delay, is included in
. The vector
contains the unknown parameters. The expectation of residual errors,
, is zero, assuming the lack of biases. The additional variables involved in (
4) are as follows:
,
, and
are the partial derivatives of the basic Equations (
1) and (
2) with respect to the receiver coordinates, where
for GPS and
for Galileo;
, , and are the corrections to the receiver’s approximate coordinates ;
and are the iono-free phase ambiguities for GPS and Galileo, respectively.
The GPS receiver clock error is represented by
, and the inter-system time offset between GPS and Galileo, known as the Inter-System Bias (ISB), is denoted by
. Therefore, the Galileo receiver clock error is computed as follows:
In PPP data processing, correlations among measurements are typically ignored, and thus the Variance–Covariance Matrix (VCM) of the observations (
) is represented in diagonal form. Consequently, when applying the iono-free combination, the VCM (
) for both code and phase measurements can be expressed as:
For each satellite s, and () represent the variances of the iono-free combinations for pseudorange and phase observations, respectively. These variances are propagated from the original precision of the L1, L2, and L5 observations, along with the coefficients used to eliminate the first-order ionospheric effect.
Higher-Order Ionospheric (HOI) effects are not explicitly corrected in the PPP processing implemented here; instead, they are acknowledged as a potential source of residual error [
21,
22,
23,
24,
25].
GNSS observations can be weighted based on a function of the satellite elevation angle, such as by applying the inverse of the sine function. Alternative weighting strategies can also be employed to mitigate the impact of ionospheric scintillation or multipath effects [
5,
6,
26]. For real-time data processing, we compute the variance of the observations as follows: a user-defined (
) constant is added to the uncertainties associated with orbit (
) and clock corrections (
), weighted by the inverse sine function of the satellite elevation angle (
):
PPP data processing can be carried out using a recursive accumulative solution for static and kinematic scenarios. A discrete recursive Kalman filter is applied, incorporating correlation models to account for noise in the parameter time series, such as random walk noise for the wet troposphere component and white noise for receiver clock errors. Detailed information on stochastic processes and Kalman filter theory is extensively covered in the literature [
27,
28,
29]. Depending on the models implemented in the Kalman filter, static or kinematic processing is obtained. In this respect, it is important to note that kinematic positioning refers to the model implemented in the RT_PPP positioning engine. However, this model was applied to the processing of measurements from static stations, which allowed an effective evaluation of positioning accuracy.
The RT_PPP software integrates dual-frequency observations from the GPS and Galileo constellations: the geodetic reference frames of both systems are currently aligned with the International GNSS Service (IGS) International Terrestrial Reference Frame 2020 (ITRF2020), ensuring consistency and compatibility within the geodetic framework. The processing system has been prepared to handle Galileo-HAS corrections, ensuring that the correction components—radial, in-track, and cross-track—are accurately centred at the satellite’s iono-free antenna phase centre for both Galileo (E1, E5b) and GPS (L1 C/A, L2C) signals. When using alternative observables, Differential Code Biases (DCB) corrections must be applied to maintain compatibility [
9].
For the analysis conducted in this work, twenty months of continuous observations were processed using IGS final products. With these post-processed corrections, the RT_PPP software achieves centimeter-level accuracies. The characterization of performance achievable using real-time products is beyond the scope of this paper, and the interested reader is referred to [
14,
15] for more details on the subject.
Quality control follows the Detection, Identification, and Adaptation (DIA) paradigm. Detection evaluates the overall model using the Local Overall Model (LOM) statistic, which follows a central F-distribution with
observations and infinite degrees of freedom, expressed as
, where
represents the significance level. In this step, the null hypothesis
is tested, where
is the vector of predicted residuals at epoch
k. Under
, the expectation of the residuals is assumed to be zero. The alternative hypotheses are written in the following general form:
where
is the scalar outlier and
takes the form of a canonical unit vector
, having a one as its i-th entry and zeros elsewhere. The LOM statistic is given by
where
is the covariance matrix associated with the vector
and
T denotes transposition. If the LOM test fails, the process moves to the identification stage, where the objective is to determine which observation(s) are contaminated by model errors. In this case,
is rejected, and a search is carried out among the set of alternative hypotheses,
with
. The identification step is commonly performed using Baarda’s data snooping test [
30,
31,
32], where the statistic
is constructed as
Two possible outcomes can be distinguished: (i) one of the hypotheses, say , is confidently identified as the source of error; (ii) none can be reliably identified, resulting in a lack of decision. It is important to note the difference between the recursive (Kalman filter) implementation used here and the classical batch DIA approach. In the recursive case, and are epoch-wise predicted residuals and their covariance, respectively. In the batch DIA formulation, the misclosure vector and its co-factor matrix represent the residuals and covariance matrix over the entire adjustment. Despite this difference, the statistical principle of detecting and identifying model errors remains analogous in both frameworks.
Finally, in the adaptation stage, the Kalman filter is updated to account for the detected model error, thereby ensuring the robustness of the estimation process [
33,
34]. The positioning engine also incorporates essential corrections for high-precision PPP, including absolute Phase Center Variation (PCV), phase wind-up, Ocean Tide Loading (OTL), Earth Body Tides (EBTs), and cycle slip detection. The system supports orbit and clock corrections in either SP3 format or State Space Representation (SSR) for real-time applications.
The next section outlines the experimental procedures employed in our investigation.
2.2. Experimental Setup and Data Selection Procedures
To conduct the experiments, we selected seven stations situated in distinct global regions, representing geomagnetic low, medium, and high latitudes (see
Figure 1). The dataset encompasses twenty months of continuous data, spanning from January 2023 to August 2024. This period coincides with the recent peak of solar activity during Solar Cycle 25.
The stations ALGO, NYA1, YKRO, CUT0, and SYOG are part of the IGS network, which provides high-quality GNSS data for global geodetic and geophysical research. In contrast, the stations PPTE and PRU2 are associated with the Brazilian National Institutes of Science and Technology (INCT) GNSS-NavAer project, which focuses on studying atmospheric effects—particularly ionospheric scintillation—to enhance GNSS-based positioning, navigation, and aeronautical applications in the region.
Using dedicated Python scripts, it was possible to automatically download and process observations stored in Receiver INdependent EXchange (RINEX) format from these stations. While RINEX data allow for the analysis of positioning results, they are not suitable for easily detecting ionospheric scintillation events. For this reason, additional data from the PRU2 station were used. This station, which is directly managed by the UNESP-Brazil, is located (Lat.: ∼−22°; Lon.: ∼−51°) near the crest of the Equatorial Ionization Anomaly (EIA) and equipped with a Septentrio PolaRxS receiver that provides scintillation indices. This allowed us to identify quiet and disturbed ionospheric conditions. The Equatorial Ionization Anomaly is characterized by two bands of enhanced electron density around 10°–20° geomagnetic latitude, resulting from the fountain effect, where plasma rises at the equator and descends along geomagnetic field lines, creating pronounced latitudinal TEC gradients. PPTE was considered for the long-term analysis presented in this work and is located near to PRU2. For this reason, data from PRU2 are used only for the identification and analysis of strong ionospheric events, and their long-term analysis is not provided in order to avoid the repetition of results similar to those of PPTE.
For data processing, we used precise orbit and clock products, along with DCB corrections. Primarily, orbital products from the European Space Agency (ESA) (
https://gssc.esa.int, accessed on 30 January 2025) were applied; however, when ESA data were unavailable, our PPP processing engine automatically retrieved alternative products from the MGEX database (
https://igs.org/mgex, accessed on 30 January 2025).
Regarding the troposphere parameter, the ZHD and ZWD were computed using the Saastamoinen model, with GPT2w [
20] providing the a priori meteorological parameters. The ZWD residual was modeled as a random walk process and estimated with a noise level of 5 mm/
. The Global Mapping Function (GMF) was applied as the mapping function.
Table 1 presents the configuration parameters used in this study. The use of dedicated Python (version 3.11) scripts for data retrieval enabled the processing of the entire data period from January 2023 to August 2024.
The coordinates estimated using RT_PPP were compared to the daily coordinates provided by the National Geodetic Laboratory (NGL), which are derived using the GipsyX (version 1.0/IGS14/Repro3.0) software [
35]. For this comparison, we converted the NGL solution from ITRF14 to ITRF20 using the parameters provided by IERS/ITRF. The Root Mean Square Error (RMSE) was used as the primary metric for evaluating accuracy. Additionally, we assessed other estimated parameters, including tropospheric delay and residuals, among others. The following sections present the results and analyses.