7 kmask,ksize,knpatch,kpatch, &
8 pcpl_drain,pcpl_runoff, &
9 pcpl_eflood,pcpl_pflood, &
10 pcpl_iflood,pcpl_iceflux )
56 USE yomhook
,ONLY : lhook, dr_hook
57 USE parkind1
,ONLY : jprb
64 TYPE(isba_t
),
INTENT(INOUT) :: i
68 INTEGER,
INTENT(IN) :: ksize, kpatch, knpatch
69 INTEGER,
DIMENSION(:),
INTENT(IN) :: kmask
72 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pcpl_drain
73 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pcpl_runoff
74 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pcpl_eflood
75 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pcpl_pflood
76 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pcpl_iflood
77 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pcpl_iceflux
79 INTEGER :: jj, ji, jsw
80 REAL(KIND=JPRB) :: zhook_handle
83 IF (lhook) CALL dr_hook(
'UNPACK_DIAG_PATCH_N',0,zhook_handle)
87 dgi%XTS(:, kpatch) = pkdi%XP_TS(:)
88 dgi%XTSRAD(:, kpatch) = pkdi%XP_TSRAD(:)
90 dgi%XT2M (:, kpatch) = pkdi%XP_T2M (:)
91 dgi%XQ2M (:, kpatch) = pkdi%XP_Q2M (:)
92 dgi%XHU2M (:, kpatch) = pkdi%XP_HU2M (:)
93 dgi%XZON10M (:, kpatch) = pkdi%XP_ZON10M (:)
94 dgi%XMER10M (:, kpatch) = pkdi%XP_MER10M (:)
95 dgi%XRI (:, kpatch) = pkdi%XP_RI (:)
97 dgi%XWIND10M(:, kpatch) = sqrt(pkdi%XP_ZON10M(:)**2+pkdi%XP_MER10M(:)**2)
101 IF (dgi%LSURF_BUDGET)
THEN
102 dgi%XRN (:, kpatch) = pkdi%XP_RN (:)
103 dgi%XH (:, kpatch) = pkdi%XP_H (:)
104 dgi%XGFLUX (:, kpatch) = pkdi%XP_GFLUX (:)
105 dgi%XLEI (:, kpatch) = pkdi%XP_LEI (:)
106 dgi%XSWD (:, kpatch) = pkdi%XP_SWD (:)
107 dgi%XSWU (:, kpatch) = pkdi%XP_SWU (:)
108 dgi%XLWD (:, kpatch) = pkdi%XP_LWD (:)
109 dgi%XLWU (:, kpatch) = pkdi%XP_LWU (:)
110 dgi%XFMU (:, kpatch) = pkdi%XP_FMU (:)
111 dgi%XFMV (:, kpatch) = pkdi%XP_FMV (:)
113 dgi%XSWBD (:, :, kpatch) = pkdi%XP_SWBD (:,:)
114 dgi%XSWBU (:, :, kpatch) = pkdi%XP_SWBU (:,:)
119 dgi%XCD (:, kpatch) = pkdi%XP_CD (:)
120 dgi%XCH (:, kpatch) = pkdi%XP_CH (:)
121 dgi%XCE (:, kpatch) = pkdi%XP_CE (:)
122 dgi%XZ0_WITH_SNOW (:, kpatch) = pkdi%XP_Z0_WITH_SNOW (:)
123 dgi%XZ0H_WITH_SNOW (:, kpatch) = pkdi%XP_Z0H_WITH_SNOW (:)
124 dgi%XZ0EFF (:, kpatch) = pkdi%XP_Z0EFF (:)
127 IF (dgi%LSURF_VARS)
THEN
128 dgi%XQS (:, kpatch) = pkdi%XP_QS (:)
132 pcpl_drain(:, kpatch) = pkdi%XP_DRAIN (:)
133 pcpl_runoff(:, kpatch) = pkdi%XP_RUNOFF (:)
137 pcpl_eflood(:, kpatch) = pkdi%XP_LE_FLOOD (:) / pki%XP_LVTT(:) &
138 + pkdi%XP_LEI_FLOOD(:) / pki%XP_LSTT(:)
139 pcpl_pflood(:, kpatch) = pkdi%XP_PFLOOD (:)
140 pcpl_iflood(:, kpatch) = pkdi%XP_IFLOOD (:)
143 IF(i%LCPL_RRM.AND.i%LGLACIER)
THEN
144 pcpl_iceflux(:, kpatch) = pkdi%XP_ICEFLUX (:)
147 IF(i%TSNOW%SCHEME==
'3-L' .OR. i%TSNOW%SCHEME==
'CRO')
THEN
148 i%TSNOW%TEMP(:,:,kpatch) = pkdi%XP_SNOWTEMP(:,:)
149 i%TSNOW%TS (:,kpatch) = pkdi%XP_SNOWTEMP(:,1)
152 IF (i%CPHOTO/=
'NON')
THEN
153 gb%XIACAN(:,:,kpatch) = pkdi%XP_IACAN(:,:)
160 dgi%XTS (ji, kpatch) = pkdi%XP_TS (jj)
161 dgi%XTSRAD (ji, kpatch) = pkdi%XP_TSRAD (jj)
166 dgi%XT2M (ji, kpatch) = pkdi%XP_T2M (jj)
167 dgi%XQ2M (ji, kpatch) = pkdi%XP_Q2M (jj)
168 dgi%XHU2M (ji, kpatch) = pkdi%XP_HU2M (jj)
169 dgi%XZON10M (ji, kpatch) = pkdi%XP_ZON10M (jj)
170 dgi%XMER10M (ji, kpatch) = pkdi%XP_MER10M (jj)
171 dgi%XRI (ji, kpatch) = pkdi%XP_RI (jj)
173 dgi%XWIND10M(ji, kpatch) = sqrt(pkdi%XP_ZON10M(jj)**2+pkdi%XP_MER10M(jj)**2)
178 IF (dgi%LSURF_BUDGET)
THEN
181 dgi%XRN (ji, kpatch) = pkdi%XP_RN (jj)
182 dgi%XH (ji, kpatch) = pkdi%XP_H (jj)
183 dgi%XGFLUX (ji, kpatch) = pkdi%XP_GFLUX (jj)
184 dgi%XLEI (ji, kpatch) = pkdi%XP_LEI (jj)
185 dgi%XSWD (ji, kpatch) = pkdi%XP_SWD (jj)
186 dgi%XSWU (ji, kpatch) = pkdi%XP_SWU (jj)
187 dgi%XLWD (ji, kpatch) = pkdi%XP_LWD (jj)
188 dgi%XLWU (ji, kpatch) = pkdi%XP_LWU (jj)
189 dgi%XFMU (ji, kpatch) = pkdi%XP_FMU (jj)
190 dgi%XFMV (ji, kpatch) = pkdi%XP_FMV (jj)
192 DO jsw=1,
SIZE(dgi%XSWBD,2)
193 dgi%XSWBD (ji, jsw, kpatch) = pkdi%XP_SWBD (jj,jsw)
194 dgi%XSWBU (ji, jsw, kpatch) = pkdi%XP_SWBU (jj,jsw)
203 dgi%XCD (ji, kpatch) = pkdi%XP_CD (jj)
204 dgi%XCH (ji, kpatch) = pkdi%XP_CH (jj)
205 dgi%XCE (ji, kpatch) = pkdi%XP_CE (jj)
206 dgi%XZ0_WITH_SNOW (ji, kpatch) = pkdi%XP_Z0_WITH_SNOW (jj)
207 dgi%XZ0H_WITH_SNOW (ji, kpatch) = pkdi%XP_Z0H_WITH_SNOW (jj)
208 dgi%XZ0EFF (ji, kpatch) = pkdi%XP_Z0EFF (jj)
212 IF (dgi%LSURF_VARS)
THEN
215 dgi%XQS (ji, kpatch) = pkdi%XP_QS (jj)
222 pcpl_drain(ji, kpatch) = pkdi%XP_DRAIN (jj)
223 pcpl_runoff(ji, kpatch) = pkdi%XP_RUNOFF (jj)
230 pcpl_eflood(ji, kpatch) = pkdi%XP_LE_FLOOD (jj) / pki%XP_LVTT(jj) &
231 + pkdi%XP_LEI_FLOOD(jj) / pki%XP_LSTT(jj)
232 pcpl_pflood(ji, kpatch) = pkdi%XP_PFLOOD (jj)
233 pcpl_iflood(ji, kpatch) = pkdi%XP_IFLOOD (jj)
240 pcpl_iceflux(ji, kpatch) = pkdi%XP_ICEFLUX (jj)
244 IF(i%TSNOW%SCHEME==
'3-L' .OR. i%TSNOW%SCHEME==
'CRO')
THEN
247 i%TSNOW%TS (ji,kpatch) = pkdi%XP_SNOWTEMP(jj,1)
248 DO jsw=1,
SIZE(i%TSNOW%TEMP,2)
249 i%TSNOW%TEMP(ji,jsw,kpatch) = pkdi%XP_SNOWTEMP(jj,jsw)
254 IF (i%CPHOTO/=
'NON')
THEN
257 DO jsw=1,
SIZE(gb%XIACAN,2)
258 gb%XIACAN(ji,jsw,kpatch) = pkdi%XP_IACAN(jj,jsw)
270 pkdi%XP_CDN => null()
273 pkdi%XP_HUG => null()
274 pkdi%XP_ALBT => null()
277 pkdi%XP_LEI => null()
278 pkdi%XP_LEG => null()
279 pkdi%XP_LEGI => null()
280 pkdi%XP_LEV => null()
281 pkdi%XP_LES => null()
282 pkdi%XP_LER => null()
283 pkdi%XP_LETR => null()
284 pkdi%XP_GFLUX => null()
285 pkdi%XP_EVAP => null()
286 pkdi%XP_SUBL => null()
287 pkdi%XP_RESTORE => null()
288 pkdi%XP_DRAIN => null()
289 pkdi%XP_QSB => null()
290 pkdi%XP_RUNOFF => null()
291 pkdi%XP_MELT => null()
292 pkdi%XP_MELTADV => null()
293 pkdi%XP_SRSFC => null()
294 pkdi%XP_RRSFC => null()
295 pkdi%XP_SNOWFREE_ALB => null()
297 pkdi%XP_HORT => null()
298 pkdi%XP_DRIP => null()
299 pkdi%XP_RRVEG => null()
300 pkdi%XP_IRRIG_FLUX => null()
302 pkdi%XP_SWBD => null()
303 pkdi%XP_SWBU => null()
305 pkdi%XP_SWD => null()
306 pkdi%XP_SWU => null()
307 pkdi%XP_LWD => null()
308 pkdi%XP_LWU => null()
309 pkdi%XP_FMU => null()
310 pkdi%XP_FMV => null()
312 pkdi%XP_Z0_WITH_SNOW => null()
313 pkdi%XP_Z0H_WITH_SNOW=> null()
314 pkdi%XP_Z0EFF => null()
319 pkdi%XP_WGEQ => null()
326 pkdi%XP_TSRAD => null()
328 pkdi%XP_RESP_AUTO => null()
329 pkdi%XP_RESP_ECO => null()
330 pkdi%XP_GPP => null()
331 pkdi%XP_FAPAR => null()
332 pkdi%XP_FAPIR => null()
333 pkdi%XP_FAPAR_BS => null()
334 pkdi%XP_FAPIR_BS => null()
336 pkdi%XP_IFLOOD => null()
337 pkdi%XP_PFLOOD => null()
338 pkdi%XP_LE_FLOOD => null()
339 pkdi%XP_LEI_FLOOD => null()
341 pkdi%XP_RNSNOW => null()
342 pkdi%XP_HSNOW => null()
343 pkdi%XP_HPSNOW => null()
344 pkdi%XP_GFLUXSNOW => null()
345 pkdi%XP_USTARSNOW => null()
346 pkdi%XP_GRNDFLUX => null()
347 pkdi%XP_LESL => null()
348 pkdi%XP_SNDRIFT => null()
349 pkdi%XP_CDSNOW => null()
350 pkdi%XP_CHSNOW => null()
351 pkdi%XP_SNOWHMASS => null()
352 pkdi%XP_RN_ISBA => null()
353 pkdi%XP_H_ISBA => null()
354 pkdi%XP_LEG_ISBA => null()
355 pkdi%XP_LEGI_ISBA => null()
356 pkdi%XP_LEV_ISBA => null()
357 pkdi%XP_LETR_ISBA => null()
358 pkdi%XP_USTAR_ISBA => null()
359 pkdi%XP_LER_ISBA => null()
360 pkdi%XP_LE_ISBA => null()
361 pkdi%XP_LEI_ISBA => null()
362 pkdi%XP_GFLUX_ISBA => null()
363 pkdi%XP_SNOWLIQ => null()
364 pkdi%XP_SNOWDZ => null()
366 pkdi%XP_SNOWTEMP => null()
368 pkdi%XP_SNOWFREE_ALB_VEG=> null()
369 pkdi%XP_SNOWFREE_ALB_SOIL=> null()
371 pkdi%XP_IACAN => null()
373 pkdi%XP_T2M => null()
374 pkdi%XP_Q2M => null()
375 pkdi%XP_HU2M => null()
376 pkdi%XP_ZON10M => null()
377 pkdi%XP_MER10M => null()
379 pkdi%XP_SWI => null()
380 pkdi%XP_TSWI => null()
381 pkdi%XP_TWSNOW => null()
382 pkdi%XP_TDSNOW => null()
384 pkdi%XP_ICEFLUX => null()
386 pkdi%XP_DWG => null()
387 pkdi%XP_DWGI => null()
388 pkdi%XP_DSWE => null()
389 pkdi%XP_WATBUD => null()
391 pkdi%XP_SWUP => null()
393 pkdi%XP_SWNET_V => null()
394 pkdi%XP_SWNET_G => null()
395 pkdi%XP_SWNET_N => null()
396 pkdi%XP_SWNET_NS => null()
397 pkdi%XP_LWUP => null()
398 pkdi%XP_LWNET_V => null()
399 pkdi%XP_LWNET_G => null()
400 pkdi%XP_LWNET_N => null()
401 pkdi%XP_LEVCV => null()
402 pkdi%XP_LESC => null()
403 pkdi%XP_H_V_C => null()
404 pkdi%XP_H_G_C => null()
405 pkdi%XP_LETRGV => null()
406 pkdi%XP_LETRCV => null()
407 pkdi%XP_LERGV => null()
408 pkdi%XP_LELITTER => null()
409 pkdi%XP_LELITTERI => null()
410 pkdi%XP_DRIPLIT => null()
411 pkdi%XP_RRLIT => null()
412 pkdi%XP_LERCV => null()
413 pkdi%XP_H_C_A => null()
414 pkdi%XP_H_N_C => null()
415 pkdi%XP_LE_C_A => null()
416 pkdi%XP_LE_V_C => null()
417 pkdi%XP_LE_G_C => null()
418 pkdi%XP_LE_N_C => null()
419 pkdi%XP_EVAP_N_C => null()
420 pkdi%XP_EVAP_G_C => null()
421 pkdi%XP_SR_GN => null()
422 pkdi%XP_MELTCV => null()
423 pkdi%XP_FRZCV => null()
424 pkdi%XP_SWDOWN_GN => null()
425 pkdi%XP_LWDOWN_GN => null()
427 DEALLOCATE(pkdi%XBLOCK_SIMPLE)
428 DEALLOCATE(pkdi%XBLOCK_GROUND)
429 DEALLOCATE(pkdi%XBLOCK_SNOW)
430 DEALLOCATE(pkdi%XBLOCK_KSW)
431 DEALLOCATE(pkdi%XBLOCK_ABC)
432 DEALLOCATE(pkdi%XBLOCK_0)
433 DEALLOCATE(pkdi%XBLOCK_00)
435 IF (lhook) CALL dr_hook(
'UNPACK_DIAG_PATCH_N',1,zhook_handle)
subroutine unpack_diag_patch_n(DGI, GB, I, PKDI, PKI, KMASK, KSIZE, KNPATCH, KPATCH, PCPL_DRAIN, PCPL_RUNOFF, PCPL_EFLOOD, PCPL_PFLOOD, PCPL_IFLOOD, PCPL_ICEFLUX)