SURFEX v8.1
General documentation of Surfex
yomhook.F90
Go to the documentation of this file.
1 MODULE yomhook
2 
3 USE parkind1 ,ONLY : jpim, jprb, jprm, jprd
4 
5 IMPLICIT NONE
6 
7 ! Used by "hook" function
8 ! LHOOK = true implies "hook" function will be called
9 ! Altough initialized to TRUE it will be reset by first call to
10 ! DR_HOOK unless we really want to use the hook function
11 
12 SAVE
13 PUBLIC
14 
15 LOGICAL :: lhook=.true.
16 
17 #include "dr_hook_util.h"
18 #include "dr_hook_util_multi.h"
19 
20 INTERFACE dr_hook
21 ! We want compile time mapping of DR_HOOK-arguments and not
22 ! to test OPTIONAL-arguments with PRESENT()-function, since
23 ! it costs more.
24 ! However, this "unrolling" approach cannot be streched much more
25 ! than this without making number of member-functions too large
26 ! (i.e. all the possible permutations of these "optional" args;
27 ! arguments that are not present in the DR_HOOK_DEFAULT -version)
28 
29 MODULE PROCEDURE &
32  dr_hook_file, &
33  dr_hook_size, &
39 END INTERFACE
40 
41 CONTAINS
42 
43 SUBROUTINE dr_hook_default4(CDNAME,KSWITCH,PKEY)
44 CHARACTER(LEN=*), INTENT(IN) :: CDNAME
45 INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH
46 REAL(KIND=JPRM), INTENT(INOUT) :: PKEY
47 REAL(KIND=JPRB) :: ZKEY
48 zkey = transfer(pkey,zkey)
49 CALL dr_hook_util(lhook,cdname,kswitch,zkey,'',0_jpim)
50 pkey = transfer(zkey,pkey)
51 END SUBROUTINE dr_hook_default4
52 
53 SUBROUTINE dr_hook_default8(CDNAME,KSWITCH,PKEY)
54 CHARACTER(LEN=*), INTENT(IN) :: CDNAME
55 INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH
56 REAL(KIND=JPRD), INTENT(INOUT) :: PKEY
57 REAL(KIND=JPRB) :: ZKEY
58 zkey = transfer(pkey,zkey)
59 CALL dr_hook_util(lhook,cdname,kswitch,zkey,'',0_jpim)
60 pkey = transfer(zkey,pkey)
61 END SUBROUTINE dr_hook_default8
62 
63 
64 
65 SUBROUTINE dr_hook_multi_default(CDNAME,KSWITCH,PKEY)
66 CHARACTER(LEN=*), INTENT(IN) :: CDNAME
67 INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH
68 REAL(KIND=JPRB), INTENT(INOUT) :: PKEY(:)
69 CALL dr_hook_util_multi(lhook,cdname,kswitch,pkey,int(SIZE(pkey)),'',0_jpim)
70 END SUBROUTINE dr_hook_multi_default
71 
72 
73 
74 SUBROUTINE dr_hook_file(CDNAME,KSWITCH,PKEY,CDFILE)
75 CHARACTER(LEN=*), INTENT(IN) :: CDNAME,CDFILE
76 INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH
77 REAL(KIND=JPRB), INTENT(INOUT) :: PKEY
78 CALL dr_hook_util(lhook,cdname,kswitch,pkey,cdfile,0_jpim)
79 END SUBROUTINE dr_hook_file
80 
81 SUBROUTINE dr_hook_multi_file(CDNAME,KSWITCH,PKEY,CDFILE)
82 CHARACTER(LEN=*), INTENT(IN) :: CDNAME,CDFILE
83 INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH
84 REAL(KIND=JPRB), INTENT(INOUT) :: PKEY(:)
85 CALL dr_hook_util_multi(lhook,cdname,kswitch,pkey,int(SIZE(pkey)),cdfile,0_jpim)
86 END SUBROUTINE dr_hook_multi_file
87 
88 
89 
90 SUBROUTINE dr_hook_size(CDNAME,KSWITCH,PKEY,KSIZEINFO)
91 CHARACTER(LEN=*), INTENT(IN) :: CDNAME
92 INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH,KSIZEINFO
93 REAL(KIND=JPRB), INTENT(INOUT) :: PKEY
94 CALL dr_hook_util(lhook,cdname,kswitch,pkey,'',ksizeinfo)
95 END SUBROUTINE dr_hook_size
96 
97 SUBROUTINE dr_hook_multi_size(CDNAME,KSWITCH,PKEY,KSIZEINFO)
98 CHARACTER(LEN=*), INTENT(IN) :: CDNAME
99 INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH,KSIZEINFO
100 REAL(KIND=JPRB), INTENT(INOUT) :: PKEY(:)
101 CALL dr_hook_util_multi(lhook,cdname,kswitch,pkey,int(SIZE(pkey)),'',ksizeinfo)
102 END SUBROUTINE dr_hook_multi_size
103 
104 
105 
106 SUBROUTINE dr_hook_file_size(CDNAME,KSWITCH,PKEY,CDFILE,KSIZEINFO)
107 CHARACTER(LEN=*), INTENT(IN) :: CDNAME,CDFILE
108 INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH,KSIZEINFO
109 REAL(KIND=JPRB), INTENT(INOUT) :: PKEY
110 CALL dr_hook_util(lhook,cdname,kswitch,pkey,cdfile,ksizeinfo)
111 END SUBROUTINE dr_hook_file_size
112 
113 SUBROUTINE dr_hook_multi_file_size(CDNAME,KSWITCH,PKEY,CDFILE,KSIZEINFO)
114 CHARACTER(LEN=*), INTENT(IN) :: CDNAME,CDFILE
115 INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH,KSIZEINFO
116 REAL(KIND=JPRB), INTENT(INOUT) :: PKEY(:)
117 CALL dr_hook_util_multi(lhook,cdname,kswitch,pkey,int(SIZE(pkey)),cdfile,ksizeinfo)
118 END SUBROUTINE dr_hook_multi_file_size
119 
120 END MODULE yomhook
subroutine dr_hook_default8(CDNAME, KSWITCH, PKEY)
Definition: yomhook.F90:54
subroutine dr_hook_file_size(CDNAME, KSWITCH, PKEY, CDFILE, KSIZEINFO)
Definition: yomhook.F90:107
integer, parameter jpim
Definition: parkind1.F90:13
integer, parameter jprd
Definition: parkind1.F90:39
subroutine dr_hook_file(CDNAME, KSWITCH, PKEY, CDFILE)
Definition: yomhook.F90:75
subroutine dr_hook_default4(CDNAME, KSWITCH, PKEY)
Definition: yomhook.F90:44
subroutine dr_hook_multi_file_size(CDNAME, KSWITCH, PKEY, CDFILE, KSIZEINFO)
Definition: yomhook.F90:114
integer, parameter jprb
Definition: parkind1.F90:32
subroutine dr_hook_multi_size(CDNAME, KSWITCH, PKEY, KSIZEINFO)
Definition: yomhook.F90:98
subroutine dr_hook_size(CDNAME, KSWITCH, PKEY, KSIZEINFO)
Definition: yomhook.F90:91
integer, parameter jprm
Definition: parkind1.F90:30
logical lhook
Definition: yomhook.F90:15
subroutine dr_hook_multi_default(CDNAME, KSWITCH, PKEY)
Definition: yomhook.F90:66
subroutine dr_hook_util_multi(LDHOOK, CDNAME, KCASE, PKEY, KPKEY, CDFILENAME, KSIZEINFO)
subroutine dr_hook_util(LDHOOK, CDNAME, KCASE, PKEY, CDFILENAME, KSIZEINFO)
Definition: dr_hook_util.F90:2
subroutine dr_hook_multi_file(CDNAME, KSWITCH, PKEY, CDFILE)
Definition: yomhook.F90:82