## 2 The CNES PPP-WIZARD Demonstrator
### The Network Side of the Demonstrator  
The network of stations, from which the raw data are collected, is constantly evolving. We present here the network used in June 2023. It consists of 154 stations evenly distributed around the globe (see Figure 2), from the following networks: IGS (118 stations), AUSCORS (11 stations), UNAVCO (23 stations), EUREF (2 stations). Some of the IGS stations are part of the CNES REGINA network [14]. The majority of this network is now compatible with the modernized GNSS (multi-constellations, multi-frequencies). After recovering data from the ground stations, the Orbit Determination and Time Synchronization (ODTS) software computes the corrections. This software is described in reference [15], and the method used for the computations is described in references [9; 23; 24; 25; 26] and the references therein. It is composed of several Kalman filters. A subset of filters is dedicated to various widelane bias computations, whereas a main filter performs the clock computation. The multi-frequency code and phase measurements from a GNSS satellite are modeled as follows: for a receiver obtaining the signal from a satellite \(s\) at the frequency \(f_{j}\) (and wavelength \(\lambda_{j}\)), the code and phase measurements on this frequency are given by:  
\[ \begin{split} C_{i}&=\rho_{r}^{s}+h_{r}^{s}+\gamma_ {i}e+m(E^{s})T_{Z}+b_{r,L_{i}}^{s},\\ \lambda_{i}L_{i}&=\rho_{r}^{s}+h_{r}^{s}-\gamma_{i}e +m(E^{s})T_{Z}+\lambda_{i}N_{i}^{s}+\lambda_{i}W+b_{r,L_{i}}^{s},\end{split}  \tag{1}\]  
where \(C_{i}\) is the code measurement expressed in the unit of distance, \(L_{i}\) is the carrier phase measurement expressed in the unit of cycles at the frequency \(f_{i}=c/\lambda_{i}\), \(c\) is the speed of light in vacuum, \(h_{r}^{s}=h_{r}-h^{s}\) is the clock offset between the satellite and the receiver, \(e\) is the slant ionospheric elongation at the reference frequency \(f_{1}=1575.42\) MHz (corresponding to the L1 / E1 signals), \(\gamma_{i}=f_{1}^{2}/f_{i}^{2}\), \(T_{z}\) is the zenithal wet tropospheric delay, \(m(E^{s})\) is the mapping function depending on the satellite elevation \(E^{s}\) of the satellite \(s\), \(W\) is the phase wind-up effect, and \(N_{i}^{s}\) is the carrier phase ambiguity of the signal coming from the satellite \(s\) at the frequency \(f_{i}\). The difference between the code and phase biases at the satellite  
Figure 2: The PPP-WIZARD network of stations. Red stations are part of the CNES REGINA network [14] and black stations are part of the other networks (IGS, AUSCORS, UNAVCO, and EUREF). and receiver levels on the frequency \(f_{i}\) are denoted, respectively, as \(b^{s}_{r,C_{i}}=b_{r,C_{i}}-b^{s}_{C_{i}}\) and \(b^{s}_{r,L_{j}}=b_{r,L_{i}}-b^{s}_{L_{i}}\). \(\rho^{s}_{r}\) is the geometric distance between the satellite \(s\) and the receiver \(r\) including the phase center offset correction and is computed as the scalar product between \(\mathbf{u}^{s}_{r}\), the unit-vector of the satellite-receiver line-of-sight, and \(\Delta\mathbf{p}^{s}_{r}\), the ranging vector from the receiver to the satellite:  
\[\rho^{s}_{r}=\mathbf{u}^{s}_{r}\cdot\Delta\mathbf{p}^{s}_{r}+PCO_{j}, \tag{2}\]  
with \(PCO_{j}\) being the phase center offset for the frequency \(f_{j}\). The ionosphere-free (IF) combinations between the code and phase measurements of signals at the frequencies \(f_{i}\) and \(f_{j}\) are given by:  
\[ \begin{split} C_{\text{IF},ij}&=\frac{\gamma_{j}C_{i }-\gamma_{i}C_{j}}{\gamma_{j}-\gamma_{i}}=\rho^{s}_{r}+h^{s}_{r}+m(E)T_{Z}+ \frac{\gamma_{j}b^{s}_{r,C_{i}}-\gamma_{i}b^{s}_{r,C_{j}}}{\gamma_{j}-\gamma_ {i}},\\ \lambda_{\text{IF},ij}L_{\text{IF},ij}&=\frac{ \gamma_{j}\lambda_{i}L_{i}-\gamma_{i}\lambda_{j}L_{j}}{\gamma_{j}-\gamma_{i}}= \rho^{s}_{r}+h^{s}_{r}+m(E)T_{Z}+\frac{\gamma_{j}b^{s}_{r,L_{i}}-\gamma_{i}b^{ s}_{r,L_{j}}}{\gamma_{j}-\gamma_{i}}+\frac{\gamma_{j}\lambda_{i}N^{s}_{i}- \gamma_{i}\lambda_{j}N^{s}_{j}}{\gamma_{j}-\gamma_{i}}+\frac{\gamma_{j} \lambda_{i}-\gamma_{i}\lambda_{j}}{\gamma_{j}-\gamma_{i}}W,\end{split}