1 |
SUBROUTINE fxyhyper ( yzoom, grossy, dzoomy,tauy , & |
2 |
xzoom, grossx, dzoomx,taux , & |
3 |
rlatu,yprimu,rlatv,yprimv,rlatu1, yprimu1, rlatu2, yprimu2 , & |
4 |
rlonu,xprimu,rlonv,xprimv,rlonm025,xprimm025,rlonp025,xprimp025) |
5 |
|
6 |
! From dyn3d/fxyhyper.F,v 1.1.1.1 2004/05/19 12:53:06 |
7 |
|
8 |
use dimens_m |
9 |
use paramet_m |
10 |
IMPLICIT NONE |
11 |
! |
12 |
! Auteur : P. Le Van . |
13 |
! |
14 |
! d'apres formulations de R. Sadourny . |
15 |
! |
16 |
! |
17 |
! Ce spg calcule les latitudes( routine fyhyp ) et longitudes( fxhyp ) |
18 |
! par des fonctions a tangente hyperbolique . |
19 |
! |
20 |
! Il y a 3 parametres ,en plus des coordonnees du centre du zoom (xzoom |
21 |
! et yzoom ) : |
22 |
! |
23 |
! a) le grossissement du zoom : grossy ( en y ) et grossx ( en x ) |
24 |
! b) l' extension du zoom : dzoomy ( en y ) et dzoomx ( en x ) |
25 |
! c) la raideur de la transition du zoom : taux et tauy |
26 |
! |
27 |
! N.B : Il vaut mieux avoir : grossx * dzoomx < pi ( radians ) |
28 |
! ****** |
29 |
! et grossy * dzoomy < pi/2 ( radians ) |
30 |
! |
31 |
|
32 |
|
33 |
! ..... Arguments ... |
34 |
! |
35 |
REAL xzoom,yzoom,grossx,grossy,dzoomx,dzoomy,taux,tauy |
36 |
REAL rlatu(jjp1), yprimu(jjp1),rlatv(jjm), yprimv(jjm), & |
37 |
rlatu1(jjm), yprimu1(jjm), rlatu2(jjm), yprimu2(jjm) |
38 |
REAL rlonu(iip1),xprimu(iip1),rlonv(iip1),xprimv(iip1), & |
39 |
rlonm025(iip1),xprimm025(iip1), rlonp025(iip1),xprimp025(iip1) |
40 |
double precision dxmin, dxmax , dymin, dymax |
41 |
|
42 |
! .... var. locales ..... |
43 |
! |
44 |
INTEGER i,j |
45 |
! |
46 |
|
47 |
CALL fyhyp ( yzoom, grossy, dzoomy,tauy , & |
48 |
rlatu, yprimu,rlatv,yprimv,rlatu2,yprimu2,rlatu1,yprimu1 , & |
49 |
dymin,dymax ) |
50 |
|
51 |
CALL fxhyp(xzoom,grossx,dzoomx,taux,rlonm025,xprimm025,rlonv, & |
52 |
xprimv,rlonu,xprimu,rlonp025,xprimp025 , dxmin,dxmax ) |
53 |
|
54 |
|
55 |
DO i = 1, iip1 |
56 |
IF(rlonp025(i).LT.rlonv(i)) THEN |
57 |
print *, ' Attention ! rlonp025 < rlonv',i |
58 |
STOP |
59 |
ENDIF |
60 |
|
61 |
IF(rlonv(i).LT.rlonm025(i)) THEN |
62 |
print *, ' Attention ! rlonm025 > rlonv',i |
63 |
STOP |
64 |
ENDIF |
65 |
|
66 |
IF(rlonp025(i).GT.rlonu(i)) THEN |
67 |
print *, ' Attention ! rlonp025 > rlonu',i |
68 |
STOP |
69 |
ENDIF |
70 |
ENDDO |
71 |
|
72 |
print *, ' *** TEST DE COHERENCE OK POUR FX **** ' |
73 |
|
74 |
! |
75 |
DO j = 1, jjm |
76 |
! |
77 |
IF(rlatu1(j).LE.rlatu2(j)) THEN |
78 |
print *,'Attention ! rlatu1 < rlatu2 ',rlatu1(j), rlatu2(j),j |
79 |
STOP 13 |
80 |
ENDIF |
81 |
! |
82 |
IF(rlatu2(j).LE.rlatu(j+1)) THEN |
83 |
print *,'Attention ! rlatu2 < rlatup1 ',rlatu2(j),rlatu(j+1),j |
84 |
STOP 14 |
85 |
ENDIF |
86 |
! |
87 |
IF(rlatu(j).LE.rlatu1(j)) THEN |
88 |
print *,' Attention ! rlatu < rlatu1 ',rlatu(j),rlatu1(j),j |
89 |
STOP 15 |
90 |
ENDIF |
91 |
! |
92 |
IF(rlatv(j).LE.rlatu2(j)) THEN |
93 |
print *,' Attention ! rlatv < rlatu2 ',rlatv(j),rlatu2(j),j |
94 |
STOP 16 |
95 |
ENDIF |
96 |
! |
97 |
IF(rlatv(j).ge.rlatu1(j)) THEN |
98 |
print *,' Attention ! rlatv > rlatu1 ',rlatv(j),rlatu1(j),j |
99 |
STOP 17 |
100 |
ENDIF |
101 |
! |
102 |
IF(rlatv(j).ge.rlatu(j)) THEN |
103 |
print *, ' Attention ! rlatv > rlatu ',rlatv(j),rlatu(j),j |
104 |
STOP 18 |
105 |
ENDIF |
106 |
! |
107 |
ENDDO |
108 |
! |
109 |
print *, ' *** TEST DE COHERENCE OK POUR FY **** ' |
110 |
! |
111 |
print 18 |
112 |
print *, ' Latitudes ' |
113 |
print *, ' *********** ' |
114 |
print 18 |
115 |
print 3, dymin, dymax |
116 |
print *, ' Si cette derniere est trop lache , modifiez les parametres grossism , tau , dzoom pour Y et repasser ! ' |
117 |
! |
118 |
print 18 |
119 |
print *, ' Longitudes ' |
120 |
print *, ' ************ ' |
121 |
print 18 |
122 |
print 3, dxmin, dxmax |
123 |
print *, ' Si cette derniere est trop lache , modifiez les parametres grossism , tau , dzoom pour Y et repasser ! ' |
124 |
print 18 |
125 |
|
126 |
3 Format(1x, ' Au centre du zoom , la longueur de la maille est', & |
127 |
' d environ ',f0.2 ,' degres ', /, & |
128 |
' alors que la maille en dehors de la zone du zoom est ', & |
129 |
"d'environ", f0.2,' degres ' ) |
130 |
18 FORMAT(/) |
131 |
|
132 |
END SUBROUTINE fxyhyper |