GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: phylmd/cal_tools_m.F90 Lines: 0 20 0.0 %
Date: 2023-06-30 12:56:34 Branches: 0 20 0.0 %

Line Branch Exec Source
1
MODULE cal_tools_m
2
3
  USE ioipsl, ONLY: ioconf_calendar, ioget_mon_len, lock_calendar,             &
4
                     ioget_calendar, ioget_year_len
5
6
CONTAINS
7
8
!-------------------------------------------------------------------------------
9
!
10
FUNCTION year_len(y,cal_in)
11
!
12
!-------------------------------------------------------------------------------
13
  IMPLICIT NONE
14
!-------------------------------------------------------------------------------
15
! Arguments:
16
  INTEGER                                :: year_len
17
  INTEGER,                    INTENT(IN) :: y
18
  CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: cal_in
19
!-------------------------------------------------------------------------------
20
! Local variables:
21
  CHARACTER(LEN=20) :: cal_lmdz
22
!-------------------------------------------------------------------------------
23
  !--- No specified calendar: we need lmdz days number for current year
24
  IF(.NOT.PRESENT(cal_in)) THEN; year_len=ioget_year_len(y); RETURN; END IF
25
26
  !--- Get the lmdz calendar to reset at the end of the function
27
  CALL ioget_calendar(cal_lmdz)
28
29
  !--- Unlock calendar and set it to wanted one
30
  CALL lock_calendar(.FALSE.); CALL ioconf_calendar(TRIM(cal_in))
31
32
  !--- Get the number of days in this year
33
  year_len=ioget_year_len(y)
34
35
  !--- Back to original calendar
36
  CALL lock_calendar(.FALSE.); CALL ioconf_calendar(TRIM(cal_lmdz))
37
38
END FUNCTION year_len
39
!
40
!-------------------------------------------------------------------------------
41
42
43
!-------------------------------------------------------------------------------
44
!
45
FUNCTION mid_month(y,cal_in)
46
!
47
!-------------------------------------------------------------------------------
48
  IMPLICIT NONE
49
!-------------------------------------------------------------------------------
50
! Arguments:
51
  INTEGER,                    INTENT(IN) :: y           ! year
52
  CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: cal_in      ! calendar
53
  REAL,                    DIMENSION(14) :: mid_month   ! mid-bins times
54
!-------------------------------------------------------------------------------
55
! Local variables:
56
  CHARACTER(LEN=20)      :: cal_lmdz          ! lmdz current calendar
57
  INTEGER, DIMENSION(14) :: tlen              ! months lengths (days)
58
  INTEGER                :: m                 ! months counter
59
  INTEGER                :: nd                ! number of days
60
!-------------------------------------------------------------------------------
61
  IF(PRESENT(cal_in)) THEN
62
    CALL ioget_calendar(cal_lmdz)             !--- Keep track of lmdz calendar
63
    CALL lock_calendar(.FALSE.)               !--- Unlock calendar
64
    CALL ioconf_calendar(TRIM(cal_in))        !--- Change calendar to "cal_in"
65
  END IF
66
67
  !--- Get the length of each month
68
  tlen(1 )=ioget_mon_len(y-1,12)
69
  DO m=1,12; tlen(m+1)=ioget_mon_len(y,m); END DO
70
  tlen(14)=ioget_mon_len(y+1, 1)
71
72
  !--- Mid-bins times
73
  mid_month(1)=-0.5*REAL(tlen(1))
74
  DO m=2,14; mid_month(m)=mid_month(m-1)+0.5*REAL(tlen(m-1)+tlen(m)); END DO
75
76
  IF(PRESENT(cal_in)) THEN
77
    CALL lock_calendar(.FALSE.)               !--- Unlock calendar
78
    CALL ioconf_calendar(TRIM(cal_lmdz))      !--- Restore original calendar
79
  END IF
80
81
END FUNCTION mid_month
82
!
83
!-------------------------------------------------------------------------------
84
85
86
END MODULE cal_tools_m
87
!
88
!*******************************************************************************
89