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