GPS-RO


 Software documentation

Model of refractive index

f_refraction2 :

f_refraction2.m | f_refraction2.c


Built a model of refractive index.
It use a satandard exponential model :


Cdry = 77,6 10-2
Rdry = 287,16

H = 7,5
input parameters :

NN : number of layer

output parameters :

n : array containing the refractive index n=[1 n1 n2 … 1]. length(n)=NN+1
r :
array containing the radius of the layers r=[r1 r2…r_Earth]
nombre_cercle :
lentgh of array r. it is equal to NN

Algorithm of raytracing

g_raytracing :

g_raytracing.m | g_raytracing.c


This algorithm of raytracing is based on 4 functions. it permits to calculate the ray from a point on the LEO to the GPS orbit. the intersections point with each layers is calculated.It uses the model of refractive index given by f_refraction2.
input parameters :

phi_L_rad : it is f L on the figure 14 of the rapport. It is the initial angle of the ray.
r_leo: it is the radius of the LEO orbite.
r_gps : it is the radius of the GPS orbite.
(xl,yl) : it is the inital position of the LEO
(r,n) : it is the parameters of the refractive index model given by the algorithm of refractive index model

output parameters :

flag : it is the parameter that say if the ray meet the atmosphere or not (flag=1 ® the ray meet the atmosphere, flag=0 ® the ray do not meet the atmosphere)
flag_touch : it is the parameter that say if the ray meet the Earth or not (flag=1 ® the ray meet the Earth, flag=0 ® the ray do not meet the atmosphere)
(X,Y) : it is the coordinates of the intersection point between the ray and the layers.
L : it is the number of intesection with the layers. The coordinates X(L),Y(L) are the intersection between the ray and the GPS orbit.
delta_t : it is the Phase in time, so it is the time of propagation of the signal to go from the GPS to the LEO with atmosphere
rt : it is the tangeant point of the ray. it is the perigee.
delta_phase : it is the exces Phase in time, so it is the time of propagation of the signal to go from the GPS to the LEO minus the time of propagation if there is not atmosphere
D j =

g_ini :

g_ini.m | g_ini.c


Calculate the first intersection of the ray from the LEO with the first upper layer.
input parameters :

phi_l_rad : it is f L on the figure 14 of the rapport. It is the initial angle of the ray.
r_leo :
it is the radius of the LEO orbite.
r1 :
it is the radius of the layer r1. in the call of this function, r1 is the upper layer.
(xl,yl) :
coordinates of the LEO on its orbit.

output parameters :

flag : it is the parameter that say if the ray meet the atmosphere or not (flag=1 ® the ray meet the atmosphere, flag=0 ® the ray do not meet the atmosphere)
(x,y) : it is the coordinates of the first intersection point of the ray with the upper layer.
angle_rad : it is a 1 on the figure 14 of the rapport
phi : it is the incident angle of the ray with the fisrt layer : f 1i on the figure 14 of the rapport

g_snell :

g_snell.m | g_snell.c


Calculate an  intersection of the ray with a lower layer.
input parameters :

angle_rad_in : it is a calculated for the previous layer
phi_in : it is the incident angle of the ray : f ji
n1,n2
: it is the refractive index for two successive layers
r1,r2 : it is the radius for two successive layers

output parameters :

flag_R :according to the parameters : refractive index, radius, incident angle. flag_R=1 ® the ray intercept the next layer, , flag_R=0 ® the ray do not intercept the next layer
x,y : it the coordinates of the intersection point with the next layer. if flag_R=0, the new coordinates are not calculated
angle_rad : it is the adition with the previous angle_rad calculated with the new calculated for the current layer
phi_prim : it is the refraction angle f jr calculated from the incident angle
phi_out : it is the next incident angle f j+1i calculated from the refraction angle f jr and the value of r1 and r2

g_snell2 :

g_snell2.m | g_snell2.c


Calculate an  intersection of the ray with aupper layer. while flag_R=1 it is the function g_snell which is used in the raytracing algorithm. when flag_R=0, it is the function g_snell2 which is used
input parameters :

angle_rad_in : it is a calculated for the previous layer
phi_in : it is the incident angle of the ray : f ji
n1,n2
: it is the refractive index for two successive layers
r1,r2 : it is the radius for two successive layers

output parameters :

flag_R :according to the parameters : refractive index, radius, incident angle. flag_R=1 ® the ray intercept the next layer, , flag_R=0 ® the ray do not intercept the next layer
x,y : it the coordinates of the intersection point with the next layer. if flag_R=0, the new coordinates are not calculated
angle_rad : it is the adition with the previous angle_rad calculated with the new calculated for the current layer
phi_prim : it is the refraction angle f jr calculated from the incident angle
phi_out : it is the next incident angle f j+1i calculated from the refraction angle f jr and the value of r1 and r2

f_delay :

f_delay.m | f_delay.c


Calculate the time of ray propagation in current layer according to the refractive index n. The ray goes from the point of coordinates (x1,y1) to the point (x2,y2). tps =

L1 = sqrt((x2-x1)^2+(y2-y1)^2);
tps = (n*L1)/c; c is the velocity of the light

input parameters

x1,y1 : coordinates of the intersectionn point with previous layer
x2,y2 : coordinates of the intersectionn point with next layer
n : refractive index for current layer

output parameters :

tps : time of ray propagation in current layer according to the refractive index n.

Algorithm of initialisation of Radio Occultation

Since we do not, for the moment, have an imposed satellite geometry, we must choose an initial position for the LEO and the GPS that will furnish an occultation, The function g_position do this job.
Normally, the position of both satellites are provided during a radio occultation
In our case, we don’t know these positions, thus we chose them.
These position correspond to the last measurement during the radio occultation (it is the ray with the nearest tangent point with the Earth).
From this initial point, we begin the occultation, we obtain a range of ray from
the lower tangeant point to the higher one. Now it is simple to consider the last ray of our simulation as the first ray of the radio occultation in real conditions.
To find the initial position, we get a random point on the LEO orbit, then we calculate the tangeant with the surface of the earth and this point using the function f_tangeant and we obtain an intersection point with the GPS orbit using the function f_interbis.
It is possible from this straight line to calculate the angle phi_l_rad = f L, then we make a raytracing while while (flag_touch = 0) and we incremante the initial angle f L=f L+D i. when
flag_touch = 1, we have the initial angle.

g_position :

g_position.m | g_position.c

f_tangeant.m | f_tangeant.c
f_interbis.m | f_interbis.c


Calculate the initial position of the Radio Occultation
input parameters

xl,yl : random point on LEO orbit
rt : radius of Earth
rg : radius of GPS orbit

output parameters :

phi_L_ini : it is the initial angle f L

Algorithm of detection

from this initial position of both satellites to simulate a radio occultation.
At each epoch of measurement of the receiver, we need to find the position of the GPS at the time when it emits the signal. It is the job of the function f_detecction2. As there is a delay of propagation D t, if the receiver measures the signal at UTC time, this signal was emitted at UTC time minus D t. We use a global time reference. The algorithm of initialisation gives the position of GPS and LEO.
The parameter te is the period of sample measurement of the LEO. The signal arriving at the LEO at time k*te was emitted at time k*te-D tk where D tk is the delay of the signal arriving at time k*te to go from the GPS to the LEO.
At each epoch i*te, we have to find the position of the GPS at the time it emitted the signal arriving at time i*te which is consistent with velocity of both spacecraft. We have functions f_orbite_LEO and f_orbite_GPS which gives the positions of the satellites given the initial position, direction, and time. The satellites are moving in orbits of opposite direction. We attribue a value to the parameter sens: sens = 1 for the positive direction and sens = 0 for the negative direction. We use two orbit propagateur functions : f_orbite_LEO and f_orbite_GPS.
In order to find the position xg1,yg1, we sweep over a range of takeoff angles at the position xl1,yl1 (we use f_LEO(xl0,yl0,te,1)=(xl1,yl1)).
We calculate for each angle the position of the ray intersecting the GPS orbit (xg1,yg1) and the corresponding time delay. We use this time delay to find the position of the GPS on its orbit at the time t1, see figure 24, by using the function f_orbite_GPS(xg0,yg0,t1,0)=( xg_out1, yg_out1). With the function f_ou, we can know if the interction is upper or lower than the real position of the GPS on its orrbit. We calculate the distance d between the point of intersection (xg1,yg1) and (xg_out1, yg_out1). We do this for each angle until the distance is less than a critereon e .When we have found the raypath wich gives a distance d <e , we consider that the signal was emitted by the GPS at the position (xg1,yg1) .

The idea to extend the algorithm in case of multipath is to sweep over a range of angles to detect more than one raypath giving the distance d<e. Several dichotomies on the initial angle are calculated in different regions.

f_detection2 :

f_detection2.m

f_orbite_gps.m
f_orbite_leo.m
f_ou.m


Calculate the raytracing of a ray from a reception position of the LEO and a universal time.
input parameters

flag :if flag=0, ray is out atmosphere
teta_inibis
: Initial angle of the dichotomy
delta_t_in : Time of ray propagation for previous ray
xl_in,yl_in : Position of LEO at reception
o_leo : It is the number o_leo of ray in global RO.
xg_ini,yg_ini : Position of GPS for previous ray
tp_leo : Time reception of LEO
r_gps : Radius of GPS orbit
(r,n) : It is the parameters of the refractive index model given by the algorithm of refractive index model
output parameters :

d : Precision distance
xg,yg : Position of GPS at the emission of the ray
teta_out : Final angle of the dichotomy
Xa,Ya : Array containing samples of the raytracing
delta_t_out : Time of ray propagation
L : Number of sample of the raytracing

Program to simulate a global Radio occultation

The program detection calculate the all ray going from the GPS to the LEO during a Radio occultation. It uses the function f_refraction2 for the model of refrractive index then the function g_position for the initialisation. finally, it uses the function f_detection2 to built the real raytracing by taking into account the motion of both satellites

detection:

detection.m

f_refraction2.m
g_position.m
g_raytracing.m
f_detection2.m


Calculate all the raytracing between GPS and LEO
input parameters

NN : Number of layers

output parameters :

X : 2-D array, each line contains x-samples of a raytracing
Y : 2-D array, each line contains y-samples of a raytracing

Program to find a multipath in a given layer for a immobile LEO

multipath:

multipath.m | multipath.c

f_refraction2.m | f_refraction2.c
g_position.m | g_position.c
g_raytracing.m | g_raytracing.c
for c program : prototype.hMakefile


Calculate the needed changing in the refractive index for a  given layer which can produce multipath according to a precision.
input parameters

NN : Number of layers
epsi : Precision in the change of refractive index finding
layer : Number of the layer for the multupath. number 1 = lower layer

output parameters :

erreur : error of the result
u : New value of the chosen layer. this new value provide a multipath in the layer according to the precision epsi

Program to calculate the all raytracing from the GPS to the immobile LEO

raymulti:

raymulti.m

f_refraction2.m
g_position.m
g_raytracing.m


The program raymulti calculate all the raytracing in the case where you have a multipath in a choosen layer.It get the change in the refractivee index by calculate this change with multipath program
input parameters

NN : Number of layers
layer : Number of the layer for the multupath. number 1 = lower layer
Nv : New value of the refractive index of the layer

output parameters :

X : 2-D array, each line contains x-samples of a raytracing
Y : 2-D array, each line contains y-samples of a raytracing

 

| Reference | Links | Research collaboration


Page last modified 27 August-1999
Mail to jh@acri.fr