## 2 The CNES PPP-WIZARD Demonstrator
### The Network Side of the Demonstrator
 \tag{3}\]  
with \(\lambda_{\text{IF},ij}=\frac{\gamma_{j}\lambda_{i}-\gamma_{i}\lambda_{j}}{ \gamma_{j}-\gamma_{i}}\) being the IF wavelength. As defined in [27], the ionosphere-free clock offsets for the code and phase measurements can be formulate as:  
\[ \begin{split} h^{s}_{r,\text{IF},C_{ij}}&=h^{s}_{r }+\frac{\gamma_{j}b^{s}_{r,C_{i}}-\gamma_{i}b^{s}_{r,C_{j}}}{\gamma_{j}- \gamma_{i}},\\ h^{s}_{r,\text{IF},L_{ij}}&=h^{s}_{r}+\frac{\gamma_ {j}b^{s}_{r,L_{i}}-\gamma_{i}b^{s}_{r,L_{j}}}{\gamma_{j}-\gamma_{i}},\end{split}  \tag{4}\]  
as well as their satellite and receiver counterparts \(h^{s}_{r,\text{IF},C_{ij}}=h_{r,\text{IF},C_{ij}}-h^{s}_{\text{IF},C_{ij}}\) and \(h^{s}_{r,\text{IF},L_{ij}}=h_{r,\text{IF},L_{ij}}-h^{s}_{\text{IF},L_{ij}}\). Thanks to these IF clocks, the satellite-receiver clock offset and signal biases are transformed to:  
\[ \begin{split} h^{s}_{r}+b^{s}_{r,C_{i}}&=h^{s}_{r, \text{IF},C_{ij}}+\gamma_{i}\tau^{s}_{r,C_{ij}},\quad\tau^{s}_{r,C_{ij}}= \frac{b^{s}_{r,C_{j}}-b^{s}_{r,C_{i}}}{\gamma_{j}-\gamma_{i}},\\ h^{s}_{r}+b^{s}_{r,L_{i}}&=h^{s}_{r,\text{IF},L_{ij}}- \gamma_{i}\tau^{s}_{r,L_{ij}},\quad\tau^{s}_{r,L_{ij}}=\frac{b^{s}_{r,L_{j}}-b^ {s}_{r,L_{i}}}{\gamma_{j}-\gamma_{i}},\end{split}  \tag{5}\]  
and the code and phase measurement models can be expressed with respect to the code and phase IF clocks, respectively:  
\[ \begin{split} C_{i}&=\rho^{s}_{r}+\gamma_{i}e+m(E^{ s})T_{Z}+h^{s}_{r,\text{IF},C_{ij}}+\gamma_{i}\tau^{s}_{r,C_{ij}},\\ C_{j}&=\rho^{s}_{r}+\gamma_{j}e+m(E^{s})T_{Z}+h^{ s}_{r,\text{IF},C_{ij}}+\gamma_{j}\tau^{s}_{r,C_{ij}},\\ \lambda_{i}L_{i}&=\rho^{s}_{r}-\gamma_{i}e+m(E^{s})T _{Z}+\lambda_{i}N^{s}_{i}+\lambda_{i}W+h^{s}_{r,\text{IF},L_{ij}}-\gamma_{i} \tau^{s}_{r,L_{ij}},\\ \lambda_{j}L_{j}&=\rho^{s}_{r}-\gamma_{j}e+m(E^{s})T _{Z}+\lambda_{j}N^{s}_{j}+\lambda_{j}W+h^{s}_{r,\text{IF},L_{ij}}-\gamma_{j} \tau^{s}_{r,L_{ij}}.\end{split}  \tag{6}\]  
This model follows the IGS standards. \(\tau^{s}_{r,C_{ij}}\) plays the role of a Time Group Delay (TGD) and \(\tau^{s}_{r,L_{ij}}\) is its counterpart for the carrier-phase measurement. It is well known that the ambiguity \(N_{\text{WL},ij}=N_{i}-N_{j}\) of the widelane combination of the carrier phases \(L_{i}\) and \(L_{j}\) has a low noise level compared to the individual \(N_{i}\) and \(N_{j}\) ambiguities thanks to the larger wavelength of the widelane. In order to let this widelane ambiguity appear in the models, we compute the Melbourne-Wubbena [28; 29], combination between the signals at the frequencies \(f_{i}\) and \(f_{j}\). This combination consists of the sum of the widelane carrier phase combination and the narrowlane code combination and reads:  
\[\text{MW}(L_{i},L_{j},C_{i},C_{j})=L_{i}-L_{j}+\frac{\lambda_{i}-\lambda_{j}}{ \lambda_{i}+\lambda_{j}}\Bigg{(}\frac{C_{i}}{\lambda_{i}}+\frac{C_{j}}{\lambda_ {j}}\Bigg{)}. \tag{7}\]  
Replacing Equation (6) in Equation (7) leads to:  
\[\text{MW}(L_{i},L_{j},C_{i},C_{j})=N_{\text{WL},ij}+\mu_{r,ij}^{s}, \tag{8}\]  
where \(\mu_{r,ij}^{s}\) can be interpreted as a widelane fractional bias expressed in cycles by:  
\[\mu_{r,ij}^{s}=\Bigg{(}\frac{1}{\lambda_{i}}-\frac{1}{\lambda_{j}}\Bigg{)} \left(l_{r,\text{IF},L_{ij}}^{s}-l_{r,\text{IF},C_{ij}}^{s}\right)+\Bigg{(} \frac{\gamma_{i}}{\lambda_{i}}-\frac{\gamma_{j}}{\lambda_{j}}\Bigg{)}\Bigg{(} \tau_{r,L_{ij}}^{s}+\frac{\lambda_{i}-\lambda_{j}}{\lambda_{i}+\lambda_{j}} \tau_{r,C_{ij}}^{s}\Bigg{)}, \tag{9}\]  
which can be decomposed into its satellite and its receiver parts: \(\mu_{r,ij}^{s}=\mu_{r,ij}-\mu_{ij}^{s}\). It has been shown in [25] that for receivers in good environmental conditions, the receiver biases are generally stable over a satellite pass. It has to be noted that the receivers' and satellites' widelane phase biases can be defined modulo an integer. Therefore, this technique can only lead to the computation of fractional phase biases. Following the method described in [9; 23], a reference station is chosen and its bias is set to 0.