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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 38 - (show 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 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
5 ! From dyn3d/fxyhyper.F, v 1.1.1.1 2004/05/19 12:53:06
6
7 use dimens_m
8 use paramet_m
9
10 IMPLICIT NONE
11
12 ! Auteur : P. Le Van.
13 ! d'apres formulations de R. Sadourny.
14
15 ! Cette procédure calcule les latitudes (routine fyhyp) et
16 ! longitudes (fxhyp) par des fonctions a tangente hyperbolique.
17
18 ! Il y a 3 parametres, en plus des coordonnees du centre du zoom (xzoom
19 ! et yzoom) :
20
21 ! 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
25 ! N.B : Il vaut mieux avoir : grossx * dzoomx < pi (radians)
26 ! et grossy * dzoomy < pi/2 (radians)
27
28 ! Arguments
29
30 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 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 grossism, tau, dzoom pour Y et repasser ! '
106
107 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 ' alors que la maille en dehors de la zone du zoom est ', &
114 "d'environ", f0.2, ' degres ')
115
116 END SUBROUTINE fxyhyper

  ViewVC Help
Powered by ViewVC 1.1.21