GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: dyn3d_common/principal_cshift_m.F90 Lines: 5 13 38.5 %
Date: 2023-06-30 12:56:34 Branches: 3 22 13.6 %

Line Branch Exec Source
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