GCC Code Coverage Report


Directory: ./
File: rad/gridpoint_buffers.f90
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 0 32 0.0%
Branches: 0 42 0.0%

Line Branch Exec Source
1 MODULE GRIDPOINT_BUFFERS
2
3 ! Purpose.
4 ! --------
5 ! GRIDPOINT_BUFFERS defines the type "gridpoint buffer",
6 ! and the operations to create and destroy instances of
7 ! the type.
8
9 ! Author.
10 ! -------
11 ! Mike Fisher *ECMWF*
12
13 ! Modifications.
14 ! --------------
15 ! Original : 1999-11-10
16 ! M.Hamrud 01-Oct-2003 CY28 Cleaning
17
18 ! ------------------------------------------------------------------
19
20 USE PARKIND1 ,ONLY : JPIM ,JPRB
21 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK
22
23 USE YOMCT0 , ONLY : NPRINTLEV , LALLOPR
24 USE YOMGEM , ONLY : NGPTOT
25 USE YOMLUN , ONLY : NULOUT
26
27 IMPLICIT NONE
28 SAVE
29
30 PRIVATE
31 PUBLIC gridpoint_buffer, &
32 & ALLOCATE_GRIDPOINT_BUFFER, &
33 & ALLOCATED_GRIDPOINT_BUFFER, &
34 & DEALLOCATE_GRIDPOINT_BUFFER
35
36 TYPE gridpoint_buffer
37 CHARACTER(LEN=1), POINTER :: CLNAME(:)
38 INTEGER(KIND=JPIM) :: IFIELDS
39 INTEGER(KIND=JPIM) :: IDGEN
40 INTEGER(KIND=JPIM) :: IDGENL
41 INTEGER(KIND=JPIM) :: IBLEN
42 INTEGER(KIND=JPIM) :: IPACK
43 LOGICAL :: LFILLED
44 REAL(KIND=JPRB), POINTER :: GPBUF(:)
45 END TYPE gridpoint_buffer
46
47 INTERFACE
48 SUBROUTINE ABOR1(CDTEXT)
49 CHARACTER(LEN=*) :: CDTEXT
50 END SUBROUTINE ABOR1
51 END INTERFACE
52
53 !-----------------------------------------------------------------------
54
55 CONTAINS
56 SUBROUTINE ALLOCATE_GRIDPOINT_BUFFER (CDNAME,YDGPBUF,KFIELDS,KPACK, &
57 & KGPTOT)
58
59 TYPE (gridpoint_buffer),INTENT(OUT) :: YDGPBUF
60 CHARACTER(LEN=*) , INTENT(IN) :: CDNAME
61 INTEGER(KIND=JPIM) , INTENT(IN) :: KFIELDS,KPACK
62 INTEGER(KIND=JPIM) , INTENT(IN),OPTIONAL :: KGPTOT
63
64 INTEGER(KIND=JPIM) :: J, IGPTOT
65 REAL(KIND=JPRB) :: ZDUM
66 REAL(KIND=JPRB) :: ZHOOK_HANDLE
67
68 IF (LHOOK) CALL DR_HOOK('GRIDPOINT_BUFFERS:ALLOCATE_GRIDPOINT_BUFFER',0,ZHOOK_HANDLE)
69
70 IF(PRESENT(KGPTOT))THEN
71 IGPTOT=KGPTOT
72 ELSE
73 IGPTOT=NGPTOT
74 ENDIF
75
76 ALLOCATE (YDGPBUF%CLNAME(LEN(CDNAME)))
77
78 DO J=1,LEN(CDNAME)
79 YDGPBUF%CLNAME(J) = CDNAME(J:J)
80 ENDDO
81
82 YDGPBUF%IFIELDS = KFIELDS
83 YDGPBUF%IPACK = KPACK
84
85 IF (KPACK > 1) CALL ABOR1('ALLOCATE_GRIDPOINT_BUFFER: KPACK > 1')
86 YDGPBUF%IBLEN = IGPTOT * KFIELDS
87
88 ALLOCATE (YDGPBUF%GPBUF(YDGPBUF%IBLEN))
89 IF (NPRINTLEV >= 1.OR. LALLOPR) &
90 & WRITE(NULOUT,91) CDNAME,SIZE(YDGPBUF%GPBUF),SHAPE(YDGPBUF%GPBUF)
91 YDGPBUF%GPBUF(:) = HUGE(ZDUM)
92 YDGPBUF%LFILLED = .FALSE.
93
94 IF (LHOOK) CALL DR_HOOK('GRIDPOINT_BUFFERS:ALLOCATE_GRIDPOINT_BUFFER',1,ZHOOK_HANDLE)
95 91 FORMAT(1X,'ALLOCATED GRIDPOINT BUFFER ',A,', SIZE=',I8,', SHAPE=',7I8)
96 END SUBROUTINE ALLOCATE_GRIDPOINT_BUFFER
97
98 SUBROUTINE DEALLOCATE_GRIDPOINT_BUFFER (YDGPBUF)
99 TYPE (gridpoint_buffer),INTENT(INOUT) :: YDGPBUF
100 INTEGER(KIND=JPIM) :: J
101 REAL(KIND=JPRB) :: ZHOOK_HANDLE
102
103 IF (LHOOK) CALL DR_HOOK('GRIDPOINT_BUFFERS:DEALLOCATE_GRIDPOINT_BUFFER',0,ZHOOK_HANDLE)
104 IF (NPRINTLEV >= 1.OR. LALLOPR) &
105 & WRITE(NULOUT,92) (YDGPBUF%CLNAME(J),J=1,SIZE(YDGPBUF%CLNAME))
106
107 DEALLOCATE (YDGPBUF%GPBUF)
108 DEALLOCATE (YDGPBUF%CLNAME)
109 YDGPBUF%LFILLED = .FALSE.
110
111 IF (LHOOK) CALL DR_HOOK('GRIDPOINT_BUFFERS:DEALLOCATE_GRIDPOINT_BUFFER',1,ZHOOK_HANDLE)
112 92 FORMAT(1X,'DEALLOCATED GRIDPOINT BUFFER:,',100A1)
113 END SUBROUTINE DEALLOCATE_GRIDPOINT_BUFFER
114
115 LOGICAL FUNCTION ALLOCATED_GRIDPOINT_BUFFER (YDGPBUF)
116 TYPE (gridpoint_buffer),INTENT(IN) :: YDGPBUF
117 ALLOCATED_GRIDPOINT_BUFFER = ASSOCIATED (YDGPBUF%GPBUF)
118 END FUNCTION ALLOCATED_GRIDPOINT_BUFFER
119
120 END MODULE GRIDPOINT_BUFFERS
121
122