/[lmdze]/trunk/dyn3d/Guide/init_tau2alpha.f
ViewVC logotype

Contents of /trunk/dyn3d/Guide/init_tau2alpha.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 127 - (show annotations)
Tue Feb 10 17:58:56 2015 UTC (9 years, 3 months ago) by guez
File size: 2585 byte(s)
clon and clat from module serre are now in rad instead of
degrees. They are only used in rad, so we do only one conversion when
we read them.

1 module init_tau2alpha_m
2
3 IMPLICIT NONE
4
5 REAL dxdy_min, dxdy_max, gamma
6
7 contains
8
9 SUBROUTINE init_tau2alpha(dxdys, dxdyu, dxdyv)
10
11 USE comgeom, ONLY: cu_2d, cv_2d, rlatu
12 use conf_guide_m, only: guide_u, guide_v
13 use coordij_m, only: coordij
14 USE dimens_m, ONLY: iim, jjm
15 USE paramet_m, ONLY: iip1, jjp1
16 USE serre, ONLY: clat, clon, grossismx, grossismy
17 use writefield_m, only: writefield
18
19 REAL, intent(out):: dxdys(iip1, jjp1), dxdyu(iip1, jjp1), dxdyv(iip1, jjm)
20
21 ! Local:
22 INTEGER i, j, ilon, ilat
23 REAL dx(iip1, jjp1), dy(iip1, jjp1)
24
25 !------------------------------------------------------------
26
27 PRINT *, 'Call sequence information: init_tau2alpha'
28
29 DO j = 2, jjm
30 DO i = 2, iip1
31 dx(i, j) = 0.5 * (cu_2d(i - 1, j) + cu_2d(i, j)) / cos(rlatu(j))
32 END DO
33 dx(1, j) = dx(iip1, j)
34 END DO
35 DO j = 2, jjm
36 DO i = 1, iip1
37 dy(i, j) = 0.5 * (cv_2d(i, j - 1) + cv_2d(i, j))
38 END DO
39 END DO
40 DO i = 1, iip1
41 dx(i, 1) = dx(i, 2)
42 dx(i, jjp1) = dx(i, jjm)
43 dy(i, 1) = dy(i, 2)
44 dy(i, jjp1) = dy(i, jjm)
45 END DO
46
47 DO j = 1, jjp1
48 DO i = 1, iip1
49 dxdys(i, j) = sqrt(dx(i, j)**2 + dy(i, j)**2)
50 END DO
51 END DO
52 CALL writefield("dxdys", dxdys)
53
54 if (guide_u) then
55 DO j = 1, jjp1
56 DO i = 1, iim
57 dxdyu(i, j) = 0.5 * (dxdys(i, j) + dxdys(i + 1, j))
58 END DO
59 dxdyu(iip1, j) = dxdyu(1, j)
60 END DO
61 end if
62
63 if (guide_v) then
64 DO j = 1, jjm
65 DO i = 1, iip1
66 dxdyv(i, j) = 0.5 * (dxdys(i, j) + dxdys(i, j + 1))
67 END DO
68 END DO
69 end if
70
71 ! coordonnees du centre du zoom
72 CALL coordij(clon, clat, ilon, ilat)
73 ! aire de la maille au centre du zoom
74 dxdy_min = dxdys(ilon, ilat)
75
76 ! dxdy maximal de la maille :
77 dxdy_max = 0.
78 DO j = 1, jjp1
79 DO i = 1, iip1
80 dxdy_max = max(dxdy_max, dxdys(i, j))
81 END DO
82 END DO
83
84 IF (abs(grossismx - 1.) < 0.1 .OR. abs(grossismy - 1.) < 0.1) THEN
85 PRINT *, 'Attention : modèle peu zoomé.'
86 PRINT *, 'On prend une constante de guidage constante.'
87 ELSE
88 gamma = (dxdy_max - 2. * dxdy_min) / (dxdy_max - dxdy_min)
89 IF (gamma < 1E-5) THEN
90 PRINT *, '(dxdy_max - 2. * dxdy_min) / (dxdy_max - dxdy_min) ' &
91 // '< 1e-5'
92 STOP 1
93 END IF
94 gamma = log(0.5) / log(gamma)
95 PRINT *, 'gamma=', gamma
96 END IF
97
98 END SUBROUTINE init_tau2alpha
99
100 end module init_tau2alpha_m

  ViewVC Help
Powered by ViewVC 1.1.21