/[lmdze]/trunk/dyn3d/fxyhyper.f
ViewVC logotype

Contents of /trunk/dyn3d/fxyhyper.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 82 - (show annotations)
Wed Mar 5 14:57:53 2014 UTC (10 years, 2 months ago) by guez
File size: 3838 byte(s)
Changed all ".f90" suffixes to ".f".
1 module fxyhyper_m
2
3 IMPLICIT NONE
4
5 contains
6
7 SUBROUTINE fxyhyper(yzoom, grossy, dzoomy, tauy, xzoom, grossx, dzoomx, &
8 taux, rlatu, yprimu, rlatv, yprimv, rlatu1, yprimu1, rlatu2, yprimu2, &
9 rlonu, xprimu, rlonv, xprimv, rlonm025, xprimm025, rlonp025, xprimp025)
10
11 ! From dyn3d/fxyhyper.F, version 1.1.1.1 2004/05/19 12:53:06
12
13 USE dimens_m, ONLY: jjm
14 use fxhyp_m, only: fxhyp
15 USE paramet_m, ONLY: iip1, jjp1
16
17 ! Auteur : P. Le Van d'après formulations de R. Sadourny
18
19 ! Cette procédure calcule les latitudes (routine fyhyp) et
20 ! longitudes (fxhyp) par des fonctions à tangente hyperbolique.
21
22 ! Il y a trois paramètres, en plus des coordonnées du centre du
23 ! zoom (xzoom et yzoom) :
24
25 ! a) le grossissement du zoom : grossy (en y) et grossx (en x)
26 ! b) l' extension du zoom : dzoomy (en y) et dzoomx (en x)
27 ! c) la raideur de la transition du zoom : taux et tauy
28
29 ! Nota bene : il vaut mieux avoir : grossx * dzoomx < pi (radians)
30 ! et grossy * dzoomy < pi/2 (radians)
31
32 REAL yzoom, grossy, dzoomy, tauy, xzoom, grossx, dzoomx, taux
33 REAL rlatu(jjp1), yprimu(jjp1), rlatv(jjm), yprimv(jjm)
34 real rlatu1(jjm), yprimu1(jjm), rlatu2(jjm), yprimu2(jjm)
35 REAL rlonu(iip1), xprimu(iip1), rlonv(iip1), xprimv(iip1)
36 REAL rlonm025(iip1), xprimm025(iip1), rlonp025(iip1), xprimp025(iip1)
37
38 ! Variables locales :
39
40 double precision dxmin, dxmax, dymin, dymax
41 INTEGER i, j
42
43 !----------------------------------------------------------
44
45 CALL fyhyp(yzoom, grossy, dzoomy, tauy, rlatu, yprimu, rlatv, yprimv, &
46 rlatu2, yprimu2, rlatu1, yprimu1, dymin, dymax)
47 CALL fxhyp(xzoom, grossx, dzoomx, taux, rlonm025, xprimm025, rlonv, &
48 xprimv, rlonu, xprimu, rlonp025, xprimp025, dxmin, dxmax)
49
50 DO i = 1, iip1
51 IF(rlonp025(i).LT.rlonv(i)) THEN
52 print *, ' Attention ! rlonp025 < rlonv', i
53 STOP 1
54 ENDIF
55
56 IF(rlonv(i).LT.rlonm025(i)) THEN
57 print *, ' Attention ! rlonm025 > rlonv', i
58 STOP 1
59 ENDIF
60
61 IF(rlonp025(i).GT.rlonu(i)) THEN
62 print *, ' Attention ! rlonp025 > rlonu', i
63 STOP 1
64 ENDIF
65 ENDDO
66
67 print *, 'Test de coherence ok pour fx'
68
69 DO j = 1, jjm
70 IF(rlatu1(j).LE.rlatu2(j)) THEN
71 print *, 'Attention ! rlatu1 < rlatu2 ', rlatu1(j), rlatu2(j), j
72 STOP 13
73 ENDIF
74
75 IF(rlatu2(j).LE.rlatu(j+1)) THEN
76 print *, 'Attention ! rlatu2 < rlatup1 ', rlatu2(j), rlatu(j+1), j
77 STOP 14
78 ENDIF
79
80 IF(rlatu(j).LE.rlatu1(j)) THEN
81 print *, ' Attention ! rlatu < rlatu1 ', rlatu(j), rlatu1(j), j
82 STOP 15
83 ENDIF
84
85 IF(rlatv(j).LE.rlatu2(j)) THEN
86 print *, ' Attention ! rlatv < rlatu2 ', rlatv(j), rlatu2(j), j
87 STOP 16
88 ENDIF
89
90 IF(rlatv(j).ge.rlatu1(j)) THEN
91 print *, ' Attention ! rlatv > rlatu1 ', rlatv(j), rlatu1(j), j
92 STOP 17
93 ENDIF
94
95 IF(rlatv(j).ge.rlatu(j)) THEN
96 print *, ' Attention ! rlatv > rlatu ', rlatv(j), rlatu(j), j
97 STOP 18
98 ENDIF
99 ENDDO
100
101 print *, 'Test de coherence ok pour fy'
102
103 print *, 'Latitudes'
104 print 3, dymin, dymax
105 print *, 'Si cette derniere est trop lache, modifiez les parametres'
106 print *, 'grossism, tau, dzoom pour Y et repasser ! '
107
108 print *, ' Longitudes '
109 print 3, dxmin, dxmax
110 print *, 'Si cette derniere est trop lache, modifiez les parametres'
111 print *, 'grossism, tau, dzoom pour Y et repasser ! '
112
113 3 Format(1x, ' Au centre du zoom, la longueur de la maille est', &
114 ' d environ ', f0.2, ' degres ', /, &
115 ' alors que la maille en dehors de la zone du zoom est ', &
116 "d'environ", f0.2, ' degres ')
117
118 END SUBROUTINE fxyhyper
119
120 end module fxyhyper_m

  ViewVC Help
Powered by ViewVC 1.1.21