4 |
|
|
5 |
contains |
contains |
6 |
|
|
7 |
subroutine filtreg_hemisph(champ, sdd1, sdd2, matri) |
subroutine filtreg_hemisph(champ, sdd, matri) |
8 |
|
|
9 |
USE dimens_m, ONLY: iim |
USE dimens_m, ONLY: iim |
10 |
|
|
11 |
REAL, intent(inout):: champ(:, :, :) ! (iim + 1, :, :) |
REAL, intent(inout):: champ(:, :, :) ! (iim + 1, :, :) |
12 |
REAL, intent(in):: sdd1(:), sdd2(:) ! (iim) |
REAL, intent(in):: sdd(:) ! (iim) |
13 |
real, intent(in), dimension(:, :, :):: matri ! (iim, iim, :) |
real, intent(in), dimension(:, :, :):: matri ! (iim, iim, :) |
14 |
|
|
15 |
! Local: |
! Local: |
19 |
|
|
20 |
DO l = 1, size(champ, 3) |
DO l = 1, size(champ, 3) |
21 |
DO j = 1, size(champ, 2) |
DO j = 1, size(champ, 2) |
22 |
champ(:iim, j, l) = champ(:iim, j, l) * sdd1 |
champ(:iim, j, l) = champ(:iim, j, l) * sdd |
23 |
champ(:iim, j, l) = (champ(:iim, j, l) & |
champ(:iim, j, l) = (champ(:iim, j, l) & |
24 |
+ matmul(matri(:, :, j), champ(:iim, j, l))) * sdd2 |
+ matmul(matri(:, :, j), champ(:iim, j, l))) / sdd |
25 |
champ(iim + 1, j, l) = champ(1, j, l) |
champ(iim + 1, j, l) = champ(1, j, l) |
26 |
END DO |
END DO |
27 |
END DO |
END DO |