/[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 265 - (show annotations)
Tue Mar 20 09:35:59 2018 UTC (6 years, 1 month ago) by guez
File size: 2071 byte(s)
Rename module dimens_m to dimensions.
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)
10
11 USE comgeom, ONLY: cu_2d, cv_2d
12 use coordij_m, only: coordij
13 USE dimensions, ONLY: jjm
14 USE dynetat0_m, ONLY: clat, clon, grossismx, grossismy, rlatu
15 USE paramet_m, ONLY: iip1, jjp1
16 use writefield_m, only: writefield
17
18 REAL, intent(out):: dxdys(iip1, jjp1)
19
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 print *, "dxdy_min = ", dxdy_min
58
59 ! dxdy maximal de la maille :
60 dxdy_max = maxval(dxdys)
61 print *, "dxdy_max = ", dxdy_max
62
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