GCC Code Coverage Report


Directory: ./
File: phys/cal_tools_m.f90
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 0 20 0.0%
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
90