SURFEX v8.1
General documentation of Surfex
deallocate_if_associated_mod.F90
Go to the documentation of this file.
2 
3 !**** DEALLOCATE_IF_ASSOCIATED_MOD
4 
5 ! Purpose.
6 ! --------
7 ! The pattern "IF (ASSOCIATED(<pointer>)) DEALLOCATE(>pointer>)"
8 ! occurs all over the IFS. With this module, we can just do
9 ! "CALL DEALLOCATE_IF_ASSOCIATED(<pointer>)".
10 
11 !** Interface.
12 ! ----------
13 
14 ! CALL DEALLOCATE_IF_ASSOCIATED(P)
15 
16 ! Input required arguments :
17 ! -------------------------
18 ! P - A pointer to an array
19 
20 ! Author.
21 ! -------
22 ! Mike Fisher ECMWF
23 
24 ! Modifications.
25 ! --------------
26 ! Original: 2012-03-01
27 
28 ! ------------------------------------------------------------------
29 
30 USE parkind1 ,ONLY : jpim ,jprb
31 USE yomhook ,ONLY : lhook, dr_hook
32 
33 SAVE
34 PRIVATE
36 
38  MODULE PROCEDURE deallocate_if_associated_real_1d, &
48 END INTERFACE
49 
50 ! ------------------------------------------------------------------
51 
52 CONTAINS
53 
54 ! ------------------------------------------------------------------
55 
56 SUBROUTINE deallocate_if_associated_real_1d (ZOBJ)
57  IMPLICIT NONE
58  REAL(KIND=JPRB), DIMENSION(:), POINTER :: ZOBJ
59  REAL(KIND=JPRB) :: ZHOOK_HANDLE
60 
61  IF (lhook) CALL dr_hook ('DEALLOCATE_IF_ASSOCIATED_MOD:DEALLOCATE_IF_ASSOCIATED_REAL_1D', &
62  & 0,zhook_handle)
63  IF (ASSOCIATED(zobj)) DEALLOCATE(zobj)
64  IF (lhook) CALL dr_hook ('DEALLOCATE_IF_ASSOCIATED_MOD:DEALLOCATE_IF_ASSOCIATED_REAL_1D', &
65  & 1,zhook_handle)
67 
68 ! ------------------------------------------------------------------
69 
70 SUBROUTINE deallocate_if_associated_real_2d (ZOBJ)
71  IMPLICIT NONE
72  REAL(KIND=JPRB), DIMENSION(:,:), POINTER :: ZOBJ
73  REAL(KIND=JPRB) :: ZHOOK_HANDLE
74 
75  IF (lhook) CALL dr_hook ('DEALLOCATE_IF_ASSOCIATED_MOD:DEALLOCATE_IF_ASSOCIATED_REAL_2D', &
76  & 0,zhook_handle)
77  IF (ASSOCIATED(zobj)) DEALLOCATE(zobj)
78  IF (lhook) CALL dr_hook ('DEALLOCATE_IF_ASSOCIATED_MOD:DEALLOCATE_IF_ASSOCIATED_REAL_2D', &
79  & 1,zhook_handle)
81 
82 ! ------------------------------------------------------------------
83 
84 SUBROUTINE deallocate_if_associated_real_3d (ZOBJ)
85  IMPLICIT NONE
86  REAL(KIND=JPRB), DIMENSION(:,:,:), POINTER :: ZOBJ
87  REAL(KIND=JPRB) :: ZHOOK_HANDLE
88 
89  IF (lhook) CALL dr_hook ('DEALLOCATE_IF_ASSOCIATED_MOD:DEALLOCATE_IF_ASSOCIATED_REAL_3D', &
90  & 0,zhook_handle)
91  IF (ASSOCIATED(zobj)) DEALLOCATE(zobj)
92  IF (lhook) CALL dr_hook ('DEALLOCATE_IF_ASSOCIATED_MOD:DEALLOCATE_IF_ASSOCIATED_REAL_3D', &
93  & 1,zhook_handle)
95 
96 ! ------------------------------------------------------------------
97 
98 SUBROUTINE deallocate_if_associated_real_4d (ZOBJ)
99  IMPLICIT NONE
100  REAL(KIND=JPRB), DIMENSION(:,:,:,:), POINTER :: ZOBJ
101  REAL(KIND=JPRB) :: ZHOOK_HANDLE
102 
103  IF (lhook) CALL dr_hook ('DEALLOCATE_IF_ASSOCIATED_MOD:DEALLOCATE_IF_ASSOCIATED_REAL_4D', &
104  & 0,zhook_handle)
105  IF (ASSOCIATED(zobj)) DEALLOCATE(zobj)
106  IF (lhook) CALL dr_hook ('DEALLOCATE_IF_ASSOCIATED_MOD:DEALLOCATE_IF_ASSOCIATED_REAL_4D', &
107  & 1,zhook_handle)
109 
110 ! ------------------------------------------------------------------
111 
112 SUBROUTINE deallocate_if_associated_real_5d (ZOBJ)
113  IMPLICIT NONE
114  REAL(KIND=JPRB), DIMENSION(:,:,:,:,:), POINTER :: ZOBJ
115  REAL(KIND=JPRB) :: ZHOOK_HANDLE
116 
117  IF (lhook) CALL dr_hook ('DEALLOCATE_IF_ASSOCIATED_MOD:DEALLOCATE_IF_ASSOCIATED_REAL_5D', &
118  & 0,zhook_handle)
119  IF (ASSOCIATED(zobj)) DEALLOCATE(zobj)
120  IF (lhook) CALL dr_hook ('DEALLOCATE_IF_ASSOCIATED_MOD:DEALLOCATE_IF_ASSOCIATED_REAL_5D', &
121  & 1,zhook_handle)
123 
124 ! ------------------------------------------------------------------
125 
126 SUBROUTINE deallocate_if_associated_integer_1d (KOBJ)
127  IMPLICIT NONE
128  INTEGER(KIND=JPIM), DIMENSION(:), POINTER :: KOBJ
129  REAL(KIND=JPRB) :: ZHOOK_HANDLE
130 
131  IF (lhook) CALL dr_hook ('DEALLOCATE_IF_ASSOCIATED_MOD:DEALLOCATE_IF_ASSOCIATED_INTEGER_1D', &
132  & 0,zhook_handle)
133  IF (ASSOCIATED(kobj)) DEALLOCATE(kobj)
134  IF (lhook) CALL dr_hook ('DEALLOCATE_IF_ASSOCIATED_MOD:DEALLOCATE_IF_ASSOCIATED_INTEGER_1D', &
135  & 1,zhook_handle)
137 
138 ! ------------------------------------------------------------------
139 
140 SUBROUTINE deallocate_if_associated_integer_2d (KOBJ)
141  IMPLICIT NONE
142  INTEGER(KIND=JPIM), DIMENSION(:,:), POINTER :: KOBJ
143  REAL(KIND=JPRB) :: ZHOOK_HANDLE
144 
145  IF (lhook) CALL dr_hook ('DEALLOCATE_IF_ASSOCIATED_MOD:DEALLOCATE_IF_ASSOCIATED_INTEGER_2D', &
146  & 0,zhook_handle)
147  IF (ASSOCIATED(kobj)) DEALLOCATE(kobj)
148  IF (lhook) CALL dr_hook ('DEALLOCATE_IF_ASSOCIATED_MOD:DEALLOCATE_IF_ASSOCIATED_INTEGER_2D', &
149  & 1,zhook_handle)
151 
152 ! ------------------------------------------------------------------
153 
154 SUBROUTINE deallocate_if_associated_integer_3d (KOBJ)
155  IMPLICIT NONE
156  INTEGER(KIND=JPIM), DIMENSION(:,:,:), POINTER :: KOBJ
157  REAL(KIND=JPRB) :: ZHOOK_HANDLE
158 
159  IF (lhook) CALL dr_hook ('DEALLOCATE_IF_ASSOCIATED_MOD:DEALLOCATE_IF_ASSOCIATED_INTEGER_3D', &
160  & 0,zhook_handle)
161  IF (ASSOCIATED(kobj)) DEALLOCATE(kobj)
162  IF (lhook) CALL dr_hook ('DEALLOCATE_IF_ASSOCIATED_MOD:DEALLOCATE_IF_ASSOCIATED_INTEGER_3D', &
163  & 1,zhook_handle)
165 
166 ! ------------------------------------------------------------------
167 
168 SUBROUTINE deallocate_if_associated_logical_1d (LDOBJ)
169  IMPLICIT NONE
170  LOGICAL, DIMENSION(:), POINTER :: LDOBJ
171  REAL(KIND=JPRB) :: ZHOOK_HANDLE
172 
173  IF (lhook) CALL dr_hook ('DEALLOCATE_IF_ASSOCIATED_MOD:DEALLOCATE_IF_ASSOCIATED_LOGICAL_1D', &
174  & 0,zhook_handle)
175  IF (ASSOCIATED(ldobj)) DEALLOCATE(ldobj)
176  IF (lhook) CALL dr_hook ('DEALLOCATE_IF_ASSOCIATED_MOD:DEALLOCATE_IF_ASSOCIATED_LOGICAL_1D', &
177  & 1,zhook_handle)
179 
180 ! ------------------------------------------------------------------
181 
182 SUBROUTINE deallocate_if_associated_logical_2d (LDOBJ)
183  IMPLICIT NONE
184  LOGICAL, DIMENSION(:,:), POINTER :: LDOBJ
185  REAL(KIND=JPRB) :: ZHOOK_HANDLE
186 
187  IF (lhook) CALL dr_hook ('DEALLOCATE_IF_ASSOCIATED_MOD:DEALLOCATE_IF_ASSOCIATED_LOGICAL_2D', &
188  & 0,zhook_handle)
189  IF (ASSOCIATED(ldobj)) DEALLOCATE(ldobj)
190  IF (lhook) CALL dr_hook ('DEALLOCATE_IF_ASSOCIATED_MOD:DEALLOCATE_IF_ASSOCIATED_LOGICAL_2D', &
191  & 1,zhook_handle)
193 
194 ! ------------------------------------------------------------------
195 
integer, parameter jpim
Definition: parkind1.F90:13
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15