--- trunk/libf/filtrez/filtreg.f90 2010/03/25 14:29:07 27 +++ trunk/libf/filtrez/filtreg.f90 2010/12/21 15:45:48 37 @@ -7,13 +7,13 @@ SUBROUTINE filtreg(champ, nlat, nbniv, ifiltre, iaire, griscal, iter) ! From filtrez/filtreg.F, version 1.1.1.1, 2004/05/19 12:53:09 - ! Author: P. Le Van ! Objet : filtre matriciel longitudinal, avec les matrices précalculées ! pour l'opérateur filtre. USE dimens_m, ONLY : iim, jjm - USE parafilt, ONLY : nfilun, nfilus, nfilvn, nfilvs + USE parafilt, ONLY: matriceun, matriceus, matricevn, matricevs, matrinvn, & + matrinvs USE coefils, ONLY : jfiltnu, jfiltnv, jfiltsu, jfiltsv, sddu, sddv, & unsddu, unsddv @@ -48,10 +48,6 @@ INTEGER jdfil1, jdfil2, jffil1, jffil2, jdfil, jffil INTEGER i, j, l, k - REAL matriceun, matriceus, matricevn, matricevs, matrinvn, matrinvs - COMMON /matrfil/matriceun(iim, iim, nfilun), matriceus(iim, iim, nfilus), & - matricevn(iim, iim, nfilvn), matricevs(iim, iim, nfilvs), & - matrinvn(iim, iim, nfilun), matrinvs(iim, iim, nfilus) REAL eignq(iim), sdd1(iim), sdd2(iim) INTEGER hemisph @@ -85,11 +81,11 @@ ELSE IF (iaire==1) THEN - CALL scopy(iim, sddv, 1, sdd1, 1) - CALL scopy(iim, unsddv, 1, sdd2, 1) + sdd1 = sddv + sdd2 = unsddv ELSE - CALL scopy(iim, unsddv, 1, sdd1, 1) - CALL scopy(iim, sddv, 1, sdd2, 1) + sdd1 = unsddv + sdd2 = sddv END IF jdfil1 = 2 @@ -104,11 +100,11 @@ ELSE IF (iaire==1) THEN - CALL scopy(iim, sddu, 1, sdd1, 1) - CALL scopy(iim, unsddu, 1, sdd2, 1) + sdd1 = sddu + sdd2 = unsddu ELSE - CALL scopy(iim, unsddu, 1, sdd1, 1) - CALL scopy(iim, sddu, 1, sdd2, 1) + sdd1 = unsddu + sdd2 = sddu END IF jdfil1 = 1 @@ -156,7 +152,8 @@ END DO DO i = 1, iim DO k = 1, iim - eignq(k) = eignq(k) + matriceun(k, i, j)*champ(i, j, l) + eignq(k) = eignq(k) + matriceun(k, i, j) & + * champ(i, j, l) END DO END DO ELSE @@ -165,7 +162,8 @@ END DO DO i = 1, iim DO k = 1, iim - eignq(k) = eignq(k) + matricevn(k, i, j)*champ(i, j, l) + eignq(k) = eignq(k) + matricevn(k, i, j) & + * champ(i, j, l) END DO END DO END IF