1 | SUBROUTINE fxyhyp( clat, rlatu,yprimu , rlatv,yprimv , |
---|
2 | * rlatu1 ,yprimu1, rlatu2,yprimu2 ) |
---|
3 | c |
---|
4 | IMPLICIT NONE |
---|
5 | c ----------------------- |
---|
6 | c Auteur : P. Le Van |
---|
7 | c ----------------------- |
---|
8 | c |
---|
9 | c .. Objet : Calcul d'une fonction f(y) ayant pour derivee une tangente |
---|
10 | c hyperbolique , donc des ordonnees y de la grille horizontale , |
---|
11 | c ainsi que ses derivees yprim , utlisees dans Inigeom . |
---|
12 | c |
---|
13 | c |
---|
14 | c .... rlatu = fxyhyp ( j ) avec 1 <= j <= jjm + 1 |
---|
15 | c .... rlatv = fxyhyp ( j + 0.5 ) avec 1 <= j <= jjm |
---|
16 | c .... rlatu1 = fxyhyp ( j + 0.25 ) avec 1 <= j <= jjm |
---|
17 | c .... rlatu2 = fxyhyp ( j + 0.75 ) avec 1 <= j <= jjm |
---|
18 | c |
---|
19 | |
---|
20 | INTEGER nmax |
---|
21 | PARAMETER ( nmax = 100 000 ) |
---|
22 | c |
---|
23 | #include "dimensions.h" |
---|
24 | #include "paramet.h" |
---|
25 | #include "comconst.h" |
---|
26 | c |
---|
27 | c ................. Arguments ................................ |
---|
28 | c |
---|
29 | c clat est (en degres) la latitude du centre du zoom : arg. d'entree |
---|
30 | c Les autres arguments sont des argum. de sortie |
---|
31 | c |
---|
32 | REAL clat |
---|
33 | REAL rlatu(jjp1),rlatv(jjm),yprimu(jjp1),yprimv(jjm) |
---|
34 | REAL rlatu1(jjm),yprimu1(jjm),rlatu2(jjm),yprimu2(jjm) |
---|
35 | c |
---|
36 | c ................................................................. |
---|
37 | c |
---|
38 | c ...... . Variables locales ......... |
---|
39 | c |
---|
40 | REAL yprim( 0:nmax ),yi( 0:nmax ),yf( 0:nmax ) |
---|
41 | REAL yyy(0:nmax) |
---|
42 | REAL delta,den,eps,phij,pijjm,pis2,pis2pyo,pism,psi,psi0 |
---|
43 | REAL rappis2,unpdel,y,yint,yj,yo,yo1,yppp,ypr |
---|
44 | REAL yprimin,pisnmax,ydeg |
---|
45 | INTEGER i,j,it,iter |
---|
46 | c |
---|
47 | c |
---|
48 | c ------------------------------------------------------------------------- |
---|
49 | |
---|
50 | c On veut calculer y(Y) et y'(Y) , avec Y ,latitude de travail =f(j), |
---|
51 | c et y , latitude vraie . |
---|
52 | c |
---|
53 | c Pour cela ,on se donne pour Y'(y) une fonction hyperbolique calculee |
---|
54 | c sur ( 1+ nmax ) points ( plus nmax est grand, plus la precision pour |
---|
55 | c y(Y) sera grande ) , on integre Y'(y) sur ces ( 1+nmax) pts pour |
---|
56 | c obtenir Y(y) apres normalisation , puis on aura y(Y) en resolvant |
---|
57 | c l'equation Y(yj) = Yj par Newton_Raphson , avec Yj = f(j) = |
---|
58 | c pi/2 + pi/jjm ( 1.- j) pour les scalaires ( j =1, jjm+1 ) |
---|
59 | c On en tire donc yj qui correspond a la ligne j . |
---|
60 | c On a ensuite pour les derivees : y'(Y) = 1./ Y'(y) * ( pi/ jjm ) |
---|
61 | c |
---|
62 | c On calculera y(Y) et y'(Y) successivement aux latitudes de U |
---|
63 | c , V , U + 0.25 , U + 0.75 . |
---|
64 | c |
---|
65 | c Notations ; |
---|
66 | c ------------- |
---|
67 | c yi represente les nmax+1 latitudes de depart ( -pi/2 a pi/2 ) |
---|
68 | c yyy(nmax) repres. l'integrale de Y'(y) de - pi/2 a pi/2 |
---|
69 | c yprim represente Y'(y) |
---|
70 | c yf represente Y (y) |
---|
71 | c |
---|
72 | c yo represente la latitude du centre du zoom |
---|
73 | c delta represente la demi largeur du zoom |
---|
74 | c |
---|
75 | c |
---|
76 | c N.B : La fonction hyperbolique Y'(y) est definie comme suit : |
---|
77 | c ------ |
---|
78 | c |
---|
79 | c Y' = TANH ( ( psio - psi )/psi*(1- psi) ) avec : |
---|
80 | c |
---|
81 | c psi = ( y - yo ) / ( pi/2 - yo ) si yo < y < pi/2 |
---|
82 | c psi = (yo - y )/ ( pi/2 + yo ) si - pi/2 < y < yo |
---|
83 | c |
---|
84 | c |
---|
85 | c .... yo represente la latitude du centre du zoom ..... |
---|
86 | c |
---|
87 | c .... psi0 et delta sont des parametres variant entre 0 et 1 .... |
---|
88 | c---------------------------------------------------------------------- |
---|
89 | c |
---|
90 | cc psi0 = 0.3 et delta = 0.5 sont les valeurs qui conviennent |
---|
91 | c pour *** iim = 96 et jjm = 72 *** , d'apres des tests sur |
---|
92 | c les valeurs du Laplacien itere ( 2 fois) , analytiques et cal- |
---|
93 | c culees. Pour d'autres valeurs de iim et jjm , on peut tester |
---|
94 | c les nouvelles valeurs de psi0 et delta en lancant testfxyhyp . |
---|
95 | c |
---|
96 | c ---------------------------------------------------------------------- |
---|
97 | c Fxyhp est appele par inigeom a la place de fxynew ( fonction |
---|
98 | c a derivee sinusoidale ) si la variable logique fxyhypb , lue par |
---|
99 | c defrun_new est . TRUE. . |
---|
100 | c ---------------------------------------------------------------------- |
---|
101 | c |
---|
102 | |
---|
103 | pi = 2.*ASIN( 1. ) |
---|
104 | pis2 = pi/2. |
---|
105 | yo = clat * pi/180. |
---|
106 | psi0 = 0.3 |
---|
107 | delta = 0.5 |
---|
108 | unpdel = 1. + delta |
---|
109 | eps = .1e-7 |
---|
110 | c |
---|
111 | PRINT *,' ----------------------------------------------------' |
---|
112 | PRINT 1, psi0,delta,clat |
---|
113 | PRINT *,' ----------------------------------------------------' |
---|
114 | |
---|
115 | pisnmax = pi/FLOAT(nmax) |
---|
116 | yi(0) = - pis2 |
---|
117 | |
---|
118 | DO i = 1, nmax |
---|
119 | yi(i)= - pis2 + FLOAT(i)*pisnmax |
---|
120 | ENDDO |
---|
121 | |
---|
122 | yyy(0)= 0. |
---|
123 | |
---|
124 | c |
---|
125 | c *************************************************************** |
---|
126 | c ************ Cas ou yo < 0. ******************** |
---|
127 | c *************************************************************** |
---|
128 | c |
---|
129 | IF( yo.LT. 0. ) THEN |
---|
130 | c |
---|
131 | pis2pyo = - pis2 + yo |
---|
132 | rappis2 = ( -pis2-yo)/pis2pyo |
---|
133 | rappis2 = rappis2 * rappis2 |
---|
134 | c |
---|
135 | DO 5 i = 1, nmax |
---|
136 | |
---|
137 | y = 0.5 * ( yi(i)+ yi(i-1) ) |
---|
138 | IF( y.LT.- pis2.OR.y.GT.pis2 ) STOP 0 |
---|
139 | |
---|
140 | IF(y.GT.yo) THEN |
---|
141 | psi = (y-yo)/(pis2-yo) |
---|
142 | ypr = TANH( (psi0 -psi)/(psi*(1.-psi)) ) |
---|
143 | |
---|
144 | ELSE |
---|
145 | psi = (yo-y)/(pis2+yo) |
---|
146 | ypr = 1.-rappis2 + rappis2* TANH ( (psi0 -psi)/(psi*(1.-psi)) ) |
---|
147 | ENDIF |
---|
148 | |
---|
149 | yyy(i)= yyy(i-1)+ ypr*(yi(i)-yi(i-1)) |
---|
150 | |
---|
151 | 5 CONTINUE |
---|
152 | |
---|
153 | den = unpdel + yyy(nmax)/pi |
---|
154 | |
---|
155 | yyy(0)= 0. |
---|
156 | yf(0) = - pis2 |
---|
157 | |
---|
158 | yprim(nmax) = -1. |
---|
159 | yprim(0) = 1.- rappis2 - rappis2 |
---|
160 | |
---|
161 | DO 12 i = 0 ,nmax |
---|
162 | y = yi(i) |
---|
163 | IF(y.LT.-pis2.OR.y.GT.pis2) STOP 1 |
---|
164 | |
---|
165 | IF(y.LT.yo) THEN |
---|
166 | psi = (yo -y)/(pis2+yo) |
---|
167 | IF(i.NE.0.AND.i.NE.nmax) THEN |
---|
168 | yprim(i) = 1.- rappis2 + rappis2 |
---|
169 | * * TANH( (psi0 -psi)/(psi*(1.-psi)) ) |
---|
170 | ENDIF |
---|
171 | ELSE |
---|
172 | psi = (y-yo)/(pis2-yo) |
---|
173 | IF(i.NE.0.AND.i.NE.nmax) THEN |
---|
174 | yprim(i) = TANH( (psi0 -psi)/(psi*(1.-psi)) ) |
---|
175 | ENDIF |
---|
176 | ENDIF |
---|
177 | |
---|
178 | c |
---|
179 | c ..................................................... |
---|
180 | c ....... Normalisation de Y'(y) et de Y(y) ..... |
---|
181 | c ..................................................... |
---|
182 | c |
---|
183 | yprim(i)= ( yprim(i)+ unpdel )/ den |
---|
184 | yf(i)= (yyy(i)+ unpdel*( yi(i)+ pis2))/ den - pis2 |
---|
185 | c |
---|
186 | 12 CONTINUE |
---|
187 | c |
---|
188 | ELSE |
---|
189 | c |
---|
190 | c ************************************************************** |
---|
191 | c ********** Cas ou yo >= 0 . ************** |
---|
192 | c ************************************************************** |
---|
193 | c |
---|
194 | pis2pyo = pis2 + yo |
---|
195 | rappis2 = ( pis2 - yo )/pis2pyo |
---|
196 | rappis2 = rappis2 * rappis2 |
---|
197 | c |
---|
198 | |
---|
199 | DO 13 i = 1, nmax |
---|
200 | y= 0.5 * ( yi(i)+ yi(i-1) ) |
---|
201 | IF(y.LT.- pis2.OR.y.GT.pis2) STOP 2 |
---|
202 | |
---|
203 | IF(y.LT.yo) THEN |
---|
204 | psi = (yo -y)/(pis2+yo) |
---|
205 | ypr = TANH( (psi0 - psi)/(psi*(1.-psi)) ) |
---|
206 | |
---|
207 | ELSE |
---|
208 | psi = (y- yo)/(pis2-yo) |
---|
209 | ypr = 1.-rappis2 + rappis2* TANH ( (psi0 -psi)/(psi*(1.-psi)) ) |
---|
210 | |
---|
211 | ENDIF |
---|
212 | |
---|
213 | yyy(i)= yyy(i-1)+ ypr*(yi(i)-yi(i-1)) |
---|
214 | |
---|
215 | 13 CONTINUE |
---|
216 | |
---|
217 | den = unpdel + yyy(nmax)/pi |
---|
218 | |
---|
219 | yyy(0)= 0. |
---|
220 | yf(0) = -pis2 |
---|
221 | |
---|
222 | yprim(0) = -1. |
---|
223 | yprim(nmax)= 1.- rappis2 - rappis2 |
---|
224 | |
---|
225 | DO 15 i = 0,nmax |
---|
226 | y = yi(i) |
---|
227 | IF(y.LT.-pis2.OR.y.GT.pis2) STOP 3 |
---|
228 | |
---|
229 | IF(y.LT.yo) THEN |
---|
230 | psi = (yo -y)/(pis2+yo) |
---|
231 | IF(i.NE.0.AND.i.NE.nmax) |
---|
232 | * yprim(i) = TANH( (psi0 -psi)/(psi*(1.-psi)) ) |
---|
233 | ELSE |
---|
234 | psi = (y- yo)/(pis2-yo) |
---|
235 | IF(i.NE.0.AND.i.NE.nmax) |
---|
236 | * yprim(i) = 1.- rappis2 + rappis2 |
---|
237 | * * TANH( (psi0 -psi)/(psi*(1.-psi)) ) |
---|
238 | ENDIF |
---|
239 | c ..................................................... |
---|
240 | c |
---|
241 | c ....... Normalisation de Y'(y) et de Y(y) ..... |
---|
242 | c ..................................................... |
---|
243 | c |
---|
244 | yprim(i)= ( yprim(i)+ unpdel )/ den |
---|
245 | yf(i)= (yyy(i)+ unpdel*( yi(i)+ pis2))/ den - pis2 |
---|
246 | |
---|
247 | 15 CONTINUE |
---|
248 | |
---|
249 | ENDIF |
---|
250 | c |
---|
251 | c *************************************************************** |
---|
252 | |
---|
253 | yf(0) = - pis2 |
---|
254 | yf(nmax)= pis2 |
---|
255 | |
---|
256 | pijjm = pi/FLOAT(jjm) |
---|
257 | |
---|
258 | c ............................................................... |
---|
259 | c |
---|
260 | c Calculs de y(Y) et y'(Y) pour les latitudes de U ..... |
---|
261 | c |
---|
262 | PRINT *,' ***************************** ' |
---|
263 | PRINT *,' *** Calcul de rlatu ***** ' |
---|
264 | PRINT *,' ***************************** ' |
---|
265 | c |
---|
266 | c ............................................................... |
---|
267 | c |
---|
268 | PRINT *,' *** j rlatu yprimu **** ' |
---|
269 | c |
---|
270 | DO 1500 j=1, jjm +1 |
---|
271 | |
---|
272 | phij = pis2 + pijjm* ( 1.-Float(j) ) |
---|
273 | yo1 = 0. |
---|
274 | yj = yo1 |
---|
275 | c |
---|
276 | DO 500 iter = 1,300 |
---|
277 | |
---|
278 | DO 250 it = nmax,0,-1 |
---|
279 | IF( yj.GE.yi(it)) GO TO 350 |
---|
280 | 250 CONTINUE |
---|
281 | |
---|
282 | it= 0 |
---|
283 | yj = yi(it) |
---|
284 | |
---|
285 | 350 CONTINUE |
---|
286 | IF(it.EQ.nmax) THEN |
---|
287 | yint = yf(nmax) |
---|
288 | yprimin = yprim(nmax) |
---|
289 | ELSE |
---|
290 | c ................................................................. |
---|
291 | c .... Interpolation entre yi(it) et yi(it+1) pour avoir Y(yj) |
---|
292 | c ..... et Y'(yj) ..... |
---|
293 | c ................................................................. |
---|
294 | yint = (yf(it+1)-yf(it))/(yi(it+1)-yi(it))* ( yj-yi(it) ) + |
---|
295 | + yf(it) |
---|
296 | yprimin=(yprim(it+1)-yprim(it))/(yi(it+1)-yi(it))* ( yj-yi(it) ) + |
---|
297 | + yprim(it) |
---|
298 | ENDIF |
---|
299 | yj = yj - (yint-phij)/yprimin |
---|
300 | |
---|
301 | IF( ABS(yj-yo1).LE.eps) GO TO 550 |
---|
302 | yo1 = yj |
---|
303 | c |
---|
304 | 500 CONTINUE |
---|
305 | PRINT *,' *** PAS DE SOLUTION **** ',j,phij |
---|
306 | STOP 4 |
---|
307 | 550 CONTINUE |
---|
308 | ydeg = yj * 180./pi |
---|
309 | rlatu(j) = yj |
---|
310 | IF(j.EQ.1) rlatu(j) = pis2 |
---|
311 | c |
---|
312 | c ..... calcul de yprimu ..... |
---|
313 | c |
---|
314 | |
---|
315 | IF(j.EQ.1.OR.j.EQ.jjm +1) GO TO 1500 |
---|
316 | IF(yj.LT.yo) THEN |
---|
317 | psi = (yo -yj)/(pis2+yo) |
---|
318 | ELSE |
---|
319 | psi = (yj-yo)/(pis2-yo) |
---|
320 | ENDIF |
---|
321 | |
---|
322 | DO it = nmax,0,-1 |
---|
323 | IF( yj.GE.yi(it)) GO TO 555 |
---|
324 | ENDDO |
---|
325 | 555 CONTINUE |
---|
326 | IF(it.EQ.nmax) THEN |
---|
327 | PRINT *,' IT = nmax Pbs ..',it,j |
---|
328 | STOP 5 |
---|
329 | ENDIF |
---|
330 | yppp=(yprim(it+1)-yprim(it))/(yi(it+1)-yi(it))*(yj-yi(it)) + |
---|
331 | * yprim(it) |
---|
332 | yprimu(j) = pijjm/yppp |
---|
333 | c |
---|
334 | PRINT 3000,j,ydeg,yprimu(j) |
---|
335 | 1500 CONTINUE |
---|
336 | rlatu(1) = pis2 |
---|
337 | rlatu(jjm+1) = - pis2 |
---|
338 | c |
---|
339 | c ............................................. |
---|
340 | c |
---|
341 | c ..... Calculs pour rlatv et yprimv ..... |
---|
342 | c ............................................. |
---|
343 | c |
---|
344 | |
---|
345 | PRINT *,' ***************************** ' |
---|
346 | PRINT *,' **** Calcul de rlatv ***** ' |
---|
347 | PRINT *,' ***************************** ' |
---|
348 | PRINT *,' *** j rlatv yprimv **** ' |
---|
349 | |
---|
350 | DO 1600 j=1, jjm |
---|
351 | |
---|
352 | phij = pis2+ pijjm*(1.-(FLOAT(j)+0.5)) |
---|
353 | yo1 = 0. |
---|
354 | yj = yo1 |
---|
355 | |
---|
356 | DO 1550 iter =1,300 |
---|
357 | |
---|
358 | DO 1520 it = nmax,0,-1 |
---|
359 | IF( yj.GE.yi(it)) GO TO 1530 |
---|
360 | 1520 CONTINUE |
---|
361 | c |
---|
362 | it = 0 |
---|
363 | yj = yi(it) |
---|
364 | 1530 CONTINUE |
---|
365 | IF(it.EQ.nmax) THEN |
---|
366 | yint = yf(nmax) |
---|
367 | yprimin = yprim(nmax) |
---|
368 | ELSE |
---|
369 | yint= (yf(it+1)-yf(it))/(yi(it+1)-yi(it)) * ( yj-yi(it) ) + |
---|
370 | + yf(it) |
---|
371 | yprimin=(yprim(it+1)-yprim(it))/(yi(it+1)-yi(it))* ( yj-yi(it) ) + |
---|
372 | + yprim(it) |
---|
373 | ENDIF |
---|
374 | yj = yj - (yint-phij)/yprimin |
---|
375 | |
---|
376 | IF( ABS(yj-yo1).LE.eps ) GO TO 1560 |
---|
377 | yo1 = yj |
---|
378 | c |
---|
379 | 1550 CONTINUE |
---|
380 | PRINT *,' *** PAS DE SOLUTION *** ',j,phij |
---|
381 | 1560 CONTINUE |
---|
382 | ydeg = yj * 180./pi |
---|
383 | rlatv(j)= yj |
---|
384 | c |
---|
385 | c ..... calcul de yprimv ..... |
---|
386 | c |
---|
387 | IF(yj.LT.-pis2.OR.yj.GT.pis2) STOP 6 |
---|
388 | |
---|
389 | IF(yj.LT.yo) THEN |
---|
390 | psi = (yo -yj)/(pis2+yo) |
---|
391 | ELSE |
---|
392 | psi = (yj-yo)/(pis2-yo) |
---|
393 | ENDIF |
---|
394 | DO it = nmax,0,-1 |
---|
395 | IF( yj.GE.yi(it)) GO TO 1570 |
---|
396 | ENDDO |
---|
397 | 1570 CONTINUE |
---|
398 | IF(it.EQ.nmax) THEN |
---|
399 | PRINT *,' IT = nmax Pbs ..',it,j |
---|
400 | STOP 7 |
---|
401 | ENDIF |
---|
402 | yppp = (yprim(it+1)-yprim(it))/(yi(it+1)-yi(it))*(yj-yi(it)) + |
---|
403 | * yprim(it) |
---|
404 | yprimv(j)= pijjm/ yppp |
---|
405 | c |
---|
406 | PRINT 3000,j,ydeg,yprimv(j) |
---|
407 | |
---|
408 | 1600 CONTINUE |
---|
409 | |
---|
410 | c |
---|
411 | c .................................................. |
---|
412 | c |
---|
413 | PRINT *,' ************************************ ' |
---|
414 | PRINT *,' **** Calcul pour f( j + 0.25 ) **** ' |
---|
415 | PRINT *,' ************************************ ' |
---|
416 | PRINT *,' *** j rlatu1 yprimu1 **** ' |
---|
417 | c |
---|
418 | c .................................................. |
---|
419 | c |
---|
420 | DO 1800 j=1, jjm |
---|
421 | |
---|
422 | phij = pis2+ pijjm*( 1.- (FLOAT(j) + 0.25) ) |
---|
423 | yo1 = 0. |
---|
424 | yj = yo1 |
---|
425 | C |
---|
426 | |
---|
427 | DO 1620 iter = 1, 500 |
---|
428 | |
---|
429 | DO 1610 it = nmax,0,-1 |
---|
430 | IF( yj.GE.yi(it)) GO TO 1615 |
---|
431 | 1610 CONTINUE |
---|
432 | c |
---|
433 | it = 0 |
---|
434 | yj = yi(it) |
---|
435 | 1615 CONTINUE |
---|
436 | IF(it.EQ.nmax) THEN |
---|
437 | yint = yf(nmax) |
---|
438 | yprimin = yprim(nmax) |
---|
439 | ELSE |
---|
440 | yint= (yf(it+1)-yf(it))/(yi(it+1)-yi(it))*(yj-yi(it))+ |
---|
441 | * yf(it) |
---|
442 | yprimin=(yprim(it+1)-yprim(it))/(yi(it+1)-yi(it))*(yj-yi(it))+ |
---|
443 | * yprim(it) |
---|
444 | ENDIF |
---|
445 | yj = yj - (yint-phij)/yprimin |
---|
446 | c IF( (- pis2-yj)*(yj- pis2 ).LT.0.)PRINT *,' Newton hors limites' |
---|
447 | |
---|
448 | IF( ABS(yj-yo1).LE.eps ) GO TO 1625 |
---|
449 | yo1 = yj |
---|
450 | c |
---|
451 | 1620 CONTINUE |
---|
452 | PRINT *,' *** PAS DE SOLUTION **** ',j,phij |
---|
453 | 1625 CONTINUE |
---|
454 | ydeg = yj * 180./pi |
---|
455 | rlatu1(j)= yj |
---|
456 | c |
---|
457 | c ..... calcul de yprimu1 ..... |
---|
458 | c |
---|
459 | IF( yj.LT.-pis2.OR.yj.GT.pis2 ) STOP 8 |
---|
460 | c |
---|
461 | IF(yj.LT.yo) THEN |
---|
462 | psi = (yo -yj)/(pis2+yo) |
---|
463 | ELSE |
---|
464 | psi = (yj-yo)/(pis2-yo) |
---|
465 | ENDIF |
---|
466 | DO it = nmax,0,-1 |
---|
467 | IF( yj.GE.yi(it)) GO TO 1630 |
---|
468 | ENDDO |
---|
469 | 1630 CONTINUE |
---|
470 | IF(it.EQ.nmax) THEN |
---|
471 | PRINT *,' IT = nmax Pbs ..',it,j |
---|
472 | STOP 9 |
---|
473 | ENDIF |
---|
474 | yppp = (yprim(it+1)-yprim(it))/(yi(it+1)-yi(it))*(yj-yi(it)) + |
---|
475 | * yprim(it) |
---|
476 | yprimu1(j) = pijjm/yppp |
---|
477 | c |
---|
478 | PRINT 3000,j,ydeg,yprimu1(j) |
---|
479 | |
---|
480 | 1800 CONTINUE |
---|
481 | |
---|
482 | c .............................................. |
---|
483 | c |
---|
484 | PRINT *,' ********************************** ' |
---|
485 | PRINT *,' **** Calcul pour f( j + 3/4 ) *** ' |
---|
486 | PRINT *,' ********************************** ' |
---|
487 | PRINT *,' *** j rlatu2 yprimu2 *** ' |
---|
488 | c .............................................. |
---|
489 | c |
---|
490 | DO 1900 j=1, jjm |
---|
491 | |
---|
492 | phij = pis2+ pijjm*(1.-(FLOAT(j)+0.75)) |
---|
493 | yo1 = 0. |
---|
494 | yj = yo1 |
---|
495 | |
---|
496 | DO 1700 iter =1,500 |
---|
497 | |
---|
498 | DO 1680 it = nmax,0,-1 |
---|
499 | IF( yj.GE.yi(it)) GO TO 1690 |
---|
500 | 1680 CONTINUE |
---|
501 | it = 0 |
---|
502 | yj = yi(it) |
---|
503 | 1690 CONTINUE |
---|
504 | IF(it.EQ.nmax) THEN |
---|
505 | yint = yf(nmax) |
---|
506 | yprimin = yprim(nmax) |
---|
507 | ELSE |
---|
508 | yint= (yf(it+1)-yf(it))/(yi(it+1)-yi(it)) * ( yj -yi(it) ) + |
---|
509 | + yf(it) |
---|
510 | yprimin=(yprim(it+1)-yprim(it))/(yi(it+1)-yi(it))* ( yj-yi(it) ) + |
---|
511 | + yprim(it) |
---|
512 | ENDIF |
---|
513 | yj = yj - (yint-phij)/yprimin |
---|
514 | |
---|
515 | IF( ABS(yj-yo1).LE.eps ) GO TO 1705 |
---|
516 | yo1 = yj |
---|
517 | c |
---|
518 | 1700 CONTINUE |
---|
519 | PRINT *,' PAS DE SOLUTION ',j,phij |
---|
520 | STOP 10 |
---|
521 | 1705 CONTINUE |
---|
522 | ydeg = yj * 180./pi |
---|
523 | rlatu2(j) = yj |
---|
524 | c |
---|
525 | c ..... calcul de yprimu2 ..... |
---|
526 | c |
---|
527 | IF(yj.LT.- pis2.OR.yj.GT.pis2) STOP 11 |
---|
528 | |
---|
529 | IF(yj.LT.yo) THEN |
---|
530 | psi = (yo -yj)/(pis2+yo) |
---|
531 | ELSE |
---|
532 | psi = (yj-yo)/(pis2-yo) |
---|
533 | ENDIF |
---|
534 | c |
---|
535 | DO it = nmax,0,-1 |
---|
536 | IF( yj.GE.yi(it)) GO TO 1710 |
---|
537 | ENDDO |
---|
538 | 1710 CONTINUE |
---|
539 | IF(it.EQ.nmax) THEN |
---|
540 | PRINT *,' IT = nmax Pbs ..',it,j |
---|
541 | STOP 12 |
---|
542 | ENDIF |
---|
543 | yppp =(yprim(it+1)-yprim(it))/(yi(it+1)-yi(it))* ( yj - yi(it) ) + |
---|
544 | + yprim(it) |
---|
545 | yprimu2(j) = pijjm/yppp |
---|
546 | c |
---|
547 | PRINT 3000,j,ydeg,yprimu2(j) |
---|
548 | |
---|
549 | 1900 CONTINUE |
---|
550 | c |
---|
551 | PRINT *,' *** TEST DE COHERENCE DANS FXYP **** ' |
---|
552 | c |
---|
553 | DO j = 1, jjm |
---|
554 | c |
---|
555 | IF(rlatu1(j).LE.rlatu2(j)) THEN |
---|
556 | PRINT *,' Attention ! rlatu1 < rlatu2 ',rlatu1(j), rlatu2(j),j |
---|
557 | STOP 13 |
---|
558 | ENDIF |
---|
559 | c |
---|
560 | IF(rlatu2(j).LE.rlatu(j+1)) THEN |
---|
561 | PRINT *,' Attention ! rlatu2 < rlatup1 ',rlatu2(j),rlatu(j+1),j |
---|
562 | STOP 14 |
---|
563 | ENDIF |
---|
564 | c |
---|
565 | IF(rlatu(j).LE.rlatu1(j)) THEN |
---|
566 | PRINT *,' rlatu < rlatu1 ',rlatu(j),rlatu1(j),j |
---|
567 | STOP 15 |
---|
568 | ENDIF |
---|
569 | c |
---|
570 | IF(rlatv(j).LE.rlatu2(j)) THEN |
---|
571 | PRINT *,' rlatv > rlatu2 ',rlatv(j),rlatu2(j),j |
---|
572 | STOP 16 |
---|
573 | ENDIF |
---|
574 | c |
---|
575 | IF(rlatv(j).ge.rlatu1(j)) THEN |
---|
576 | PRINT *,' rlatv < rlatu1 ',rlatv(j),rlatu1(j),j |
---|
577 | STOP 17 |
---|
578 | ENDIF |
---|
579 | c |
---|
580 | IF(rlatv(j).ge.rlatu(j)) THEN |
---|
581 | PRINT *,' rlatv > rlatu ',rlatv(j),rlatu(j),j |
---|
582 | STOP 18 |
---|
583 | ENDIF |
---|
584 | c |
---|
585 | ENDDO |
---|
586 | c |
---|
587 | PRINT *,' *** Les latitudes yprimu,yprimv,yprimu1,yprimu2 ', |
---|
588 | * ' sont coherentes entre elles ! *** ' |
---|
589 | |
---|
590 | c |
---|
591 | 1 FORMAT( 3x,'Fxyhyp. psi0 delta clat ',3f7.2) |
---|
592 | 3000 FORMAT(2x,i4,2x,f8.2,f8.3) |
---|
593 | RETURN |
---|
594 | END |
---|