8 |
|
|
9 |
! From filtrez/filtreg.F, version 1.1.1.1, 2004/05/19 12:53:09 |
! From filtrez/filtreg.F, version 1.1.1.1, 2004/05/19 12:53:09 |
10 |
! Author: P. Le Van |
! Author: P. Le Van |
11 |
! Objet : filtre matriciel longitudinal, avec les matrices précalculées |
! Objet : filtre matriciel longitudinal, avec les matrices pr\'ecalcul\'ees |
12 |
! pour l'opérateur filtre. |
! pour l'op\'erateur filtre. |
13 |
|
|
14 |
USE coefils, ONLY: sddu, sddv, unsddu, unsddv |
USE coefils, ONLY: sddu, sddv, unsddu, unsddv |
15 |
USE dimens_m, ONLY: iim, jjm |
USE dimens_m, ONLY: iim, jjm |
18 |
use nr_util, only: assert |
use nr_util, only: assert |
19 |
|
|
20 |
REAL, intent(inout):: champ(:, :, :) ! (iim + 1, nlat, nbniv) |
REAL, intent(inout):: champ(:, :, :) ! (iim + 1, nlat, nbniv) |
21 |
! en entrée : champ à filtrer, en sortie : champ filtré |
! en entr\'ee : champ \`a filtrer, en sortie : champ filtr\'e |
22 |
|
|
23 |
logical, intent(in):: direct ! filtre direct ou inverse |
logical, intent(in):: direct ! filtre direct ou inverse |
24 |
|
|
25 |
logical, intent(in):: intensive |
logical, intent(in):: intensive |
26 |
! champ intensif ou extensif (pondéré par les aires) |
! champ intensif ou extensif (pond\'er\'e par les aires) |
27 |
|
|
28 |
! Local: |
! Local: |
29 |
LOGICAL griscal |
LOGICAL griscal |
30 |
INTEGER nlat ! nombre de latitudes à filtrer |
INTEGER nlat ! nombre de latitudes \`a filtrer |
31 |
integer nbniv ! nombre de niveaux verticaux à filtrer |
integer nbniv ! nombre de niveaux verticaux \`a filtrer |
32 |
INTEGER jdfil1, jdfil2, jffil1, jffil2, jdfil, jffil |
INTEGER jdfil1, jdfil2, jffil1, jffil2, jdfil, jffil |
33 |
INTEGER i, j, l, k |
INTEGER i, j, l, k |
34 |
REAL eignq(iim), sdd1(iim), sdd2(iim) |
REAL eignq(iim), sdd1(iim), sdd2(iim) |
75 |
jffil2 = jjm |
jffil2 = jjm |
76 |
END IF |
END IF |
77 |
|
|
78 |
DO hemisph = 1, 2 |
loop_hemisph: DO hemisph = 1, 2 |
79 |
IF (hemisph==1) THEN |
IF (hemisph==1) THEN |
80 |
jdfil = jdfil1 |
jdfil = jdfil1 |
81 |
jffil = jffil1 |
jffil = jffil1 |
168 |
champ(iim + 1, j, l) = champ(1, j, l) |
champ(iim + 1, j, l) = champ(1, j, l) |
169 |
END DO loop_latitude |
END DO loop_latitude |
170 |
END DO loop_vertical |
END DO loop_vertical |
171 |
end DO |
end DO loop_hemisph |
172 |
|
|
173 |
END SUBROUTINE filtreg |
END SUBROUTINE filtreg |
174 |
|
|