If you wish to contribute or participate in the discussions about articles you are invited to contact the Editor

# Code-Carrier Divergence Effect Fundamentals
Title Code-Carrier Divergence Effect
Author(s) J. Sanz Subirana, J.M. Juan Zornoza and M. Hernández-Pajares, Technical University of Catalonia, Spain.
Year of Publication 2012

## Introduction

The time variation of the ionosphere introduces a bias in the single frequency smoothed code (Carrier-smoothing), due to the code-carrier divergence. This effect is analysed as follows: The single frequency code ($\displaystyle{ R_1) }$ and carrier ($\displaystyle{ \Phi_1 }$) measurements can be written in a simplified form as (see Combining pairs of signals and clock definition):

$\displaystyle{ \begin{array}{l} R_1=r +I_1+\varepsilon_1 \\ \Phi_1=r -I_1+B_1+\epsilon_1 \\ \end{array} \qquad \mbox{(1)} }$

where $\displaystyle{ r }$ includes all non-dispersive terms such as geometric range, satellite and receiver clock offset and tropospheric delay. $\displaystyle{ I_1 }$ represents the frequency dependent terms as the ionosphere and instrumentals delays. $\displaystyle{ B_1 }$ is the carrier phase ambiguity term, which is constant along continuous carrier phase arcs. $\displaystyle{ \varepsilon_1 }$ and $\displaystyle{ \epsilon_1 }$ account for the code and carrier thermal noise and multipath. Since the ionospheric term has opposite sign in code and carrier measurements, it does not cancel in the $\displaystyle{ R-\Phi }$ combination, but on the contrary, its effect is twofold. That is [footnotes 1]:

$\displaystyle{ R_1-\Phi_1=2I_1+B_1+ \varepsilon_1 \qquad \mbox{(2)} }$

The noisy (but unambiguous) code pseudorange measurements can be smoothed with the precise (but ambiguous) carrier phase measurements through the Hatch filter (see Carrier-smoothing):

$\displaystyle{ \begin{array}{ll} \widehat{R}(k)&= \frac{1}{n} R(k)+ \frac{n-1}{n} \left [ \widehat{R}(k-1)+ \left( \Phi(k) - \Phi(k-1) \right) \right ]=\\[0.3cm] &= \Phi(k) +\frac{n-1}{n} \left (\widehat{R}(k-1)-\Phi(k-1)\right )+ \frac{1}{n} \left( R(k)-\Phi(k) \right)=\\[0.3cm] & =\Phi(k) + \frac{n-1}{n} \lt R - \Phi\gt _{(k-1)} + \frac{1}{n} \left ( R(k) - \Phi(k) \right )=\\[0.3cm] &= \Phi(k) + \lt R - \Phi \gt _{(k)} \end{array} \qquad \mbox{(3)} }$

Substituting (2) in the Hatch filter equation (3), results:

$\displaystyle{ \widehat{R}_1(k)=\Phi_1(k) + \lt R_1-\Phi_1 \gt _{(k)}=r(k) -I_1(k) +B_1+ \langle 2I_1-B_1 \rangle_{(k)} \qquad \mbox{(4)} }$

Since the carrier ambiguity term $\displaystyle{ B_1 }$ is a constant bias and the average $\displaystyle{ \langle \cdot \rangle }$ is a linear operator, $\displaystyle{ B_1 }$ cancels in the previous equation (4), which can be re-written as (where the ionosphere is a time varying term):

$\displaystyle{ \widehat{R}_1(k)=\Phi_1(k) + \lt R_1 - \Phi_1 \gt _{(k)} = r(k) + I_1(k) + \underbrace{2 \left (\langle I_1 \rangle_{(k)} -I_1(k) \right )}_{{bias}_{I}} \qquad \mbox{(5)} }$

That is, the time varying ionosphere produces a bias in the single frequency carrier-smoothed code (code-carrier divergence effect), in such a way that the first equation of (1) becomes for the smoothed code $\displaystyle{ \widehat{R}_1 }$ as:

$\displaystyle{ \widehat{R}_1= r+I_1+bias_I+\nu_1 \qquad \mbox{(6)} }$

where $\displaystyle{ \nu_1 }$ is the noise term after the filter smoothing.

## Divergence Free smoother

With two frequency measurements, the ionospheric term can be removed from a combination of the two frequencies carriers. Thus, neglecting the carrier noise and multipath $\displaystyle{ \epsilon_1 }$ and $\displaystyle{ \epsilon_2 }$ in front to the code $\displaystyle{ \varepsilon_1 }$:

$\displaystyle{ R_1- \Phi_1-2 \tilde{\alpha}_1 (\Phi_1-\Phi_2)= B_{12}+\varepsilon_1 \qquad \mbox{(7)} }$

where

$\displaystyle{ \tilde{\alpha}_1=\frac{1}{(f_1/f_2)^2-1} }$.

Using the previous combination (7) in (3), instead of (2), a smoothed code is obtained, free from the code-carrier ionosphere divergence effect, but having the same ionospheric delay as the original unsmoothed code $\displaystyle{ R_1 }$:

$\displaystyle{ \widehat{R}_1= r+I_1+\nu_{12} \qquad \mbox{(8)} }$

where $\displaystyle{ \nu_{12} }$ is the noise after the filter smoothing.

This smoothed code is called divergence-free carrier smoothed code

To illustrate the induced bias by the time varying ionosphere divergence on the single frequency smoothed code, the C1 carrier-smoothed code is computed using the expression (2), affected by the ionosphere divergence, and (7), divergence-free. The results are depicted in figure 1, left, where the accumulated bias is shown for three different smoothing filter time lengths ($\displaystyle{ 1 }$ hour, $\displaystyle{ 6 }$ minutes and $\displaystyle{ 1 }$ minute). As it can be seen, largest time constant leads to largest biases regarding to the unsmoothed code. In the given example, this bias reaches up to more than $\displaystyle{ 1 }$ meter with the $\displaystyle{ 1 }$ hour time smoothing, and up to $\displaystyle{ 50\, cm }$ with the $\displaystyle{ 6 }$ minutes smoothing. Note that these values depend on the ionospheric activity. The ionospheric refraction associated to these figures (from shifted $\displaystyle{ \Phi_1-\Phi_2 }$ carrier phases in meters of L1 delay) is shown at the bottom left plot as reference.

The sinusoidal-like oscillations are due to the code multipath. These oscillations are smoothed by increasing the time constant, but thence, a larger ionospheric bias can be introduced for the single frequency receivers smoothing.

### Ionosphere Free smoother

The previous combination (7) uses two frequency carriers ($\displaystyle{ \Phi_1 }$ ,$\displaystyle{ \Phi_2 }$), but only a single frequency code ($\displaystyle{ R_1 }$). Using both code and carrier dual frequency measurements, it is possible to remove the frequency dependent effects[footnotes 2]

$\displaystyle{ \Phi_{_{LC}}=\frac{f_1^2\;\Phi_{_{L1}}-f_2^2\;\Phi_{_{L2}}}{f_1^2-f_2^2}~~~~~;~~~~~ R_{_{PC}}=\frac{f_1^2\;R_{_{P1}}-f_2^2\;R_{_{P2}}}{f_1^2-f_2^2} \qquad \mbox{(9)} }$

using the code and carrier ionosphere-free combinations ($\displaystyle{ R_{_{C}} }$, $\displaystyle{ \Phi_{_{C}} }$), see equation (11) in Combining pairs of signals and clock definition. Thence, the equations (1) become[footnotes 3]:

$\displaystyle{ \begin{array}{l} R_{_{C}}=r + \varepsilon_{_C}\\ \Phi_{_{C}}=r + B_{_C}+ \epsilon_{_C} \qquad \mbox{(10)} \end{array} }$

And now, using the previous ionosphere-free combinations of code and carrier, the equation (2) is now:

$\displaystyle{ R_{_{C}}-\Phi_{_{C}}=B_{_C}+\varepsilon_{_C} \qquad \mbox{(11)} }$

Applying this combination as input in the Hatch filter (3), a smoothed solution fully free of the (first order) ionosphere is computed:

$\displaystyle{ \widehat{R}_{_{C}} = r +\nu_{_{C}} \qquad \mbox{(12)} }$

where $\displaystyle{ \nu_{_{C}} }$ is the noise after the filter smoothing. This smoothed code is called (ionosphere-free) carrier smoothed code The right side of figure (1) shows the ionosphere free carrier smoothed solution computed using the same smoothing time constants as with the C1-code.

 The left hand plots corresponds to the C1-carrier smoothing using equation (1), in red (affected by the code-carrier ionosphere divergence), and equation (2), in black (divergence-free). Right hand plots show the ionosphere-free smoothed code using the equation (7). The unsmoothed measurements in green correspond to $\displaystyle{ R_{1} }$ (left) and $\displaystyle{ R_{C} }$ (right) (zoom to [35000:40000] seconds).