/[lmdze]/trunk/libf/dyn3d/fxyhyper.f90
ViewVC logotype

Annotation of /trunk/libf/dyn3d/fxyhyper.f90

Parent Directory Parent Directory | Revision Log Revision Log


Revision 38 - (hide annotations)
Thu Jan 6 17:52:19 2011 UTC (13 years, 4 months ago) by guez
File size: 3561 byte(s)
Extracted ASCII art from "inigeom" into a separate text file in the
documentation.

"test_disvert" now creates a separate file for layer thicknesses.

Moved variables from module "yomcst" to module "suphec_m" because this
is where those variables are defined. Kept in "yomcst" only parameters
of Earth orbit. Gave the attribute "parameter" to some variables of
module "suphec_m".

Variables of module "yoethf" were defined in procedure "suphec". Moved
these definitions to a new procedure "yoethf" in module "yoethf_m".

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

  ViewVC Help
Powered by ViewVC 1.1.21