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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 265 - (hide annotations)
Tue Mar 20 09:35:59 2018 UTC (6 years, 2 months ago) by guez
File size: 2071 byte(s)
Rename module dimens_m to dimensions.
1 guez 115 module init_tau2alpha_m
2    
3     IMPLICIT NONE
4    
5     REAL dxdy_min, dxdy_max, gamma
6    
7     contains
8    
9 guez 211 SUBROUTINE init_tau2alpha(dxdys)
10 guez 115
11 guez 139 USE comgeom, ONLY: cu_2d, cv_2d
12 guez 127 use coordij_m, only: coordij
13 guez 265 USE dimensions, ONLY: jjm
14 guez 139 USE dynetat0_m, ONLY: clat, clon, grossismx, grossismy, rlatu
15 guez 115 USE paramet_m, ONLY: iip1, jjp1
16     use writefield_m, only: writefield
17    
18 guez 211 REAL, intent(out):: dxdys(iip1, jjp1)
19 guez 115
20     ! Local:
21     INTEGER i, j, ilon, ilat
22     REAL dx(iip1, jjp1), dy(iip1, jjp1)
23    
24     !------------------------------------------------------------
25    
26     PRINT *, 'Call sequence information: init_tau2alpha'
27    
28     DO j = 2, jjm
29     DO i = 2, iip1
30     dx(i, j) = 0.5 * (cu_2d(i - 1, j) + cu_2d(i, j)) / cos(rlatu(j))
31     END DO
32     dx(1, j) = dx(iip1, j)
33     END DO
34     DO j = 2, jjm
35     DO i = 1, iip1
36     dy(i, j) = 0.5 * (cv_2d(i, j - 1) + cv_2d(i, j))
37     END DO
38     END DO
39     DO i = 1, iip1
40     dx(i, 1) = dx(i, 2)
41     dx(i, jjp1) = dx(i, jjm)
42     dy(i, 1) = dy(i, 2)
43     dy(i, jjp1) = dy(i, jjm)
44     END DO
45    
46     DO j = 1, jjp1
47     DO i = 1, iip1
48     dxdys(i, j) = sqrt(dx(i, j)**2 + dy(i, j)**2)
49     END DO
50     END DO
51     CALL writefield("dxdys", dxdys)
52    
53     ! coordonnees du centre du zoom
54     CALL coordij(clon, clat, ilon, ilat)
55     ! aire de la maille au centre du zoom
56     dxdy_min = dxdys(ilon, ilat)
57 guez 173 print *, "dxdy_min = ", dxdy_min
58 guez 115
59     ! dxdy maximal de la maille :
60 guez 173 dxdy_max = maxval(dxdys)
61     print *, "dxdy_max = ", dxdy_max
62 guez 115
63     IF (abs(grossismx - 1.) < 0.1 .OR. abs(grossismy - 1.) < 0.1) THEN
64     PRINT *, 'Attention : modèle peu zoomé.'
65     PRINT *, 'On prend une constante de guidage constante.'
66     ELSE
67     gamma = (dxdy_max - 2. * dxdy_min) / (dxdy_max - dxdy_min)
68     IF (gamma < 1E-5) THEN
69     PRINT *, '(dxdy_max - 2. * dxdy_min) / (dxdy_max - dxdy_min) ' &
70     // '< 1e-5'
71     STOP 1
72     END IF
73     gamma = log(0.5) / log(gamma)
74     PRINT *, 'gamma=', gamma
75     END IF
76    
77     END SUBROUTINE init_tau2alpha
78    
79     end module init_tau2alpha_m

  ViewVC Help
Powered by ViewVC 1.1.21