6 |
|
|
7 |
SUBROUTINE tau2alpha(type, factt, taumin, taumax, alpha) |
SUBROUTINE tau2alpha(type, factt, taumin, taumax, alpha) |
8 |
|
|
9 |
USE comgeom, ONLY : cu_2d, cv_2d, rlatu, rlatv |
USE comgeom, ONLY: cu_2d, cv_2d, rlatu, rlatv |
|
USE dimens_m, ONLY : jjm |
|
10 |
use conf_guide_m, only: lat_min_guide, lat_max_guide |
use conf_guide_m, only: lat_min_guide, lat_max_guide |
11 |
USE dimens_m, ONLY : iim |
USE dimens_m, ONLY: iim, jjm |
12 |
USE nr_util, ONLY : pi |
USE nr_util, ONLY: pi |
13 |
USE paramet_m, ONLY : iip1, jjp1 |
USE paramet_m, ONLY: iip1, jjp1 |
14 |
USE serre, ONLY : clat, clon, grossismx, grossismy |
USE serre, ONLY: clat, clon, grossismx, grossismy |
15 |
use writefield_m, only: writefield |
use writefield_m, only: writefield |
16 |
|
|
17 |
INTEGER, intent(in):: type |
INTEGER, intent(in):: type |
57 |
END DO |
END DO |
58 |
CALL writefield("dxdys", dxdys) |
CALL writefield("dxdys", dxdys) |
59 |
|
|
60 |
DO j = 1, jjp1 |
if (type == 2) then |
61 |
DO i = 1, iim |
DO j = 1, jjp1 |
62 |
dxdyu(i, j) = 0.5 * (dxdys(i, j) + dxdys(i + 1, j)) |
DO i = 1, iim |
63 |
|
dxdyu(i, j) = 0.5 * (dxdys(i, j) + dxdys(i + 1, j)) |
64 |
|
END DO |
65 |
|
dxdyu(iip1, j) = dxdyu(1, j) |
66 |
|
END DO |
67 |
|
elseif (type == 3) then |
68 |
|
DO j = 1, jjm |
69 |
|
DO i = 1, iip1 |
70 |
|
dxdyv(i, j) = 0.5 * (dxdys(i, j) + dxdys(i, j + 1)) |
71 |
|
END DO |
72 |
END DO |
END DO |
73 |
dxdyu(iip1, j) = dxdyu(1, j) |
end if |
|
END DO |
|
|
DO j = 1, jjm |
|
|
DO i = 1, iip1 |
|
|
dxdyv(i, j) = 0.5 * (dxdys(i, j) + dxdys(i, j + 1)) |
|
|
END DO |
|
|
END DO |
|
74 |
|
|
75 |
! coordonnees du centre du zoom |
! coordonnees du centre du zoom |
76 |
CALL coordij(clon, clat, ilon, ilat) |
CALL coordij(clon, clat, ilon, ilat) |
85 |
END DO |
END DO |
86 |
END DO |
END DO |
87 |
|
|
88 |
IF (abs(grossismx - 1.)<0.1 .OR. abs(grossismy - 1.)<0.1) THEN |
IF (abs(grossismx - 1.) < 0.1 .OR. abs(grossismy - 1.) < 0.1) THEN |
89 |
PRINT *, 'ATTENTION modele peu zoome' |
PRINT *, 'Attention : modèle peu zoomé.' |
90 |
PRINT *, 'ATTENTION on prend une constante de guidage cste' |
PRINT *, 'On prend une constante de guidage constante.' |
|
gamma = 0. |
|
91 |
ELSE |
ELSE |
92 |
gamma = (dxdy_max - 2. * dxdy_min) / (dxdy_max - dxdy_min) |
gamma = (dxdy_max - 2. * dxdy_min) / (dxdy_max - dxdy_min) |
93 |
PRINT *, 'gamma=', gamma |
PRINT *, 'gamma=', gamma |
116 |
dxdy = dxdyv(i, j) |
dxdy = dxdyv(i, j) |
117 |
zlat = rlatv(j) * 180. / pi |
zlat = rlatv(j) * 180. / pi |
118 |
END IF |
END IF |
119 |
IF (abs(grossismx - 1.)<0.1 .OR. abs(grossismy - 1.)<0.1) THEN |
IF (abs(grossismx - 1.) < 0.1 .OR. abs(grossismy - 1.) < 0.1) THEN |
120 |
! pour une grille reguliere, xi=xxx**0=1 -> alpha=alphamin |
! grille regulière |
121 |
alpha(i, j) = alphamin |
alpha(i, j) = alphamin |
122 |
ELSE |
ELSE |
123 |
xi = ((dxdy_max - dxdy) / (dxdy_max - dxdy_min))**gamma |
xi = ((dxdy_max - dxdy) / (dxdy_max - dxdy_min))**gamma |