SURFEX v8.1
General documentation of Surfex
fdbsubs_mod.F90
Go to the documentation of this file.
1 MODULE fdbsubs_mod
2 !
3 !== fdbsubs_mod.F90 ==
4 !
5 ! A module to encapsulate FDB-calls in order to call Dr.Hook
6 !
7 ! Author: Sami Saarinen, 22-Mar-2004
8 !
9 
10 USE parkind1 , ONLY : jpim,jprb,jprm
11 USE yomhook , ONLY : lhook, dr_hook
12 
13 IMPLICIT NONE
14 
15 PUBLIC
16 SAVE
17 
18 INTEGER(KIND=JPIM), EXTERNAL :: iclosefdb
19 INTEGER(KIND=JPIM), EXTERNAL :: iflushfdb
20 INTEGER(KIND=JPIM), EXTERNAL :: iinitfdb
21 INTEGER(KIND=JPIM), EXTERNAL :: iopenfdb
22 INTEGER(KIND=JPIM), EXTERNAL :: ireadfdb
23 INTEGER(KIND=JPIM), EXTERNAL :: isetcommfdb
24 INTEGER(KIND=JPIM), EXTERNAL :: isetfieldcountfdb
25 INTEGER(KIND=JPIM), EXTERNAL :: isetrankfdb
26 INTEGER(KIND=JPIM), EXTERNAL :: isetvalfdb
27 INTEGER(KIND=JPIM), EXTERNAL :: iset_fdb_root
28 INTEGER(KIND=JPIM), EXTERNAL :: iwritefdb
29 
30 CONTAINS
31 
32 FUNCTION iclosefdbsubs(KFDB) RESULT(IRET)
33 INTEGER(KIND=JPIM),INTENT(INOUT) :: KFDB
34 INTEGER(KIND=JPIM) :: IRET
35 REAL(KIND=JPRB) :: ZHOOK_HANDLE
36 IF (lhook) CALL dr_hook('ICLOSEFDB',0,zhook_handle)
37 iret = iclosefdb(kfdb)
38 IF (lhook) CALL dr_hook('ICLOSEFDB',1,zhook_handle)
39 END FUNCTION iclosefdbsubs
40 
41 FUNCTION iflushfdbsubs(KFDB) RESULT(IRET)
42 INTEGER(KIND=JPIM),INTENT(INOUT) :: KFDB
43 INTEGER(KIND=JPIM) :: IRET
44 REAL(KIND=JPRB) :: ZHOOK_HANDLE
45 IF (lhook) CALL dr_hook('IFLUSHFDB',0,zhook_handle)
46 iret = iflushfdb(kfdb)
47 IF (lhook) CALL dr_hook('IFLUSHFDB',1,zhook_handle)
48 END FUNCTION iflushfdbsubs
49 
50 FUNCTION iinitfdbsubs() RESULT(IRET)
51 INTEGER(KIND=JPIM) :: IRET
52 REAL(KIND=JPRB) :: ZHOOK_HANDLE
53 IF (lhook) CALL dr_hook('IINITFDB',0,zhook_handle)
54 iret = iinitfdb()
55 IF (lhook) CALL dr_hook('IINITFDB',1,zhook_handle)
56 END FUNCTION iinitfdbsubs
57 
58 FUNCTION iopenfdbsubs(CDFDB,KFDB,CDMODE) RESULT(IRET)
59 CHARACTER(LEN=*), INTENT(IN) :: CDFDB, CDMODE
60 INTEGER(KIND=JPIM),INTENT(INOUT) :: KFDB
61 INTEGER(KIND=JPIM) :: IRET
62 REAL(KIND=JPRB) :: ZHOOK_HANDLE
63 IF (lhook) CALL dr_hook('IOPENFDB',0,zhook_handle)
64 iret = iopenfdb(cdfdb,kfdb,cdmode)
65 IF (lhook) CALL dr_hook('IOPENFDB',1,zhook_handle)
66 END FUNCTION iopenfdbsubs
67 
68 FUNCTION ireadfdbsubs(KFDB,KGRIB,KLEN) RESULT(IRET)
69 INTEGER(KIND=JPIM),INTENT(INOUT) :: KFDB,KLEN,KGRIB(:)
70 INTEGER(KIND=JPIM) :: IRET
71 REAL(KIND=JPRB) :: ZHOOK_HANDLE
72 IF (lhook) CALL dr_hook('IREADFDB',0,zhook_handle)
73 IF (SIZE(kgrib) > 0) THEN
74  iret = ireadfdb(kfdb, kgrib(1), klen)
75 ELSE
76  iret = ireadfdb(kfdb, kgrib, klen)
77 ENDIF
78 IF (lhook) CALL dr_hook('IREADFDB',1,zhook_handle)
79 END FUNCTION ireadfdbsubs
80 
81 FUNCTION isetcommfdbsubs(KCOMM) RESULT(IRET)
82 INTEGER(KIND=JPIM),INTENT(INOUT) :: KCOMM
83 INTEGER(KIND=JPIM) :: IRET
84 REAL(KIND=JPRB) :: ZHOOK_HANDLE
85 IF (lhook) CALL dr_hook('ISETCOMMFDB',0,zhook_handle)
86 iret = isetcommfdb(kcomm)
87 IF (lhook) CALL dr_hook('ISETCOMMFDB',1,zhook_handle)
88 END FUNCTION isetcommfdbsubs
89 
90 FUNCTION isetfieldcountfdbsubs(KFDB,KGLOBAL,KLOCAL) RESULT(IRET)
91 INTEGER(KIND=JPIM),INTENT(INOUT) :: KFDB
92 INTEGER(KIND=JPIM),INTENT(IN) :: KGLOBAL,KLOCAL
93 INTEGER(KIND=JPIM) :: IRET
94 REAL(KIND=JPRB) :: ZHOOK_HANDLE
95 IF (lhook) CALL dr_hook('ISETFIELDCOUNTFDB',0,zhook_handle)
96 iret = isetfieldcountfdb(kfdb,kglobal,klocal)
97 IF (lhook) CALL dr_hook('ISETFIELDCOUNTFDB',1,zhook_handle)
98 END FUNCTION isetfieldcountfdbsubs
99 
100 FUNCTION isetrankfdbsubs(KFDB,KLEV) RESULT(IRET)
101 INTEGER(KIND=JPIM),INTENT(INOUT) :: KFDB,KLEV
102 INTEGER(KIND=JPIM) :: IRET
103 REAL(KIND=JPRB) :: ZHOOK_HANDLE
104 IF (lhook) CALL dr_hook('ISETRANKFDB',0,zhook_handle)
105 iret = isetrankfdb(kfdb,klev)
106 IF (lhook) CALL dr_hook('ISETRANKFDB',1,zhook_handle)
107 END FUNCTION isetrankfdbsubs
108 
109 FUNCTION isetvalfdbsubs(KFDB,CDNAME,CDKIND) RESULT(IRET)
110 INTEGER(KIND=JPIM),INTENT(INOUT) :: KFDB
111 CHARACTER(LEN=*), INTENT(IN) :: CDNAME,CDKIND
112 INTEGER(KIND=JPIM) :: IRET
113 REAL(KIND=JPRB) :: ZHOOK_HANDLE
114 IF (lhook) CALL dr_hook('ISETVALFDB',0,zhook_handle)
115 iret = isetvalfdb(kfdb,cdname,cdkind)
116 IF (lhook) CALL dr_hook('ISETVALFDB',1,zhook_handle)
117 END FUNCTION isetvalfdbsubs
118 
119 FUNCTION iset_fdbsubs_root(KFDB,CDNAME) RESULT(IRET)
120 INTEGER(KIND=JPIM),INTENT(INOUT) :: KFDB
121 CHARACTER(LEN=*), INTENT(INOUT) :: CDNAME
122 INTEGER(KIND=JPIM) :: IRET
123 REAL(KIND=JPRB) :: ZHOOK_HANDLE
124 IF (lhook) CALL dr_hook('ISET_FDB_ROOT',0,zhook_handle)
125 iret = iset_fdb_root(kfdb,cdname)
126 IF (lhook) CALL dr_hook('ISET_FDB_ROOT',1,zhook_handle)
127 END FUNCTION iset_fdbsubs_root
128 
129 FUNCTION iwritefdbsubs(KFDB,KGRIB,KLEN) RESULT(IRET)
130 INTEGER(KIND=JPIM),INTENT(INOUT) :: KFDB,KLEN,KGRIB(:)
131 INTEGER(KIND=JPIM) :: IRET
132 REAL(KIND=JPRB) :: ZHOOK_HANDLE
133 IF (lhook) CALL dr_hook('IWRITEFDB',0,zhook_handle)
134 IF (SIZE(kgrib) > 0) THEN
135  iret = iwritefdb(kfdb, kgrib(1), klen)
136 ELSE
137  iret = iwritefdb(kfdb, kgrib, klen)
138 ENDIF
139 IF (lhook) CALL dr_hook('IWRITEFDB',1,zhook_handle)
140 END FUNCTION iwritefdbsubs
141 
142 END MODULE fdbsubs_mod
integer(kind=jpim) function isetcommfdbsubs(KCOMM)
Definition: fdbsubs_mod.F90:82
integer(kind=jpim) function ireadfdbsubs(KFDB, KGRIB, KLEN)
Definition: fdbsubs_mod.F90:69
integer, parameter jpim
Definition: parkind1.F90:13
integer(kind=jpim), external isetcommfdb
Definition: fdbsubs_mod.F90:23
integer(kind=jpim), external ireadfdb
Definition: fdbsubs_mod.F90:22
integer(kind=jpim) function isetfieldcountfdbsubs(KFDB, KGLOBAL, KLOCAL)
Definition: fdbsubs_mod.F90:91
integer(kind=jpim), external iflushfdb
Definition: fdbsubs_mod.F90:19
integer(kind=jpim) function iopenfdbsubs(CDFDB, KFDB, CDMODE)
Definition: fdbsubs_mod.F90:59
integer(kind=jpim), external iinitfdb
Definition: fdbsubs_mod.F90:20
integer(kind=jpim), external isetrankfdb
Definition: fdbsubs_mod.F90:25
integer(kind=jpim), external iclosefdb
Definition: fdbsubs_mod.F90:18
integer(kind=jpim) function iset_fdbsubs_root(KFDB, CDNAME)
integer(kind=jpim), external iopenfdb
Definition: fdbsubs_mod.F90:21
integer(kind=jpim) function isetvalfdbsubs(KFDB, CDNAME, CDKIND)
integer, parameter jprb
Definition: parkind1.F90:32
integer(kind=jpim), external iwritefdb
Definition: fdbsubs_mod.F90:28
integer, parameter jprm
Definition: parkind1.F90:30
integer(kind=jpim) function iwritefdbsubs(KFDB, KGRIB, KLEN)
logical lhook
Definition: yomhook.F90:15
integer(kind=jpim), external isetvalfdb
Definition: fdbsubs_mod.F90:26
integer(kind=jpim), external iset_fdb_root
Definition: fdbsubs_mod.F90:27
integer(kind=jpim) function iflushfdbsubs(KFDB)
Definition: fdbsubs_mod.F90:42
integer(kind=jpim) function iclosefdbsubs(KFDB)
Definition: fdbsubs_mod.F90:33
integer(kind=jpim), external isetfieldcountfdb
Definition: fdbsubs_mod.F90:24
integer(kind=jpim) function isetrankfdbsubs(KFDB, KLEV)
integer(kind=jpim) function iinitfdbsubs()
Definition: fdbsubs_mod.F90:51