GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: phylmd/rrtm/gridpoint_buffers.F90 Lines: 0 32 0.0 %
Date: 2023-06-30 12:56:34 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
#include "abor1.intfb.h"
48
49
!-----------------------------------------------------------------------
50
51
CONTAINS
52
SUBROUTINE ALLOCATE_GRIDPOINT_BUFFER (CDNAME,YDGPBUF,KFIELDS,KPACK, &
53
                                &     KGPTOT)
54
55
TYPE (gridpoint_buffer),INTENT(OUT)        :: YDGPBUF
56
CHARACTER(LEN=*) , INTENT(IN)  :: CDNAME
57
INTEGER(KIND=JPIM)        , INTENT(IN)  :: KFIELDS,KPACK
58
INTEGER(KIND=JPIM)        , INTENT(IN),OPTIONAL  :: KGPTOT
59
60
INTEGER(KIND=JPIM)   ::   J, IGPTOT
61
REAL(KIND=JPRB)      :: ZDUM
62
REAL(KIND=JPRB) :: ZHOOK_HANDLE
63
64
IF (LHOOK) CALL DR_HOOK('GRIDPOINT_BUFFERS:ALLOCATE_GRIDPOINT_BUFFER',0,ZHOOK_HANDLE)
65
66
IF(PRESENT(KGPTOT))THEN
67
   IGPTOT=KGPTOT
68
ELSE
69
   IGPTOT=NGPTOT
70
ENDIF
71
72
ALLOCATE (YDGPBUF%CLNAME(LEN(CDNAME)))
73
74
DO J=1,LEN(CDNAME)
75
  YDGPBUF%CLNAME(J)  = CDNAME(J:J)
76
ENDDO
77
78
YDGPBUF%IFIELDS = KFIELDS
79
YDGPBUF%IPACK   = KPACK
80
81
IF (KPACK > 1) CALL ABOR1('ALLOCATE_GRIDPOINT_BUFFER: KPACK > 1')
82
YDGPBUF%IBLEN = IGPTOT  * KFIELDS
83
84
ALLOCATE (YDGPBUF%GPBUF(YDGPBUF%IBLEN))
85
IF (NPRINTLEV >= 1.OR. LALLOPR) &
86
 & WRITE(NULOUT,91) CDNAME,SIZE(YDGPBUF%GPBUF),SHAPE(YDGPBUF%GPBUF)
87
YDGPBUF%GPBUF(:) = HUGE(ZDUM)
88
YDGPBUF%LFILLED = .FALSE.
89
90
IF (LHOOK) CALL DR_HOOK('GRIDPOINT_BUFFERS:ALLOCATE_GRIDPOINT_BUFFER',1,ZHOOK_HANDLE)
91
91  FORMAT(1X,'ALLOCATED GRIDPOINT BUFFER ',A,', SIZE=',I8,', SHAPE=',7I8)
92
END SUBROUTINE ALLOCATE_GRIDPOINT_BUFFER
93
94
SUBROUTINE DEALLOCATE_GRIDPOINT_BUFFER (YDGPBUF)
95
TYPE (gridpoint_buffer),INTENT(INOUT) :: YDGPBUF
96
INTEGER(KIND=JPIM) :: J
97
REAL(KIND=JPRB) :: ZHOOK_HANDLE
98
99
IF (LHOOK) CALL DR_HOOK('GRIDPOINT_BUFFERS:DEALLOCATE_GRIDPOINT_BUFFER',0,ZHOOK_HANDLE)
100
IF (NPRINTLEV >= 1.OR. LALLOPR) &
101
 & WRITE(NULOUT,92) (YDGPBUF%CLNAME(J),J=1,SIZE(YDGPBUF%CLNAME))
102
103
DEALLOCATE (YDGPBUF%GPBUF)
104
DEALLOCATE (YDGPBUF%CLNAME)
105
YDGPBUF%LFILLED = .FALSE.
106
107
IF (LHOOK) CALL DR_HOOK('GRIDPOINT_BUFFERS:DEALLOCATE_GRIDPOINT_BUFFER',1,ZHOOK_HANDLE)
108
92  FORMAT(1X,'DEALLOCATED GRIDPOINT BUFFER:,',100A1)
109
END SUBROUTINE DEALLOCATE_GRIDPOINT_BUFFER
110
111
LOGICAL FUNCTION ALLOCATED_GRIDPOINT_BUFFER (YDGPBUF)
112
TYPE (gridpoint_buffer),INTENT(IN) :: YDGPBUF
113
ALLOCATED_GRIDPOINT_BUFFER =  ASSOCIATED (YDGPBUF%GPBUF)
114
END FUNCTION ALLOCATED_GRIDPOINT_BUFFER
115
116
END MODULE GRIDPOINT_BUFFERS
117