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

Contents of /trunk/dyn3d/fxyhyper.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 78 - (show 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 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