54 USE yomhook
,ONLY : lhook, dr_hook
55 USE parkind1
,ONLY : jprb
60 TYPE(agri_t),
INTENT(INOUT) :: ag
61 TYPE(isba_t
),
INTENT(INOUT) :: i
64 INTEGER,
INTENT(IN) :: ksize, kpatch
66 INTEGER,
DIMENSION(:),
INTENT(IN) :: kmask
68 INTEGER jj, ji, jk, jl
69 REAL(KIND=JPRB) :: zhook_handle
73 IF (lhook) CALL dr_hook(
'UNPACK_ISBA_PATCH_N',0,zhook_handle)
75 i%TSNOW%WSNOW (:, :, 1) = pki%XP_SNOWSWE (:, :)
76 i%TSNOW%RHO (:, :, 1) = pki%XP_SNOWRHO (:, :)
77 i%TSNOW%ALB (:, 1) = pki%XP_SNOWALB (:)
78 i%XWR (:, 1) = pki%XP_WR (:)
79 i%XTG (:, :, 1) = pki%XP_TG (:, :)
80 i%XWG (:, :, 1) = pki%XP_WG (:, :)
81 i%XWGI (:, :, 1) = pki%XP_WGI (:, :)
82 i%XRESA (:, 1) = pki%XP_RESA (:)
83 i%XPCPS (:, 1) = pki%XP_CPS (:)
84 i%XPLVTT (:, 1) = pki%XP_LVTT (:)
85 i%XPLSTT (:, 1) = pki%XP_LSTT (:)
86 i%XALBNIR (:, 1) = pki%XP_ALBNIR (:)
87 i%XALBVIS (:, 1) = pki%XP_ALBVIS (:)
88 i%XALBUV (:, 1) = pki%XP_ALBUV (:)
89 i%XALBNIR_VEG (:, 1) = pki%XP_ALBNIR_VEG (:)
90 i%XALBVIS_VEG (:, 1) = pki%XP_ALBVIS_VEG (:)
91 i%XALBUV_VEG (:, 1) = pki%XP_ALBUV_VEG (:)
92 i%XALBNIR_SOIL (:, 1) = pki%XP_ALBNIR_SOIL(:)
93 i%XALBVIS_SOIL (:, 1) = pki%XP_ALBVIS_SOIL(:)
94 i%XALBUV_SOIL (:, 1) = pki%XP_ALBUV_SOIL (:)
95 i%XEMIS (:, 1) = pki%XP_EMIS (:)
96 i%XZ0EFFIP (:, 1) = pki%XP_Z0EFFIP (:)
97 i%XZ0EFFIM (:, 1) = pki%XP_Z0EFFIM (:)
98 i%XZ0EFFJP (:, 1) = pki%XP_Z0EFFJP (:)
99 i%XZ0EFFJM (:, 1) = pki%XP_Z0EFFJM (:)
100 i%XLE (:, 1) = pki%XP_LE (:)
102 IF(i%LMEB_PATCH(kpatch))
THEN
103 i%XWRL (:, 1) = pki%XP_WRL (:)
104 i%XWRLI (:, 1) = pki%XP_WRLI (:)
105 i%XWRVN (:, 1) = pki%XP_WRVN (:)
106 i%XTV (:, 1) = pki%XP_TV (:)
107 i%XTL (:, 1) = pki%XP_TL (:)
108 i%XTC (:, 1) = pki%XP_TC (:)
109 i%XQC (:, 1) = pki%XP_QC (:)
110 i%XLAI (:, 1) = pki%XP_LAI (:)
111 i%XZ0 (:, 1) = pki%XP_Z0 (:)
115 i%XLAI (:, 1) = pki%XP_LAI (:)
116 i%XVEG (:, 1) = pki%XP_VEG (:)
117 i%XZ0 (:, 1) = pki%XP_Z0 (:)
121 i%XFAPARC (:, 1) = pki%XP_FAPARC (:)
122 i%XFAPIRC (:, 1) = pki%XP_FAPIRC (:)
123 i%XLAI_EFFC (:, 1) = pki%XP_LAI_EFFC (:)
124 i%XMUS (:, 1) = pki%XP_MUS (:)
127 IF (i%CPHOTO/=
'NON')
THEN
128 i%XAN (:, 1) = pki%XP_AN (:)
129 i%XANDAY (:, 1) = pki%XP_ANDAY (:)
130 i%XANFM (:, 1) = pki%XP_ANFM (:)
131 i%XBIOMASS (:,:,1) = pki%XP_BIOMASS (:,:)
132 i%XRESP_BIOMASS (:,:,1) = pki%XP_RESP_BIOMASS (:,:)
135 IF(i%CPHOTO==
'NIT' .OR. i%CPHOTO==
'NCB')
THEN
136 i%XBSLAI_NITRO (:,1) = pki%XP_BSLAI_NITRO (:)
139 IF(i%CPHOTO==
'NCB')
THEN
140 i%XINCREASE (:,:,1) = pki%XP_INCREASE (:,:)
143 IF(i%CRESPSL==
'CNT')
THEN
144 i%XLITTER (:,:,:,1) = pki%XP_LITTER (:,:,:)
145 i%XSOILCARB (:,:,1) = pki%XP_SOILCARB (:,:)
146 i%XLIGNIN_STRUC (:,:,1) = pki%XP_LIGNIN_STRUC (:,:)
147 i%XTURNOVER (:,:,1) = pki%XP_TURNOVER (:,:)
150 IF(lagrip .AND. (i%CPHOTO==
'NIT' .OR. i%CPHOTO==
'LAI' .OR. i%CPHOTO==
'LST' .OR. i%CPHOTO==
'NCB') )
THEN
151 ag%LIRRIDAY (:,1) = pki%XP_LIRRIDAY (:)
154 IF (i%TSNOW%SCHEME==
'3-L' .OR. i%TSNOW%SCHEME==
'CRO')
THEN
155 i%TSNOW%HEAT (:, :, 1) = pki%XP_SNOWHEAT (:, :)
156 i%TSNOW%EMIS (:, 1) = pki%XP_SNOWEMIS (:)
157 i%TSNOW%AGE (:, :, 1) = pki%XP_SNOWAGE (:, :)
158 i%TSNOW%ALBVIS (:, 1) = pki%XP_SNOWALBVIS (:)
159 i%TSNOW%ALBNIR (:, 1) = pki%XP_SNOWALBNIR (:)
160 i%TSNOW%ALBFIR (:, 1) = pki%XP_SNOWALBFIR (:)
163 IF (i%TSNOW%SCHEME==
'CRO')
THEN
164 i%TSNOW%GRAN1 (:, :, 1) = pki%XP_SNOWGRAN1 (:, :)
165 i%TSNOW%GRAN2 (:, :, 1) = pki%XP_SNOWGRAN2 (:, :)
166 i%TSNOW%HIST (:, :, 1) = pki%XP_SNOWHIST (:, :)
170 i%XICE_STO (:,1) = pki%XP_ICE_STO (:)
179 i%TSNOW%ALB (ji, kpatch) = pki%XP_SNOWALB (jj)
180 i%XWR (ji, kpatch) = pki%XP_WR (jj)
181 i%XRESA (ji, kpatch) = pki%XP_RESA (jj)
182 i%XPCPS (ji, kpatch) = pki%XP_CPS (jj)
183 i%XPLVTT (ji, kpatch) = pki%XP_LVTT (jj)
184 i%XPLSTT (ji, kpatch) = pki%XP_LSTT (jj)
185 i%XALBNIR (ji, kpatch) = pki%XP_ALBNIR (jj)
186 i%XALBVIS (ji, kpatch) = pki%XP_ALBVIS (jj)
187 i%XALBUV (ji, kpatch) = pki%XP_ALBUV (jj)
188 i%XALBNIR_VEG (ji, kpatch) = pki%XP_ALBNIR_VEG (jj)
189 i%XALBVIS_VEG (ji, kpatch) = pki%XP_ALBVIS_VEG (jj)
190 i%XALBUV_VEG (ji, kpatch) = pki%XP_ALBUV_VEG (jj)
191 i%XALBNIR_SOIL (ji, kpatch) = pki%XP_ALBNIR_SOIL(jj)
192 i%XALBVIS_SOIL (ji, kpatch) = pki%XP_ALBVIS_SOIL(jj)
193 i%XALBUV_SOIL (ji, kpatch) = pki%XP_ALBUV_SOIL (jj)
194 i%XEMIS (ji, kpatch) = pki%XP_EMIS (jj)
195 i%XZ0EFFIP (ji, kpatch) = pki%XP_Z0EFFIP (jj)
196 i%XZ0EFFIM (ji, kpatch) = pki%XP_Z0EFFIM (jj)
197 i%XZ0EFFJP (ji, kpatch) = pki%XP_Z0EFFJP (jj)
198 i%XZ0EFFJM (ji, kpatch) = pki%XP_Z0EFFJM (jj)
199 i%XLE (ji, kpatch) = pki%XP_LE (jj)
203 IF(i%LMEB_PATCH(kpatch))
THEN
206 i%XWRL (ji, kpatch) = pki%XP_WRL (jj)
207 i%XWRLI (ji, kpatch) = pki%XP_WRLI (jj)
208 i%XWRVN (ji, kpatch) = pki%XP_WRVN (jj)
209 i%XTV (ji, kpatch) = pki%XP_TV (jj)
210 i%XTL (ji, kpatch) = pki%XP_TL (jj)
211 i%XTC (ji, kpatch) = pki%XP_TC (jj)
212 i%XQC (ji, kpatch) = pki%XP_QC (jj)
213 i%XLAI (ji, kpatch) = pki%XP_LAI (jj)
214 i%XZ0 (ji, kpatch) = pki%XP_Z0 (jj)
222 i%XLAI (ji, kpatch) = pki%XP_LAI (jj)
223 i%XVEG (ji, kpatch) = pki%XP_VEG (jj)
224 i%XZ0 (ji, kpatch) = pki%XP_Z0 (jj)
228 DO jk=1,
SIZE(i%XTG,2)
231 i%XTG (ji, jk, kpatch) = pki%XP_TG (jj, jk)
235 DO jk=1,
SIZE(i%XWG,2)
238 i%XWG (ji, jk, kpatch) = pki%XP_WG (jj, jk)
239 i%XWGI (ji, jk, kpatch) = pki%XP_WGI (jj, jk)
243 DO jk=1,
SIZE(pki%XP_SNOWSWE,2)
246 i%TSNOW%WSNOW (ji, jk, kpatch) = pki%XP_SNOWSWE (jj, jk)
247 i%TSNOW%RHO (ji, jk, kpatch) = pki%XP_SNOWRHO (jj, jk)
254 i%XFAPARC (ji, kpatch) = pki%XP_FAPARC (jj)
255 i%XFAPIRC (ji, kpatch) = pki%XP_FAPIRC (jj)
256 i%XLAI_EFFC (ji, kpatch) = pki%XP_LAI_EFFC (jj)
257 i%XMUS (ji, kpatch) = pki%XP_MUS (jj)
261 IF (i%CPHOTO/=
'NON')
THEN
264 i%XAN (ji, kpatch) = pki%XP_AN (jj)
265 i%XANDAY (ji, kpatch) = pki%XP_ANDAY (jj)
266 i%XANFM (ji, kpatch) = pki%XP_ANFM (jj)
268 DO jk=1,
SIZE(i%XBIOMASS,2)
271 i%XBIOMASS (ji, jk, kpatch) = pki%XP_BIOMASS (jj, jk)
272 i%XRESP_BIOMASS (ji, jk, kpatch) = pki%XP_RESP_BIOMASS (jj, jk)
277 IF (i%CPHOTO==
'NIT' .OR. i%CPHOTO==
'NCB')
THEN
280 i%XBSLAI_NITRO (ji, kpatch) = pki%XP_BSLAI_NITRO (jj)
284 IF (i%CPHOTO==
'NCB')
THEN
285 DO jk=1,
SIZE(i%XINCREASE,2)
288 i%XINCREASE (ji, jk, kpatch) = pki%XP_INCREASE (jj, jk)
293 IF (i%CRESPSL==
'CNT')
THEN
294 DO jl=1,
SIZE(pki%XP_LITTER,3)
295 DO jk=1,
SIZE(pki%XP_LITTER,2)
298 i%XLITTER (ji, jk, jl, kpatch) = pki%XP_LITTER (jj, jk, jl)
302 DO jk=1,
SIZE(pki%XP_SOILCARB,2)
305 i%XSOILCARB (ji, jk, kpatch) = pki%XP_SOILCARB (jj, jk)
308 DO jk=1,
SIZE(pki%XP_LIGNIN_STRUC,2)
311 i%XLIGNIN_STRUC (ji, jk, kpatch) = pki%XP_LIGNIN_STRUC (jj, jk)
314 DO jk=1,
SIZE(pki%XP_TURNOVER,2)
317 i%XTURNOVER (ji, jk, kpatch) = pki%XP_TURNOVER (jj, jk)
322 IF(lagrip .AND. (i%CPHOTO==
'NIT' .OR. i%CPHOTO==
'LAI' .OR. i%CPHOTO==
'LST' .OR. i%CPHOTO==
'NCB') )
THEN
325 ag%LIRRIDAY (ji,kpatch) = pki%XP_LIRRIDAY (jj)
329 IF (i%TSNOW%SCHEME==
'3-L' .OR. i%TSNOW%SCHEME==
'CRO')
THEN
330 DO jk=1,
SIZE(pki%XP_SNOWHEAT,2)
333 i%TSNOW%HEAT (ji, jk, kpatch) = pki%XP_SNOWHEAT (jj, jk)
334 i%TSNOW%AGE (ji, jk, kpatch) = pki%XP_SNOWAGE (jj, jk)
339 i%TSNOW%EMIS (ji, kpatch) = pki%XP_SNOWEMIS (jj)
340 i%TSNOW%ALBVIS (ji, kpatch) = pki%XP_SNOWALBVIS (jj)
341 i%TSNOW%ALBNIR (ji, kpatch) = pki%XP_SNOWALBNIR (jj)
342 i%TSNOW%ALBFIR (ji, kpatch) = pki%XP_SNOWALBFIR (jj)
346 IF (i%TSNOW%SCHEME==
'CRO')
THEN
347 DO jk=1,
SIZE(pki%XP_SNOWGRAN1,2)
350 i%TSNOW%GRAN1 (ji, jk, kpatch) = pki%XP_SNOWGRAN1 (jj, jk)
351 i%TSNOW%GRAN2 (ji, jk, kpatch) = pki%XP_SNOWGRAN2 (jj, jk)
352 i%TSNOW%HIST (ji, jk, kpatch) = pki%XP_SNOWHIST (jj, jk)
360 i%XICE_STO(ji, kpatch) = pki%XP_ICE_STO(jj)
368 pki%XP_Z0_O_Z0H => null()
369 pki%XP_EMIS => null()
370 pki%XP_ALBNIR => null()
371 pki%XP_ALBVIS => null()
372 pki%XP_ALBUV => null()
373 pki%XP_ALBNIR_VEG => null()
374 pki%XP_ALBVIS_VEG => null()
375 pki%XP_ALBUV_VEG => null()
376 pki%XP_ALBNIR_SOIL => null()
377 pki%XP_ALBVIS_SOIL => null()
378 pki%XP_ALBUV_SOIL => null()
380 pki%XP_WRMAX_CF => null()
381 pki%XP_GAMMA => null()
384 pki%XP_RUNOFFD => null()
385 pki%XP_Z0EFFIP => null()
386 pki%XP_Z0EFFIM => null()
387 pki%XP_Z0EFFJP => null()
388 pki%XP_Z0EFFJM => null()
391 pki%XP_RESA => null()
393 pki%XP_LVTT => null()
394 pki%XP_LSTT => null()
396 pki%XP_SNOWALB => null()
397 pki%XP_SNOWALBVIS => null()
398 pki%XP_SNOWALBNIR => null()
399 pki%XP_SNOWALBFIR => null()
402 pki%XP_PSNG => null()
403 pki%XP_PSNV => null()
404 pki%XP_ALBNIR_DRY => null()
405 pki%XP_ALBVIS_DRY => null()
406 pki%XP_ALBUV_DRY => null()
407 pki%XP_ALBNIR_WET => null()
408 pki%XP_ALBVIS_WET => null()
409 pki%XP_ALBUV_WET => null()
410 pki%XP_RUNOFFB => null()
411 pki%XP_WDRAIN => null()
412 pki%XP_TAUICE => null()
413 pki%XP_Z0REL => null()
414 pki%XP_AOSIP => null()
415 pki%XP_AOSIM => null()
416 pki%XP_AOSJP => null()
417 pki%XP_AOSJM => null()
418 pki%XP_HO2IP => null()
419 pki%XP_HO2IM => null()
420 pki%XP_HO2JP => null()
421 pki%XP_HO2JM => null()
422 pki%XP_SSO_SLOPE => null()
423 pki%XP_GAMMAT => null()
424 pki%XP_TDEEP => null()
426 pki%XP_CLAY => null()
427 pki%XP_SAND => null()
429 pki%XP_WWILT => null()
430 pki%XP_WSAT => null()
431 pki%XP_CONDSAT => null()
436 pki%XP_KSAT_ICE => null()
437 pki%XP_D_ICE => null()
439 pki%XP_VEGTYPE_PATCH=> null()
443 pki%XP_SNOWSWE => null()
444 pki%XP_SNOWRHO => null()
446 pki%XP_DIR_ALB_WITH_SNOW=> null()
447 pki%XP_SCA_ALB_WITH_SNOW=> null()
449 pki%XP_FFLOOD => null()
450 pki%XP_PIFLOOD => null()
454 pki%XP_FFROZEN => null()
455 pki%XP_ALBF => null()
456 pki%XP_EMISF => null()
458 pki%XP_PSNV_A => null()
460 pki%XP_SNOWHEAT => null()
461 pki%XP_SNOWEMIS => null()
463 pki%XP_SNOWGRAN1 => null()
464 pki%XP_SNOWGRAN2 => null()
465 pki%XP_SNOWHIST => null()
466 pki%XP_SNOWAGE => null()
468 pki%XP_ICE_STO => null()
470 pki%XP_FWTD => null()
473 pki%XP_HCAPSOIL => null()
475 pki%XP_CONDDRY => null()
476 pki%XP_CONDSLD => null()
479 pki%XP_ACOEF => null()
480 pki%XP_PCOEF => null()
481 pki%XP_CGSAT => null()
482 pki%XP_C1SAT => null()
483 pki%XP_C2REF => null()
484 pki%XP_C4REF => null()
487 pki%XP_MPOTSAT => null()
488 pki%XP_BCOEF => null()
490 pki%XP_ROOTFRAC => null()
492 pki%XP_DZDIF => null()
493 pki%NK_WG_LAYER => null()
494 pki%XP_SOILWGHT => null()
496 pki%XP_RSMIN => null()
498 pki%XP_BSLAI => null()
499 pki%XP_LAIMIN => null()
500 pki%XP_SEFOLD => null()
501 pki%XP_H_TREE => null()
503 pki%XP_ANMAX => null()
504 pki%XP_FZERO => null()
505 pki%XP_EPSO => null()
506 pki%XP_GAMM => null()
507 pki%XP_QDGAMM => null()
508 pki%XP_GMES => null()
509 pki%XP_RE25 => null()
510 pki%XP_QDGMES => null()
511 pki%XP_T1GMES => null()
512 pki%XP_T2GMES => null()
513 pki%XP_AMAX => null()
514 pki%XP_QDAMAX => null()
515 pki%XP_T1AMAX => null()
516 pki%XP_T2AMAX => null()
517 pki%XP_FAPARC => null()
518 pki%XP_FAPIRC => null()
519 pki%XP_LAI_EFFC => null()
522 pki%XP_ANDAY => null()
523 pki%XP_ANFM => null()
527 pki%XP_BIOMASS => null()
528 pki%XP_RESP_BIOMASS => null()
530 pki%LP_STRESS => null()
534 pki%XP_DMAX => null()
536 pki%TP_SEED => null()
537 pki%TP_REAP => null()
538 pki%XP_IRRIG => null()
539 pki%XP_WATSUP => null()
541 pki%XP_LIRRIDAY => null()
542 pki%XP_THRESHOLD => null()
543 pki%XP_LIRRIGATE => null()
545 pki%XP_CE_NITRO => null()
546 pki%XP_CF_NITRO => null()
547 pki%XP_CNA_NITRO => null()
548 pki%XP_BSLAI_NITRO => null()
550 pki%XP_INCREASE => null()
551 pki%XP_TAU_WOOD => null()
553 pki%XP_LITTER => null()
554 pki%XP_SOILCARB => null()
555 pki%XP_LIGNIN_STRUC => null()
556 pki%XP_TURNOVER => null()
559 pki%XP_TOPQS=> null()
564 pki%XP_WRLI => null()
565 pki%XP_WRVN => null()
571 pki%XP_H_VEG => null()
572 pki%XP_RGLV => null()
573 pki%XP_GAMMAV => null()
574 pki%XP_WRMAX_CFV => null()
575 pki%XP_LAIV => null()
577 pki%XP_RSMINV => null()
578 pki%XP_ROOTFRACV => null()
579 pki%XP_GNDLITTER => null()
580 pki%XP_Z0LITTER => null()
583 DEALLOCATE(pki%LBLOCK_SIMPLE)
584 DEALLOCATE(pki%LBLOCK_0)
585 DEALLOCATE(pki%NBLOCK_SIMPLE)
586 DEALLOCATE(pki%NBLOCK_0)
587 DEALLOCATE(pki%TBLOCK_SIMPLE)
588 DEALLOCATE(pki%TBLOCK_0)
589 DEALLOCATE(pki%XBLOCK_SIMPLE)
590 DEALLOCATE(pki%XBLOCK_GROUND)
591 DEALLOCATE(pki%XBLOCK_VEGTYPE)
592 DEALLOCATE(pki%XBLOCK_TG)
593 DEALLOCATE(pki%XBLOCK_SNOW)
594 DEALLOCATE(pki%XBLOCK_ALB)
595 DEALLOCATE(pki%XBLOCK_2)
596 DEALLOCATE(pki%XBLOCK_BIOMASS)
597 DEALLOCATE(pki%XBLOCK_SOILCARB)
598 DEALLOCATE(pki%XBLOCK_LITTLEVS)
599 DEALLOCATE(pki%XBLOCK_LITTER)
600 DEALLOCATE(pki%XBLOCK_0)
601 DEALLOCATE(pki%XBLOCK_00)
602 DEALLOCATE(pki%XBLOCK_000)
603 DEALLOCATE(pki%XBLOCK_01)
605 IF (lhook) CALL dr_hook(
'UNPACK_ISBA_PATCH_N',1,zhook_handle)
subroutine unpack_isba_patch_n(AG, I, PKI, KMASK, KSIZE, KPATCH)