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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 70 - (show annotations)
Mon Jun 24 15:39:52 2013 UTC (10 years, 11 months ago) by guez
File size: 3817 byte(s)
In procedure, "addfi" access directly the module variable "dtphys"
instead of going through an argument.

In "conflx", do not create a local variable for temperature with
reversed order of vertical levels. Instead, give an actual argument
with reversed order in "physiq".

Changed names of variables "rmd" and "rmv" from module "suphec_m" to
"md" and "mv".

In "hgardfou", print only the first temperature out of range found.

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

  ViewVC Help
Powered by ViewVC 1.1.21