5 SUBROUTINE orbite(xjour, longi, dist)
18 REAL xjour, longi, dist
23 REAL pir, xl, xllp, xee, xse, xlam, dlamm, anm, ranm, anv, ranv
25 pir = 4.0*atan(1.0)/180.0
30 xlam = (r_ecc/2.0+r_ecc*xee/8.0)*(1.0+xse)*sin(xllp) - &
31 xee/4.0*(0.5+xse)*sin(2.0*xllp) + r_ecc*xee/8.0*(1.0/3.0+xse)*sin(3.0* &
34 dlamm = xlam + (xjour-81.0)
38 ranv = ranm + (2.0*r_ecc-xee/4.0)*sin(ranm) + 5.0/4.0*r_ecc*r_ecc*sin(2.0* &
39 ranm) + 13.0/12.0*xee*sin(3.0*ranm)
44 dist = (1-r_ecc*r_ecc)/(1+r_ecc*cos(pir*(longi-(r_peri+180.0))))
48 SUBROUTINE angle(longi, lati, frac, muzero)
68 REAL lat, omega, lon_sun, lat_sun
72 pi_local = 4.0*atan(1.0)
73 incl = r_incl*pi_local/180.
75 lon_sun = longi*pi_local/180.0
76 lat_sun = asin(sin(lon_sun)*sin(incl))
79 lat = lati(i)*pi_local/180.0
81 IF (lat>=(pi_local/2.+lat_sun) .OR. lat<=(-pi_local/2.+lat_sun))
THEN
83 ELSE IF (lat>=(pi_local/2.-lat_sun) .OR. lat<=(-pi_local/2.-lat_sun)) &
87 omega = -tan(lat)*tan(lat_sun)
91 frac(i) = omega/pi_local
94 muzero(i) = sin(lat)*sin(lat_sun) + cos(lat)*cos(lat_sun)*sin(omega)/ &
104 SUBROUTINE zenang(longi, gmtime, pdtrad1, pdtrad2, lat, long, pmu0, frac)
135 REAL,
INTENT (IN) :: longi, gmtime, pdtrad1, pdtrad2
139 REAL gmtime1, gmtime2
140 REAL pi_local, deux_pi_local, incl
141 REAL omega1, omega2, omega
145 REAL omegadeb, omegafin
146 REAL zfrac1, zfrac2, z1_mu, z2_mu
152 pi_local = 4.0*atan(1.0)
153 deux_pi_local = 2.0*pi_local
154 incl = r_incl*pi_local/180.
156 lon_sun = longi*pi_local/180.0
157 lat_sun = asin(sin(lon_sun)*sin(incl))
159 gmtime1 = gmtime*86400. + pdtrad1
160 gmtime2 = gmtime*86400. + pdtrad2
164 latr = lat(i)*pi_local/180.
168 IF (latr>=(pi_local/2.-lat_sun) .OR. latr<=(-pi_local/2.-lat_sun))
THEN
172 IF (latr<(pi_local/2.+lat_sun) .AND. latr>(-pi_local/2.+lat_sun) .AND. &
173 latr<(pi_local/2.-lat_sun) .AND. latr>(-pi_local/2.-lat_sun))
THEN
174 omega = -tan(latr)*tan(lat_sun)
178 omega1 = gmtime1 + long(i)*86400.0/360.0
179 omega1 = omega1/86400.0*deux_pi_local
180 omega1 = mod(omega1+deux_pi_local, deux_pi_local)
181 omega1 = omega1 - pi_local
183 omega2 = gmtime2 + long(i)*86400.0/360.0
184 omega2 = omega2/86400.0*deux_pi_local
185 omega2 = mod(omega2+deux_pi_local, deux_pi_local)
186 omega2 = omega2 - pi_local
188 IF (omega1<=omega2)
THEN
190 IF (omega2<=-omega .OR. omega1>=omega .OR. omega<1e-5)
THEN
194 omegadeb = max(-omega, omega1)
195 omegafin = min(omega, omega2)
196 frac(i) = (omegafin-omegadeb)/(omega2-omega1)
197 pmu0(i) = sin(latr)*sin(lat_sun) + cos(latr)*cos(lat_sun)*(sin( &
198 omegafin)-sin(omegadeb))/(omegafin-omegadeb)
204 IF (omega1>=omega)
THEN
208 omegadeb = max(-omega, omega1)
210 zfrac1 = omegafin - omegadeb
211 z1_mu = sin(latr)*sin(lat_sun) + cos(latr)*cos(lat_sun)*(sin(omegafin &
212 )-sin(omegadeb))/(omegafin-omegadeb)
215 IF (omega2<=-omega)
THEN
220 omegafin = min(omega, omega2)
221 zfrac2 = omegafin - omegadeb
222 z2_mu = sin(latr)*sin(lat_sun) + cos(latr)*cos(lat_sun)*(sin(omegafin &
223 )-sin(omegadeb))/(omegafin-omegadeb)
227 frac(i) = (zfrac1+zfrac2)/(omega2+deux_pi_local-omega1)
228 pmu0(i) = (zfrac1*z1_mu+zfrac2*z2_mu)/max(zfrac1+zfrac2, 1.e-10)
236 SUBROUTINE zenith(longi, gmtime, lat, long, pmu0, fract)
261 REAL zpi, zpir, omega, zgmtime
262 REAL incl, lat_sun, lon_sun
266 zgmtime = gmtime*86400.
271 lat_sun = asin(sin(lon_sun)*sin(incl))
283 omega = zgmtime + long(n)*86400.0/360.0
284 omega = omega/86400.0*2.0*zpi
285 omega = mod(omega+2.0*zpi, 2.0*zpi)
287 pmu0(n) = sin(lat(n)*zpir)*sin(lat_sun) + cos(lat(n)*zpir)*cos(lat_sun)* &
289 pmu0(n) = max(pmu0(n), 0.0)
290 IF (pmu0(n)>1.e-6) fract(n) = 1.0
subroutine angle(longi, lati, frac, muzero)
subroutine zenith(longi, gmtime, lat, long, pmu0, fract)
subroutine orbite(xjour, longi, dist)
subroutine zenang(longi, gmtime, pdtrad1, pdtrad2, lat, long, pmu0, frac)