1 |
|
|
module principal_cshift_m |
2 |
|
|
|
3 |
|
|
implicit none |
4 |
|
|
|
5 |
|
|
contains |
6 |
|
|
|
7 |
✗✓✗✓
|
4 |
subroutine principal_cshift(is2, xlon, xprimm) |
8 |
|
|
|
9 |
|
|
! Add or subtract 2 pi so that xlon is near [-pi, pi], then cshift |
10 |
|
|
! so that xlon is in ascending order. Make the same cshift on |
11 |
|
|
! xprimm. |
12 |
|
|
|
13 |
|
|
use nrtype, only: twopi |
14 |
|
|
use serre_mod, only: clon |
15 |
|
|
|
16 |
|
|
include "dimensions.h" |
17 |
|
|
! for iim |
18 |
|
|
|
19 |
|
|
integer, intent(in):: is2 |
20 |
|
|
real, intent(inout):: xlon(:), xprimm(:) ! (iim + 1) |
21 |
|
|
|
22 |
|
|
!----------------------------------------------------- |
23 |
|
|
|
24 |
✗✓ |
4 |
if (is2 /= 0) then |
25 |
|
|
IF (clon <= 0.) THEN |
26 |
|
|
IF (is2 /= 1) THEN |
27 |
|
|
xlon(:is2 - 1) = xlon(:is2 - 1) + twopi |
28 |
|
|
xlon(:iim) = cshift(xlon(:iim), shift = is2 - 1) |
29 |
|
|
xprimm(:iim) = cshift(xprimm(:iim), shift = is2 - 1) |
30 |
|
|
END IF |
31 |
|
|
else |
32 |
|
|
xlon(is2 + 1:iim) = xlon(is2 + 1:iim) - twopi |
33 |
|
|
xlon(:iim) = cshift(xlon(:iim), shift = is2) |
34 |
|
|
xprimm(:iim) = cshift(xprimm(:iim), shift = is2) |
35 |
|
|
end IF |
36 |
|
|
end if |
37 |
|
|
|
38 |
|
4 |
xlon(iim + 1) = xlon(1) + twopi |
39 |
|
4 |
xprimm(iim + 1) = xprimm(1) |
40 |
|
|
|
41 |
|
4 |
end subroutine principal_cshift |
42 |
|
|
|
43 |
|
|
end module principal_cshift_m |