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

Annotation of /trunk/dyn3d/fxyhyper.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 78 - (hide annotations)
Wed Feb 5 17:51:07 2014 UTC (10 years, 3 months ago) by guez
Original Path: trunk/dyn3d/fxyhyper.f90
File size: 3838 byte(s)
Moved procedure inigeom into module comgeom.

In disvert, renamed s_sampling to vert_sampling, following
LMDZ. Removed choice strato1. In case read, read ap and bp instead of
s (following LMDZ).

Added argument phis to start_init_orog and start_init_dyn, and removed
variable phis of module start_init_orog_m. In etat0 and
start_init_orog, renamed relief to zmea_2d. In start_init_dyn, renamed
psol to ps.

In start_init_orog, renamed relief_hi to relief. No need to set
phis(iim + 1, :) = phis(1, :), already done in grid_noro.

Documentation for massbar out of SVN, in massbar.txt. Documentation
was duplicated in massdair, but not relevant in massdair.

In conflx, no need to initialize pen_[ud] and pde_[ud]. In flxasc,
used intermediary variable fact (following LMDZ).

In grid_noro, added local variable zmea0 for zmea not smoothed and
computed zphi from zmea instead of zmea0 (following LMDZ). This
changes the results of ce0l.

Removed arguments pen_u and pde_d of phytrac and nflxtr, which were
not used.

1 guez 70 module fxyhyper_m
2 guez 3
3 guez 70 IMPLICIT NONE
4 guez 3
5 guez 70 contains
6 guez 38
7 guez 70 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 guez 3
11 guez 70 ! From dyn3d/fxyhyper.F, version 1.1.1.1 2004/05/19 12:53:06
12 guez 3
13 guez 70 USE dimens_m, ONLY: jjm
14 guez 78 use fxhyp_m, only: fxhyp
15 guez 70 USE paramet_m, ONLY: iip1, jjp1
16 guez 3
17 guez 70 ! Auteur : P. Le Van d'après formulations de R. Sadourny
18 guez 3
19 guez 70 ! Cette procédure calcule les latitudes (routine fyhyp) et
20     ! longitudes (fxhyp) par des fonctions à tangente hyperbolique.
21 guez 3
22 guez 78 ! Il y a trois paramètres, en plus des coordonnées du centre du
23     ! zoom (xzoom et yzoom) :
24 guez 3
25 guez 70 ! 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 guez 3
29 guez 78 ! Nota bene : il vaut mieux avoir : grossx * dzoomx < pi (radians)
30     ! et grossy * dzoomy < pi/2 (radians)
31 guez 38
32 guez 78 REAL yzoom, grossy, dzoomy, tauy, xzoom, grossx, dzoomx, taux
33 guez 70 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 guez 38
38 guez 78 ! Variables locales :
39 guez 38
40 guez 78 double precision dxmin, dxmax, dymin, dymax
41 guez 70 INTEGER i, j
42 guez 38
43 guez 70 !----------------------------------------------------------
44 guez 38
45 guez 70 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 guez 3
50 guez 70 DO i = 1, iip1
51     IF(rlonp025(i).LT.rlonv(i)) THEN
52     print *, ' Attention ! rlonp025 < rlonv', i
53     STOP 1
54     ENDIF
55 guez 3
56 guez 70 IF(rlonv(i).LT.rlonm025(i)) THEN
57     print *, ' Attention ! rlonm025 > rlonv', i
58     STOP 1
59     ENDIF
60 guez 3
61 guez 70 IF(rlonp025(i).GT.rlonu(i)) THEN
62     print *, ' Attention ! rlonp025 > rlonu', i
63     STOP 1
64     ENDIF
65     ENDDO
66 guez 3
67 guez 70 print *, 'Test de coherence ok pour fx'
68 guez 38
69 guez 70 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 guez 38
75 guez 70 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 guez 38
80 guez 70 IF(rlatu(j).LE.rlatu1(j)) THEN
81     print *, ' Attention ! rlatu < rlatu1 ', rlatu(j), rlatu1(j), j
82     STOP 15
83     ENDIF
84 guez 38
85 guez 70 IF(rlatv(j).LE.rlatu2(j)) THEN
86     print *, ' Attention ! rlatv < rlatu2 ', rlatv(j), rlatu2(j), j
87     STOP 16
88     ENDIF
89 guez 38
90 guez 70 IF(rlatv(j).ge.rlatu1(j)) THEN
91     print *, ' Attention ! rlatv > rlatu1 ', rlatv(j), rlatu1(j), j
92     STOP 17
93     ENDIF
94 guez 38
95 guez 70 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 guez 38
101 guez 70 print *, 'Test de coherence ok pour fy'
102 guez 3
103 guez 70 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 guez 38
108 guez 70 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 guez 3
113 guez 70 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