--- trunk/filtrez/inifilr.f 2014/03/05 14:57:53 82 +++ trunk/Sources/filtrez/inifilr.f 2015/04/29 15:47:56 134 @@ -34,32 +34,27 @@ ! The modes are filtered from modfrst to modemax. - USE dimens_m, ONLY : iim, jjm - use conf_gcm_m, ONLY : fxyhypb, ysinus - USE comgeom, ONLY : rlatu, rlatv, xprimu - use nr_util, only: pi - USE serre, ONLY : alphax USE coefils, ONLY : coefilu, coefilu2, coefilv, coefilv2, eignfnu, & eignfnv, modfrstu, modfrstv + USE comgeom, ONLY : rlatu, rlatv, xprimu + USE dimens_m, ONLY : iim, jjm + use inifgn_m, only: inifgn + use nr_util, only: pi + USE serre, ONLY : grossismx ! Local: - REAL dlonu(iim), dlatu(jjm) + REAL dlatu(jjm) REAL rlamda(2: iim), eignvl(iim) REAL lamdamax, cof INTEGER i, j, modemax, imx, k, kf - REAL dymin, dxmin, colat0 + REAL dymin, colat0 REAL eignft(iim, iim), coff - EXTERNAL inifgn !----------------------------------------------------------- print *, "Call sequence information: inifilr" - DO i = 1, iim - dlonu(i) = xprimu(i) - END DO - CALL inifgn(eignvl) PRINT *, 'EIGNVL ' @@ -79,32 +74,16 @@ dlatu(j) = rlatu(j) - rlatu(j+1) END DO - dxmin = dlonu(1) - DO i = 2, iim - dxmin = min(dxmin, dlonu(i)) - END DO dymin = dlatu(1) DO j = 2, jjm dymin = min(dymin, dlatu(j)) END DO - colat0 = min(0.5, dymin/dxmin) - - IF (.NOT. fxyhypb .AND. ysinus) THEN - colat0 = 0.6 - ! À revoir pour ysinus - alphax = 0. - END IF + colat0 = min(0.5, dymin / minval(xprimu(:iim))) PRINT *, 'colat0 = ', colat0 - PRINT *, 'alphax = ', alphax - - IF (alphax == 1.) THEN - PRINT *, 'alphax doit etre < a 1. Corriger ' - STOP 1 - END IF - lamdamax = iim / (pi * colat0 * (1. - alphax)) + lamdamax = iim / (pi * colat0 / grossismx) rlamda = lamdamax / sqrt(abs(eignvl(2: iim))) DO j = 1, jjm