36 USE yomhook
,ONLY : lhook, dr_hook
37 USE parkind1
,ONLY : jprb
48 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
49 INTEGER,
INTENT(IN) :: ksw
56 CHARACTER(LEN=12) :: yrec
57 REAL(KIND=JPRB) :: zhook_handle
64 IF (lhook) CALL dr_hook(
'ALLOC_DIAG_SURF_ATM_N',0,zhook_handle)
65 ALLOCATE(dgu%XRI_TILE (u%NSIZE_FULL,ntilesfc))
66 ALLOCATE(dgu%XCD_TILE (u%NSIZE_FULL,ntilesfc))
67 ALLOCATE(dgu%XCH_TILE (u%NSIZE_FULL,ntilesfc))
68 ALLOCATE(dgu%XCE_TILE (u%NSIZE_FULL,ntilesfc))
69 ALLOCATE(dgu%XRN_TILE (u%NSIZE_FULL,ntilesfc))
70 ALLOCATE(dgu%XH_TILE (u%NSIZE_FULL,ntilesfc))
71 ALLOCATE(dgu%XLE_TILE (u%NSIZE_FULL,ntilesfc))
72 ALLOCATE(dgu%XLEI_TILE (u%NSIZE_FULL,ntilesfc))
73 ALLOCATE(dgu%XGFLUX_TILE (u%NSIZE_FULL,ntilesfc))
74 ALLOCATE(dgu%XEVAP_TILE (u%NSIZE_FULL,ntilesfc))
75 ALLOCATE(dgu%XSUBL_TILE (u%NSIZE_FULL,ntilesfc))
76 ALLOCATE(dgu%XT2M_TILE (u%NSIZE_FULL,ntilesfc))
77 ALLOCATE(dgu%XTS_TILE (u%NSIZE_FULL,ntilesfc))
78 ALLOCATE(dgu%XT2M_MIN_TILE(u%NSIZE_FULL,ntilesfc))
79 ALLOCATE(dgu%XT2M_MAX_TILE(u%NSIZE_FULL,ntilesfc))
80 ALLOCATE(dgu%XQ2M_TILE (u%NSIZE_FULL,ntilesfc))
81 ALLOCATE(dgu%XHU2M_TILE (u%NSIZE_FULL,ntilesfc))
82 ALLOCATE(dgu%XHU2M_MIN_TILE(u%NSIZE_FULL,ntilesfc))
83 ALLOCATE(dgu%XHU2M_MAX_TILE(u%NSIZE_FULL,ntilesfc))
84 ALLOCATE(dgu%XZON10M_TILE (u%NSIZE_FULL,ntilesfc))
85 ALLOCATE(dgu%XMER10M_TILE (u%NSIZE_FULL,ntilesfc))
86 ALLOCATE(dgu%XQS_TILE (u%NSIZE_FULL,ntilesfc))
87 ALLOCATE(dgu%XZ0_TILE (u%NSIZE_FULL,ntilesfc))
88 ALLOCATE(dgu%XZ0H_TILE (u%NSIZE_FULL,ntilesfc))
89 ALLOCATE(dgu%XSWD_TILE (u%NSIZE_FULL,ntilesfc))
90 ALLOCATE(dgu%XSWU_TILE (u%NSIZE_FULL,ntilesfc))
91 ALLOCATE(dgu%XLWD_TILE (u%NSIZE_FULL,ntilesfc))
92 ALLOCATE(dgu%XLWU_TILE (u%NSIZE_FULL,ntilesfc))
93 ALLOCATE(dgu%XSWBD_TILE (u%NSIZE_FULL,ntilesfc,ksw))
94 ALLOCATE(dgu%XSWBU_TILE (u%NSIZE_FULL,ntilesfc,ksw))
95 ALLOCATE(dgu%XFMU_TILE (u%NSIZE_FULL,ntilesfc))
96 ALLOCATE(dgu%XFMV_TILE (u%NSIZE_FULL,ntilesfc))
97 ALLOCATE(dgu%XWIND10M_TILE(u%NSIZE_FULL,ntilesfc))
98 ALLOCATE(dgu%XWIND10M_MAX_TILE(u%NSIZE_FULL,ntilesfc))
100 dgu%XRI_TILE = xundef
101 dgu%XCD_TILE = xundef
102 dgu%XCH_TILE = xundef
103 dgu%XCE_TILE = xundef
104 dgu%XRN_TILE = xundef
106 dgu%XLE_TILE = xundef
107 dgu%XLEI_TILE = xundef
108 dgu%XGFLUX_TILE = xundef
109 dgu%XEVAP_TILE = xundef
110 dgu%XSUBL_TILE = xundef
111 dgu%XT2M_TILE = xundef
112 dgu%XTS_TILE = xundef
113 dgu%XT2M_MIN_TILE = xundef
114 dgu%XT2M_MAX_TILE = xundef
115 dgu%XQ2M_TILE = xundef
116 dgu%XHU2M_TILE = xundef
117 dgu%XHU2M_MIN_TILE= xundef
118 dgu%XHU2M_MAX_TILE= xundef
119 dgu%XZON10M_TILE = xundef
120 dgu%XMER10M_TILE = xundef
121 dgu%XQS_TILE = xundef
122 dgu%XZ0_TILE = xundef
123 dgu%XZ0H_TILE = xundef
124 dgu%XSWD_TILE = xundef
125 dgu%XSWU_TILE = xundef
126 dgu%XLWD_TILE = xundef
127 dgu%XLWU_TILE = xundef
128 dgu%XSWBD_TILE = xundef
129 dgu%XSWBU_TILE = xundef
130 dgu%XFMU_TILE = xundef
131 dgu%XFMV_TILE = xundef
132 dgu%XWIND10M_TILE = xundef
133 dgu%XWIND10M_MAX_TILE = xundef
137 ALLOCATE(dgu%XAVG_RI (u%NSIZE_FULL))
138 ALLOCATE(dgu%XAVG_CD (u%NSIZE_FULL))
139 ALLOCATE(dgu%XAVG_CH (u%NSIZE_FULL))
140 ALLOCATE(dgu%XAVG_CE (u%NSIZE_FULL))
141 ALLOCATE(dgu%XAVG_RN (u%NSIZE_FULL))
142 ALLOCATE(dgu%XAVG_H (u%NSIZE_FULL))
143 ALLOCATE(dgu%XAVG_LE (u%NSIZE_FULL))
144 ALLOCATE(dgu%XAVG_LEI (u%NSIZE_FULL))
145 ALLOCATE(dgu%XAVG_GFLUX (u%NSIZE_FULL))
146 ALLOCATE(dgu%XAVG_EVAP (u%NSIZE_FULL))
147 ALLOCATE(dgu%XAVG_SUBL (u%NSIZE_FULL))
148 ALLOCATE(dgu%XAVG_T2M (u%NSIZE_FULL))
149 ALLOCATE(dgu%XAVG_TS (u%NSIZE_FULL))
150 ALLOCATE(dgu%XAVG_T2M_MIN(u%NSIZE_FULL))
151 ALLOCATE(dgu%XAVG_T2M_MAX(u%NSIZE_FULL))
152 ALLOCATE(dgu%XAVG_Q2M (u%NSIZE_FULL))
153 ALLOCATE(dgu%XAVG_HU2M (u%NSIZE_FULL))
154 ALLOCATE(dgu%XAVG_HU2M_MIN(u%NSIZE_FULL))
155 ALLOCATE(dgu%XAVG_HU2M_MAX(u%NSIZE_FULL))
156 ALLOCATE(dgu%XAVG_ZON10M (u%NSIZE_FULL))
157 ALLOCATE(dgu%XAVG_MER10M (u%NSIZE_FULL))
158 ALLOCATE(dgu%XAVG_SFCO2 (u%NSIZE_FULL))
159 ALLOCATE(dgu%XAVG_T2M_MIN_ZS (u%NSIZE_FULL))
160 ALLOCATE(dgu%XAVG_Q2M_MIN_ZS (u%NSIZE_FULL))
161 ALLOCATE(dgu%XAVG_HU2M_MIN_ZS (u%NSIZE_FULL))
162 ALLOCATE(dgu%XPS (u%NSIZE_FULL))
163 ALLOCATE(dgu%XRHOA (u%NSIZE_FULL))
164 ALLOCATE(dgu%XAVG_QS (u%NSIZE_FULL))
165 ALLOCATE(dgu%XAVG_Z0 (u%NSIZE_FULL))
166 ALLOCATE(dgu%XAVG_Z0H (u%NSIZE_FULL))
167 ALLOCATE(dgu%XAVG_SWD (u%NSIZE_FULL))
168 ALLOCATE(dgu%XAVG_SWU (u%NSIZE_FULL))
169 ALLOCATE(dgu%XAVG_LWD (u%NSIZE_FULL))
170 ALLOCATE(dgu%XAVG_LWU (u%NSIZE_FULL))
171 ALLOCATE(dgu%XAVG_SWBD (u%NSIZE_FULL,ksw))
172 ALLOCATE(dgu%XAVG_SWBU (u%NSIZE_FULL,ksw))
173 ALLOCATE(dgu%XAVG_FMU (u%NSIZE_FULL))
174 ALLOCATE(dgu%XAVG_FMV (u%NSIZE_FULL))
175 ALLOCATE(dgu%XSSO_FMU (u%NSIZE_FULL))
176 ALLOCATE(dgu%XSSO_FMV (u%NSIZE_FULL))
177 ALLOCATE(dgu%XAVG_WIND10M(u%NSIZE_FULL))
178 ALLOCATE(dgu%XAVG_WIND10M_MAX(u%NSIZE_FULL))
180 ALLOCATE(dgu%XDIAG_UREF (u%NSIZE_FULL))
181 ALLOCATE(dgu%XDIAG_ZREF (u%NSIZE_FULL))
182 ALLOCATE(dgu%XDIAG_TRAD (u%NSIZE_FULL))
183 ALLOCATE(dgu%XDIAG_EMIS (u%NSIZE_FULL))
192 dgu%XAVG_LEI = xundef
193 dgu%XAVG_GFLUX = xundef
194 dgu%XAVG_EVAP = xundef
195 dgu%XAVG_SUBL = xundef
196 dgu%XAVG_T2M = xundef
198 dgu%XAVG_T2M_MIN = xundef
199 dgu%XAVG_T2M_MAX = xundef
200 dgu%XAVG_Q2M = xundef
201 dgu%XAVG_HU2M = xundef
202 dgu%XAVG_HU2M_MIN= xundef
203 dgu%XAVG_HU2M_MAX= xundef
204 dgu%XAVG_ZON10M = xundef
205 dgu%XAVG_MER10M = xundef
206 dgu%XAVG_SFCO2 = xundef
207 dgu%XAVG_T2M_MIN_ZS = xundef
208 dgu%XAVG_Q2M_MIN_ZS = xundef
209 dgu%XAVG_HU2M_MIN_ZS = xundef
214 dgu%XAVG_Z0H = xundef
215 dgu%XAVG_SWD = xundef
216 dgu%XAVG_SWU = xundef
217 dgu%XAVG_LWD = xundef
218 dgu%XAVG_LWU = xundef
219 dgu%XAVG_SWBD = xundef
220 dgu%XAVG_SWBU = xundef
221 dgu%XAVG_FMU = xundef
222 dgu%XAVG_FMV = xundef
223 dgu%XSSO_FMU = xundef
224 dgu%XSSO_FMV = xundef
225 dgu%XAVG_WIND10M = xundef
226 dgu%XAVG_WIND10M_MAX = xundef
228 dgu%XDIAG_UREF = xundef
229 dgu%XDIAG_ZREF = xundef
230 dgu%XDIAG_TRAD = xundef
231 dgu%XDIAG_EMIS = xundef
233 IF (dgu%LSURF_BUDGETC)
THEN
235 ALLOCATE(dgu%XRNC_TILE (u%NSIZE_FULL,ntilesfc))
236 ALLOCATE(dgu%XHC_TILE (u%NSIZE_FULL,ntilesfc))
237 ALLOCATE(dgu%XLEC_TILE (u%NSIZE_FULL,ntilesfc))
238 ALLOCATE(dgu%XLEIC_TILE (u%NSIZE_FULL,ntilesfc))
239 ALLOCATE(dgu%XGFLUXC_TILE (u%NSIZE_FULL,ntilesfc))
240 ALLOCATE(dgu%XEVAPC_TILE (u%NSIZE_FULL,ntilesfc))
241 ALLOCATE(dgu%XSUBLC_TILE (u%NSIZE_FULL,ntilesfc))
242 ALLOCATE(dgu%XSWDC_TILE (u%NSIZE_FULL,ntilesfc))
243 ALLOCATE(dgu%XSWUC_TILE (u%NSIZE_FULL,ntilesfc))
244 ALLOCATE(dgu%XLWDC_TILE (u%NSIZE_FULL,ntilesfc))
245 ALLOCATE(dgu%XLWUC_TILE (u%NSIZE_FULL,ntilesfc))
246 ALLOCATE(dgu%XFMUC_TILE (u%NSIZE_FULL,ntilesfc))
247 ALLOCATE(dgu%XFMVC_TILE (u%NSIZE_FULL,ntilesfc))
249 dgu%XRNC_TILE = xundef
250 dgu%XHC_TILE = xundef
251 dgu%XLEC_TILE = xundef
252 dgu%XLEIC_TILE = xundef
253 dgu%XGFLUXC_TILE = xundef
254 dgu%XEVAPC_TILE = xundef
255 dgu%XSUBLC_TILE = xundef
256 dgu%XSWDC_TILE = xundef
257 dgu%XSWUC_TILE = xundef
258 dgu%XLWDC_TILE = xundef
259 dgu%XLWUC_TILE = xundef
260 dgu%XFMUC_TILE = xundef
261 dgu%XFMVC_TILE = xundef
263 ALLOCATE(dgu%XAVG_RNC (u%NSIZE_FULL))
264 ALLOCATE(dgu%XAVG_HC (u%NSIZE_FULL))
265 ALLOCATE(dgu%XAVG_LEC (u%NSIZE_FULL))
266 ALLOCATE(dgu%XAVG_LEIC (u%NSIZE_FULL))
267 ALLOCATE(dgu%XAVG_GFLUXC (u%NSIZE_FULL))
268 ALLOCATE(dgu%XAVG_EVAPC (u%NSIZE_FULL))
269 ALLOCATE(dgu%XAVG_SUBLC (u%NSIZE_FULL))
270 ALLOCATE(dgu%XAVG_SWDC (u%NSIZE_FULL))
271 ALLOCATE(dgu%XAVG_SWUC (u%NSIZE_FULL))
272 ALLOCATE(dgu%XAVG_LWDC (u%NSIZE_FULL))
273 ALLOCATE(dgu%XAVG_LWUC (u%NSIZE_FULL))
274 ALLOCATE(dgu%XAVG_FMUC (u%NSIZE_FULL))
275 ALLOCATE(dgu%XAVG_FMVC (u%NSIZE_FULL))
278 CALL
read_surf(hprogram,yrec,dgu%LREAD_BUDGETC,iresp)
280 IF (.NOT. dgu%LREAD_BUDGETC)
THEN
281 dgu%TIME_BUDGETC = u%TTIME
286 dgu%XAVG_GFLUXC = 0.0
295 ELSEIF (dgu%LREAD_BUDGETC.AND.dgu%LRESET_BUDGETC)
THEN
296 dgu%TIME_BUDGETC = u%TTIME
301 dgu%XAVG_GFLUXC = 0.0
312 CALL
read_surf(hprogram,yrec,dgu%TIME_BUDGETC,iresp)
314 CALL
read_surf(hprogram,yrec,dgu%XAVG_RNC,iresp)
316 CALL
read_surf(hprogram,yrec,dgu%XAVG_HC ,iresp)
318 CALL
read_surf(hprogram,yrec,dgu%XAVG_LEC,iresp)
320 CALL
read_surf(hprogram,yrec,dgu%XAVG_LEIC,iresp)
322 CALL
read_surf(hprogram,yrec,dgu%XAVG_GFLUXC ,iresp)
324 CALL
read_surf(hprogram,yrec,dgu%XAVG_SWDC,iresp)
326 CALL
read_surf(hprogram,yrec,dgu%XAVG_SWUC,iresp)
328 CALL
read_surf(hprogram,yrec,dgu%XAVG_LWDC,iresp)
331 hprogram,yrec,dgu%XAVG_LWUC,iresp)
334 hprogram,yrec,dgu%XAVG_FMUC,iresp)
337 hprogram,yrec,dgu%XAVG_FMVC,iresp)
340 hprogram,
'VERSION',iversion,iresp)
347 hprogram,yrec,dgu%XAVG_EVAPC,iresp)
350 hprogram,yrec,dgu%XAVG_SUBLC,iresp)
357 ALLOCATE(dgu%XRNC_TILE (0,0))
358 ALLOCATE(dgu%XHC_TILE (0,0))
359 ALLOCATE(dgu%XLEC_TILE (0,0))
360 ALLOCATE(dgu%XLEIC_TILE (0,0))
361 ALLOCATE(dgu%XGFLUXC_TILE (0,0))
362 ALLOCATE(dgu%XEVAPC_TILE (0,0))
363 ALLOCATE(dgu%XSUBLC_TILE (0,0))
364 ALLOCATE(dgu%XSWDC_TILE (0,0))
365 ALLOCATE(dgu%XSWUC_TILE (0,0))
366 ALLOCATE(dgu%XLWDC_TILE (0,0))
367 ALLOCATE(dgu%XLWUC_TILE (0,0))
368 ALLOCATE(dgu%XFMUC_TILE (0,0))
369 ALLOCATE(dgu%XFMVC_TILE (0,0))
371 ALLOCATE(dgu%XAVG_RNC (0))
372 ALLOCATE(dgu%XAVG_HC (0))
373 ALLOCATE(dgu%XAVG_LEC (0))
374 ALLOCATE(dgu%XAVG_LEIC (0))
375 ALLOCATE(dgu%XAVG_GFLUXC (0))
376 ALLOCATE(dgu%XAVG_EVAPC (0))
377 ALLOCATE(dgu%XAVG_SUBLC (0))
378 ALLOCATE(dgu%XAVG_SWDC (0))
379 ALLOCATE(dgu%XAVG_SWUC (0))
380 ALLOCATE(dgu%XAVG_LWDC (0))
381 ALLOCATE(dgu%XAVG_LWUC (0))
382 ALLOCATE(dgu%XAVG_FMUC (0))
383 ALLOCATE(dgu%XAVG_FMVC (0))
386 IF (lhook) CALL dr_hook(
'ALLOC_DIAG_SURF_ATM_N',1,zhook_handle)
subroutine alloc_diag_surf_atm_n(DGU, U, HPROGRAM, KSW)