1 |
module principal_cshift_m |
2 |
|
3 |
implicit none |
4 |
|
5 |
contains |
6 |
|
7 |
subroutine principal_cshift(is2, xlon, xprimm) |
8 |
|
9 |
USE dimens_m, ONLY: iim |
10 |
use nr_util, only: twopi |
11 |
use serre, only: clon |
12 |
|
13 |
integer, intent(in):: is2 |
14 |
real, intent(inout):: xlon(:), xprimm(:) ! (iim + 1) |
15 |
|
16 |
!----------------------------------------------------- |
17 |
|
18 |
if (is2 /= 0) then |
19 |
IF (clon <= 0.) THEN |
20 |
IF (is2 /= 1) THEN |
21 |
xlon(:is2 - 1) = xlon(:is2 - 1) + twopi |
22 |
xlon(:iim) = cshift(xlon(:iim), shift = is2 - 1) |
23 |
xprimm(:iim) = cshift(xprimm(:iim), shift = is2 - 1) |
24 |
END IF |
25 |
else |
26 |
xlon(is2 + 1:iim) = xlon(is2 + 1:iim) - twopi |
27 |
xlon(:iim) = cshift(xlon(:iim), shift = is2) |
28 |
xprimm(:iim) = cshift(xprimm(:iim), shift = is2) |
29 |
end IF |
30 |
end if |
31 |
|
32 |
xlon(iim + 1) = xlon(1) + twopi |
33 |
xprimm(iim + 1) = xprimm(1) |
34 |
|
35 |
end subroutine principal_cshift |
36 |
|
37 |
end module principal_cshift_m |