37 |
integer, allocatable:: modfrst(:) ! (jfilt:n) in {2, ..., iim} |
integer, allocatable:: modfrst(:) ! (jfilt:n) in {2, ..., iim} |
38 |
|
|
39 |
! Filtering coefficients (lamda_max * cos(rlat) / lamda): |
! Filtering coefficients (lamda_max * cos(rlat) / lamda): |
40 |
real coefil(iim) |
real coefil(2:iim) |
41 |
|
|
42 |
!----------------------------------------------------------- |
!----------------------------------------------------------- |
43 |
|
|
54 |
if (present(matrinv)) allocate(matrinv(iim, iim, n - jfilt + 1)) |
if (present(matrinv)) allocate(matrinv(iim, iim, n - jfilt + 1)) |
55 |
|
|
56 |
DO j = jfilt, n |
DO j = jfilt, n |
57 |
DO i = modfrst(j), iim |
coefil(modfrst(j):) = rlamda(modfrst(j):) * cos(rlat(j)) - 1. |
|
coefil(i) = rlamda(i) * cos(rlat(j)) - 1. |
|
|
end DO |
|
|
|
|
58 |
eignft(:modfrst(j) - 1, :) = 0. |
eignft(:modfrst(j) - 1, :) = 0. |
59 |
|
|
60 |
forall (i = modfrst(j):iim) eignft(i, :) = eignfn(:, i) * coefil(i) |
forall (i = modfrst(j):iim) eignft(i, :) = eignfn(:, i) * coefil(i) |