NequickG icon indicating copy to clipboard operation
NequickG copied to clipboard

Issue with NequickG for altitudes under 100km

Open sevenstarknight opened this issue 5 years ago • 0 comments

The NequickG python code closely follows the European GNSS (Galileo) Open Service Ionospheric Correction Algorithm for Galileo Single Frequency Users, specifically the equations for Electron Density Computations.

Line 864 of the NequickG code computes the exponential arguments for each layer, starting with the condition: h[h < 100] = 100

This follows the documentation, however its implementation sets h values of 100 or greater for the rest of the code that follows. This means that h values less than 100 are ignored, and the electron density calculation calculates a constant density at these values. A proposed fix for this issue is to simply copy the contents of h into a different variable (i.e. m) for the exponential argument calculation. This ensures that h is unchanged in the rest of the code. Below is an example of this new logic starting at line 864:

Compute the exponential arguments for each layer

    m = h.copy()

    m[m<100] = 100



    # thickness parameter with fade out exponent for E and F1 layer

    thickF2 = self.B2bot

    thickF1 = BF1 / np.exp(10 / (1 + np.abs(m - self.hmF2)))

    thickE = BE / np.exp(10 / (1 + np.abs(m - self.hmF2)))

    

    # suppress small values in epstein layer

    diffF2 = (m - self.hmF2)

    diffF1 = (m - self.hmF1)

    diffE = (m - self.hmE)



    EpstF2 = epstein(self.AmpF2, self.hmF2, thickF2, h)

    EpstF1 = epstein(self.AmpF1, self.hmF1, thickF1, h)

    EpstE = epstein(self.AmpE, self.hmE, thickE, h)

   

    alphaF2 = diffF2 / thickF2

    alphaF1 = diffF1 / thickF1

    alphaE = diffE / thickE

This fix allows for values of h less than 100 to be calculated with the appropriate corrective terms.

Kyle Johnston & Sarah Thomas

sevenstarknight avatar May 03 '19 15:05 sevenstarknight