NequickG
NequickG copied to clipboard
Issue with NequickG for altitudes under 100km
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