/[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 134 - (show annotations)
Wed Apr 29 15:47:56 2015 UTC (9 years, 1 month ago) by guez
Original Path: trunk/Sources/dyn3d/Guide/init_tau2alpha.f
File size: 2585 byte(s)
Sources inside, compilation outside.
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