7 hisba,kdecade,kdecade2,pcover,ocover,&
8 hphoto,oagrip,operm,otr_ml,hsftype, &
9 pveg,plai,prsmin,pgamma,pwrmax_cf, &
10 prgl,pcv,psoilgrid,pdg,kwg_layer, &
11 pdroot,pdg2,pz0,pz0_o_z0h, &
12 palbnir_veg,palbvis_veg,palbuv_veg, &
13 pemis_eco,pvegtype,prootfrac, &
14 pgmes,pbslai,plaimin,psefold,pgc, &
15 pdmax, pf2i, ostress, ph_tree, pre25, &
16 pce_nitro, pcf_nitro, pcna_nitro, &
18 palbnir_soil,palbvis_soil,palbuv_soil, &
19 tpseed, tpreap, pwatsup, pirrig, &
21 pgammagv, prsmingv, prootfracgv, &
22 pwrmax_cfgv, plaigv, pz0litter, ph_veg )
79 xdata_veg, xdata_z0, xdata_z0_o_z0h, &
80 xdata_emis_eco, xdata_gamma, xdata_cv, &
81 xdata_rgl, xdata_rsmin, &
82 xdata_albnir_veg, xdata_albvis_veg, &
84 xdata_alb_veg_nir, xdata_alb_veg_vis, &
85 xdata_alb_soil_nir, xdata_alb_soil_vis, &
86 xdata_gmes, xdata_bslai, xdata_laimin, &
87 xdata_sefold, xdata_gc, xdata_wrmax_cf, &
89 xdata_dmax, xdata_f2i, xdata_re25, &
90 xdata_ce_nitro, xdata_cf_nitro, &
91 xdata_cna_nitro, xdata_dice, &
92 xdata_gmes_st, xdata_bslai_st, &
93 xdata_sefold_st, xdata_gc_st, &
94 xdata_dmax_st, xdata_watsup, &
96 xdata_rglgv, xdata_gammagv, &
97 xdata_rsmingv, xdata_root_depthgv, &
98 xdata_wrmax_cfgv, xdata_laigv, &
99 xdata_z0litter, xdata_h_veg, &
100 xdata_root_extinctiongv, &
101 tdata_seed, tdata_reap,xdata_irrig, &
102 xdata_root_depth, xdata_ground_depth, &
103 xdata_root_extinction, xdata_root_lin
108 USE modi_av_pgd_param
112 USE yomhook
,ONLY : lhook, dr_hook
113 USE parkind1
,ONLY : jprb
123 TYPE(isba_t
),
INTENT(INOUT) :: i
125 CHARACTER(LEN=*),
INTENT(IN) :: hisba
126 INTEGER,
INTENT(IN) :: kdecade
127 INTEGER,
INTENT(IN) :: kdecade2
128 REAL,
DIMENSION(:,:),
INTENT(IN) :: pcover
129 LOGICAL,
DIMENSION(:),
INTENT(IN) :: ocover
130 CHARACTER(LEN=*),
INTENT(IN) :: hphoto
131 LOGICAL,
INTENT(IN) :: oagrip
132 LOGICAL,
INTENT(IN) :: operm
133 LOGICAL,
INTENT(IN) :: otr_ml
134 CHARACTER(LEN=*),
INTENT(IN) :: hsftype
136 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(IN) :: pwg1
138 REAL,
DIMENSION(:) ,
OPTIONAL,
INTENT(IN) :: psoilgrid
139 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pveg
140 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: plai
141 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: prsmin
142 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pgamma
143 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pwrmax_cf
144 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: prgl
145 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pcv
146 REAL,
DIMENSION(:,:,:),
OPTIONAL,
INTENT(OUT) :: pdg
147 INTEGER,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: kwg_layer
148 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pdroot
149 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pdg2
150 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pz0
151 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pz0_o_z0h
152 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: palbnir_veg
153 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: palbvis_veg
154 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: palbuv_veg
155 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pemis_eco
157 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pvegtype
158 REAL,
DIMENSION(:,:,:),
OPTIONAL,
INTENT(OUT) :: prootfrac
160 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pgmes
161 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pbslai
162 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: plaimin
163 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: psefold
164 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pgc
165 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pdmax
166 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pf2i
167 LOGICAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: ostress
169 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: ph_tree
170 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pre25
172 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pce_nitro
173 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pcf_nitro
174 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pcna_nitro
175 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pd_ice
176 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: palbnir_soil
177 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: palbvis_soil
178 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: palbuv_soil
180 TYPE(date_time),
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: tpseed
181 TYPE(date_time),
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: tpreap
183 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pwatsup
184 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pirrig
186 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pgndlitter
187 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: prglgv
188 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pgammagv
189 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: prsmingv
190 REAL,
DIMENSION(:,:,:),
OPTIONAL,
INTENT(OUT) :: prootfracgv
191 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pwrmax_cfgv
192 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: plaigv
193 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pz0litter
194 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: ph_veg
199 CHARACTER(LEN=3) :: ytree, ynat, ylai, yveg, ybar, ydif
211 INTEGER :: isize_lmeb_patch
213 REAL,
ALLOCATABLE,
DIMENSION(:) :: zh_veg
219 REAL(KIND=JPRB) :: zhook_handle
225 IF (lhook) CALL dr_hook(
'CONVERT_PATCH_ISBA',0,zhook_handle)
227 IF (
ASSOCIATED(dtco%XDATA_WEIGHT))
DEALLOCATE(dtco%XDATA_WEIGHT)
229 IF (hsftype==
'NAT')
THEN
237 isize_lmeb_patch = count(i%LMEB_PATCH(:))
238 ELSEIF (hsftype==
'GRD')
THEN
252 IF (present(pvegtype))
THEN
253 IF (gdata .AND. dti%LDATA_VEGTYPE)
THEN
254 pvegtype=dti%XPAR_VEGTYPE
257 DO jvegtype=1,nvegtype
259 pvegtype(:,jvegtype),pcover ,dtco%XDATA_VEGTYPE(:,jvegtype),ynat,
'ARI',ocover)
266 IF (present(pveg))
THEN
267 IF (gdata .AND. dti%LDATA_VEG)
THEN
269 pveg,dti%XPAR_VEGTYPE,dti%XPAR_VEG(:,kdecade2,:),ynat,
'ARI')
272 pveg,pcover,xdata_veg(:,kdecade,:),ynat,
'ARI',ocover,kdecade=kdecade)
278 IF (present(pgndlitter))
THEN
279 IF (gdata .AND. dti%LDATA_GNDLITTER)
THEN
281 pgndlitter,dti%XPAR_VEGTYPE,dti%XPAR_GNDLITTER(:,kdecade2,:),ynat,
'ARI',kdecade=kdecade2)
284 pgndlitter,pcover,xdata_gndlitter(:,kdecade,:),ynat,
'ARI',ocover,kdecade=kdecade)
290 IF (present(plai))
THEN
291 IF (gdata .AND. dti%LDATA_LAI)
THEN
293 plai,dti%XPAR_VEGTYPE,dti%XPAR_LAI(:,kdecade2,:),yveg,
'ARI',kdecade=kdecade2)
296 plai,pcover,xdata_lai(:,kdecade,:),yveg,
'ARI',ocover,kdecade=kdecade)
302 IF (present(plaigv))
THEN
303 IF (gdata .AND. dti%LDATA_LAIGV)
THEN
305 plaigv,dti%XPAR_VEGTYPE,dti%XPAR_LAIGV(:,kdecade2,:),yveg,
'ARI',kdecade=kdecade2)
308 plaigv,pcover,xdata_laigv(:,kdecade,:),yveg,
'ARI',ocover,kdecade=kdecade)
315 IF (present(pemis_eco))
THEN
316 IF (gdata .AND. dti%LDATA_EMIS)
THEN
318 pemis_eco,dti%XPAR_VEGTYPE,dti%XPAR_EMIS(:,kdecade2,:),ynat,
'ARI')
321 pemis_eco ,pcover ,xdata_emis_eco(:,kdecade,:),ynat,
'ARI',ocover,kdecade=kdecade)
326 IF (present(ph_veg))
THEN
327 IF (gdata .AND. dti%LDATA_H_VEG)
THEN
329 ph_veg,dti%XPAR_VEGTYPE,dti%XPAR_H_VEG(:,kdecade2,:),yveg,
'ARI',kdecade=kdecade2)
332 ph_veg,pcover,xdata_h_veg(:,kdecade,:),yveg,
'ARI',ocover,kdecade=kdecade)
335 IF (isize_lmeb_patch>0)
THEN
336 ALLOCATE(zh_veg(
SIZE(ph_veg,1)))
337 DO jj=1,
SIZE(i%LMEB_PATCH)
338 IF(i%LMEB_PATCH(jj))
THEN
340 WHERE(zh_veg>1000.) zh_veg=0.
341 zh_veg=max(zh_veg,1.0e-3)
351 IF (present(pz0))
THEN
352 IF (gdata .AND. dti%LDATA_Z0)
THEN
354 pz0,dti%XPAR_VEGTYPE,dti%XPAR_Z0(:,kdecade2,:),ynat,
'CDN')
357 pz0 ,pcover ,xdata_z0(:,kdecade,:),ynat,
'CDN',ocover,kdecade=kdecade)
363 IF (present(pz0litter))
THEN
364 IF (gdata .AND. dti%LDATA_Z0LITTER)
THEN
366 pz0litter,dti%XPAR_VEGTYPE,dti%XPAR_Z0LITTER(:,kdecade2,:),ynat,
'CDN')
369 pz0litter ,pcover ,xdata_z0litter(:,kdecade,:),ynat,
'CDN',ocover)
377 IF ( present(pdg))
THEN
381 CALL
set_grid_param(
SIZE(pdg,1),
SIZE(pdg,2),
SIZE(pdg,3),present(pdg2), &
382 present(pdroot),present(kwg_layer),present(prootfrac), &
383 present(prootfracgv).AND.(isize_lmeb_patch>0) )
390 IF (present(pd_ice).AND.hisba/=
'DIF')
THEN
391 IF (gdata .AND. dti%LDATA_DICE)
THEN
393 pd_ice,dti%XPAR_VEGTYPE,dti%XPAR_DICE,ynat,
'ARI')
396 pd_ice,pcover,xdata_dice(:,:),ynat,
'ARI',ocover,kdecade=kdecade)
402 IF (present(prsmin))
THEN
403 IF(
SIZE(prsmin)>0)
THEN
404 IF (gdata .AND. dti%LDATA_RSMIN)
THEN
406 prsmin,dti%XPAR_VEGTYPE,dti%XPAR_RSMIN,ylai,
'INV',kdecade=kdecade2)
409 prsmin,pcover,xdata_rsmin,ylai,
'INV',ocover,kdecade=kdecade)
414 IF (present(prsmingv))
THEN
415 IF(
SIZE(prsmingv)>0)
THEN
416 IF (gdata .AND. dti%LDATA_RSMINGV)
THEN
418 prsmingv,dti%XPAR_VEGTYPE,dti%XPAR_RSMINGV,ylai,
'INV',kdecade=kdecade2)
421 prsmingv,pcover,xdata_rsmingv,ylai,
'INV',ocover,kdecade=kdecade)
426 IF (present(pgamma))
THEN
427 IF (gdata .AND. dti%LDATA_GAMMA)
THEN
429 pgamma,dti%XPAR_VEGTYPE,dti%XPAR_GAMMA,yveg,
'ARI',kdecade=kdecade2)
432 pgamma,pcover,xdata_gamma,yveg,
'ARI',ocover,kdecade=kdecade)
436 IF (present(pgammagv))
THEN
437 IF (gdata .AND. dti%LDATA_GAMMAGV)
THEN
439 pgammagv,dti%XPAR_VEGTYPE,dti%XPAR_GAMMAGV,yveg,
'ARI',kdecade=kdecade2)
442 pgammagv,pcover,xdata_gammagv,yveg,
'ARI',ocover,kdecade=kdecade)
446 IF (present(pwrmax_cf))
THEN
447 IF (gdata .AND. dti%LDATA_WRMAX_CF)
THEN
449 pwrmax_cf,dti%XPAR_VEGTYPE,dti%XPAR_WRMAX_CF,yveg,
'ARI',kdecade=kdecade2)
452 pwrmax_cf,pcover,xdata_wrmax_cf,yveg,
'ARI',ocover,kdecade=kdecade)
456 IF (present(pwrmax_cfgv))
THEN
457 IF (gdata .AND. dti%LDATA_WRMAX_CFGV)
THEN
459 pwrmax_cfgv,dti%XPAR_VEGTYPE,dti%XPAR_WRMAX_CFGV,yveg,
'ARI',kdecade=kdecade2)
462 pwrmax_cfgv,pcover,xdata_wrmax_cfgv,yveg,
'ARI',ocover,kdecade=kdecade)
466 IF (present(prgl))
THEN
467 IF (gdata .AND. dti%LDATA_RGL)
THEN
469 prgl,dti%XPAR_VEGTYPE,dti%XPAR_RGL,yveg,
'ARI',kdecade=kdecade2)
472 prgl,pcover,xdata_rgl,yveg,
'ARI',ocover,kdecade=kdecade)
476 IF (present(prglgv))
THEN
477 IF (gdata .AND. dti%LDATA_RGLGV)
THEN
479 prglgv,dti%XPAR_VEGTYPE,dti%XPAR_RGLGV,yveg,
'ARI',kdecade=kdecade2)
482 prglgv,pcover,xdata_rglgv,yveg,
'ARI',ocover,kdecade=kdecade)
486 IF (present(pcv))
THEN
487 IF (gdata .AND. dti%LDATA_CV)
THEN
489 pcv,dti%XPAR_VEGTYPE,dti%XPAR_CV,yveg,
'INV',kdecade=kdecade2)
492 pcv,pcover,xdata_cv,yveg,
'INV',ocover,kdecade=kdecade)
496 IF (present(pz0_o_z0h))
THEN
497 IF (gdata .AND. dti%LDATA_Z0_O_Z0H)
THEN
499 pz0_o_z0h,dti%XPAR_VEGTYPE,dti%XPAR_Z0_O_Z0H,ynat,
'ARI')
502 pz0_o_z0h,pcover,xdata_z0_o_z0h,ynat,
'ARI',ocover,kdecade=kdecade)
506 IF (present(palbnir_veg))
THEN
507 IF (gdata .AND. dti%LDATA_ALBNIR_VEG)
THEN
509 palbnir_veg,dti%XPAR_VEGTYPE,dti%XPAR_ALBNIR_VEG,yveg,
'ARI',kdecade=kdecade2)
510 ELSEIF (i%CALBEDO==
'CM13')
THEN
512 palbnir_veg,pcover,xdata_alb_veg_nir(:,kdecade,:),yveg,
'ARI',&
513 ocover,kdecade=kdecade)
516 palbnir_veg,pcover,xdata_albnir_veg,yveg,
'ARI',ocover,kdecade=kdecade)
520 IF (present(palbvis_veg))
THEN
521 IF (gdata .AND. dti%LDATA_ALBVIS_VEG)
THEN
523 palbvis_veg,dti%XPAR_VEGTYPE,dti%XPAR_ALBVIS_VEG,yveg,
'ARI',kdecade=kdecade2)
524 ELSEIF (i%CALBEDO==
'CM13')
THEN
526 palbvis_veg,pcover,xdata_alb_veg_vis(:,kdecade,:),yveg,
'ARI',&
527 ocover,kdecade=kdecade)
530 palbvis_veg,pcover,xdata_albvis_veg,yveg,
'ARI',ocover,kdecade=kdecade)
534 IF (present(palbuv_veg))
THEN
535 IF ((i%CALBEDO==
'CM13'.OR.otr_ml).AND.present(palbvis_veg))
THEN
536 palbuv_veg(:,:)=palbvis_veg(:,:)
538 IF (gdata .AND. dti%LDATA_ALBUV_VEG)
THEN
540 palbuv_veg,dti%XPAR_VEGTYPE,dti%XPAR_ALBUV_VEG,yveg,
'ARI',kdecade=kdecade2)
543 palbuv_veg,pcover,xdata_albuv_veg,yveg,
'ARI',ocover,kdecade=kdecade)
548 IF (isize_lmeb_patch>0 .OR. hphoto/=
'NON')
THEN
550 IF (present(pbslai))
THEN
551 IF(
SIZE(pbslai)>0)
THEN
552 IF (gdata .AND. dti%LDATA_BSLAI)
THEN
554 pbslai,dti%XPAR_VEGTYPE,dti%XPAR_BSLAI,yveg,
'ARI',kdecade=kdecade2)
556 IF (hphoto ==
'AST' .OR. hphoto ==
'LST' .OR. hphoto ==
'NIT' .OR. hphoto ==
'NCB')
THEN
558 pbslai,pcover,xdata_bslai_st,yveg,
'ARI',ocover,kdecade=kdecade)
561 pbslai,pcover,xdata_bslai,yveg,
'ARI',ocover,kdecade=kdecade)
569 IF (hphoto/=
'NON'.OR.ltreedrag)
THEN
571 IF (present(ph_tree))
THEN
572 IF (gdata .AND. dti%LDATA_H_TREE)
THEN
574 ph_tree,dti%XPAR_VEGTYPE,dti%XPAR_H_TREE,ytree,
'ARI')
577 ph_tree,pcover,xdata_h_tree(:,:),ytree,
'ARI',ocover,kdecade=kdecade)
583 IF (hphoto/=
'NON')
THEN
584 IF (present(pre25))
THEN
585 IF (
SIZE(pre25)>0)
THEN
586 IF (gdata .AND. dti%LDATA_RE25)
THEN
588 pre25,dti%XPAR_VEGTYPE,dti%XPAR_RE25,ynat,
'ARI')
591 pre25,pcover,xdata_re25,ynat,
'ARI',ocover,kdecade=kdecade)
596 IF (present(plaimin))
THEN
597 IF (
SIZE(plaimin)>0)
THEN
598 IF (gdata .AND. dti%LDATA_LAIMIN)
THEN
600 plaimin,dti%XPAR_VEGTYPE,dti%XPAR_LAIMIN,yveg,
'ARI',kdecade=kdecade2)
603 plaimin,pcover,xdata_laimin,yveg,
'ARI',ocover,kdecade=kdecade)
608 IF (present(psefold))
THEN
609 IF (
SIZE(psefold)>0)
THEN
610 IF (gdata .AND. dti%LDATA_SEFOLD)
THEN
612 psefold,dti%XPAR_VEGTYPE,dti%XPAR_SEFOLD,yveg,
'ARI',kdecade=kdecade2)
614 IF (hphoto ==
'AST' .OR. hphoto ==
'LST' .OR. hphoto ==
'NIT' .OR. hphoto ==
'NCB')
THEN
616 psefold,pcover,xdata_sefold_st,yveg,
'ARI',ocover,kdecade=kdecade)
619 psefold,pcover,xdata_sefold,yveg,
'ARI',ocover,kdecade=kdecade)
625 IF (present(pgmes))
THEN
626 IF (
SIZE(pgmes)>0)
THEN
627 IF (gdata .AND. dti%LDATA_GMES)
THEN
629 pgmes,dti%XPAR_VEGTYPE,dti%XPAR_GMES,yveg,
'ARI',kdecade=kdecade2)
631 IF (hphoto ==
'AST' .OR. hphoto ==
'LST' .OR. hphoto ==
'NIT' .OR. hphoto ==
'NCB')
THEN
633 pgmes,pcover,xdata_gmes_st,yveg,
'ARI',ocover,kdecade=kdecade)
636 pgmes,pcover,xdata_gmes,yveg,
'ARI',ocover,kdecade=kdecade)
642 IF (present(pgc))
THEN
643 IF (
SIZE(pgc)>0)
THEN
644 IF (gdata .AND. dti%LDATA_GC)
THEN
646 pgc,dti%XPAR_VEGTYPE,dti%XPAR_GC,yveg,
'ARI',kdecade=kdecade2)
648 IF (hphoto ==
'AST' .OR. hphoto ==
'LST' .OR. hphoto ==
'NIT' .OR. hphoto ==
'NCB')
THEN
650 pgc,pcover,xdata_gc_st,yveg,
'ARI',ocover,kdecade=kdecade)
653 pgc,pcover,xdata_gc,yveg,
'ARI',ocover,kdecade=kdecade)
659 IF (present(pdmax))
THEN
660 IF (
SIZE(pdmax)>0)
THEN
661 IF (gdata .AND. dti%LDATA_DMAX)
THEN
663 pdmax,dti%XPAR_VEGTYPE,dti%XPAR_DMAX,ytree,
'ARI')
665 IF (hphoto ==
'AST' .OR. hphoto ==
'LST' .OR. hphoto ==
'NIT' .OR. hphoto ==
'NCB')
THEN
667 pdmax,pcover,xdata_dmax_st,ytree,
'ARI',ocover,kdecade=kdecade)
670 pdmax,pcover,xdata_dmax,ytree,
'ARI',ocover,kdecade=kdecade)
676 IF (hphoto/=
'AGS' .AND. hphoto/=
'LAI')
THEN
678 IF (present(pf2i))
THEN
679 IF (
SIZE(pf2i)>0)
THEN
680 IF (gdata .AND. dti%LDATA_F2I)
THEN
682 pf2i,dti%XPAR_VEGTYPE,dti%XPAR_F2I,yveg,
'ARI',kdecade=kdecade2)
685 pf2i,pcover,xdata_f2i,yveg,
'ARI',ocover,kdecade=kdecade)
690 IF (hphoto==
'NIT' .OR. hphoto==
'NCB')
THEN
692 IF (present(pce_nitro))
THEN
693 IF (
SIZE(pce_nitro)>0)
THEN
694 IF (gdata .AND. dti%LDATA_CE_NITRO)
THEN
696 pce_nitro,dti%XPAR_VEGTYPE,dti%XPAR_CE_NITRO,yveg,
'ARI',kdecade=kdecade2)
699 pce_nitro,pcover,xdata_ce_nitro,yveg,
'ARI',ocover,kdecade=kdecade)
704 IF (present(pcf_nitro))
THEN
705 IF (
SIZE(pcf_nitro)>0)
THEN
706 IF (gdata .AND. dti%LDATA_CF_NITRO)
THEN
708 pcf_nitro,dti%XPAR_VEGTYPE,dti%XPAR_CF_NITRO,yveg,
'ARI',kdecade=kdecade2)
711 pcf_nitro,pcover,xdata_cf_nitro,yveg,
'ARI',ocover,kdecade=kdecade)
716 IF (present(pcna_nitro))
THEN
717 IF (
SIZE(pcna_nitro)>0)
THEN
718 IF (gdata .AND. dti%LDATA_CNA_NITRO)
THEN
720 pcna_nitro,dti%XPAR_VEGTYPE,dti%XPAR_CNA_NITRO,yveg,
'ARI',kdecade=kdecade2)
723 pcna_nitro,pcover,xdata_cna_nitro,yveg,
'ARI',ocover,kdecade=kdecade)
733 IF ((hphoto ==
'LAI' .OR. hphoto ==
'LST' .OR. hphoto ==
'NIT' .OR. hphoto==
'NCB') .AND. oagrip)
THEN
738 IF (present(tpseed))
THEN
739 IF(
SIZE(tpseed)>0)
THEN
740 CALL
av_pgd(tpseed ,pcover,tdata_seed(:,:),yveg,
'MAJ',ocover,kdecade=kdecade)
747 IF (present(tpreap))
THEN
748 IF (
SIZE(tpreap)>0)
THEN
749 CALL
av_pgd(tpreap ,pcover,tdata_reap(:,:),yveg,
'MAJ',ocover,kdecade=kdecade)
753 IF (present(pirrig))
THEN
754 IF (
SIZE(pirrig)>0)
THEN
755 IF (gdata .AND. dti%LDATA_IRRIG)
THEN
757 pirrig,dti%XPAR_VEGTYPE,dti%XPAR_IRRIG(:,kdecade2,:),yveg,
'ARI',kdecade=kdecade2)
760 pirrig,pcover,xdata_irrig,yveg,
'ARI',ocover,kdecade=kdecade)
765 IF (present(pwatsup))
THEN
766 IF (
SIZE(pwatsup)>0)
THEN
767 IF (gdata .AND. dti%LDATA_WATSUP)
THEN
769 pwatsup,dti%XPAR_VEGTYPE,dti%XPAR_WATSUP(:,kdecade2,:),yveg,
'ARI',kdecade=kdecade2)
772 pwatsup,pcover,xdata_watsup,yveg,
'ARI',ocover,kdecade=kdecade)
779 IF (present(palbnir_soil))
THEN
780 IF (gdata .AND. dti%LDATA_ALBNIR_SOIL)
THEN
782 palbnir_soil,dti%XPAR_VEGTYPE,dti%XPAR_ALBNIR_SOIL,ybar,
'ARI',kdecade=kdecade2)
783 ELSEIF (i%CALBEDO==
'CM13')
THEN
785 palbnir_soil,pcover,xdata_alb_soil_nir(:,kdecade,:),ybar,
'ARI',&
786 ocover,kdecade=kdecade)
788 CALL
soil_albedo(i%CALBEDO, i%XWSAT(:,1),pwg1, i%XALBVIS_DRY,i%XALBNIR_DRY,i%XALBUV_DRY, &
789 i%XALBVIS_WET,i%XALBNIR_WET,i%XALBUV_WET, palbnir_soil=palbnir_soil )
793 IF (present(palbvis_soil))
THEN
794 IF (gdata .AND. dti%LDATA_ALBVIS_SOIL)
THEN
796 palbvis_soil,dti%XPAR_VEGTYPE,dti%XPAR_ALBVIS_SOIL,ybar,
'ARI',kdecade=kdecade2)
797 ELSEIF (i%CALBEDO==
'CM13')
THEN
799 palbvis_soil,pcover,xdata_alb_soil_vis(:,kdecade,:),ybar,
'ARI',&
800 ocover,kdecade=kdecade)
802 CALL
soil_albedo(i%CALBEDO, i%XWSAT(:,1),pwg1, i%XALBVIS_DRY,i%XALBVIS_DRY,i%XALBUV_DRY, &
803 i%XALBVIS_WET,i%XALBNIR_WET,i%XALBUV_WET, palbvis_soil=palbvis_soil )
807 IF (present(palbuv_soil))
THEN
808 IF ((i%CALBEDO==
'CM13'.OR.otr_ml).AND.present(palbvis_soil))
THEN
809 palbuv_soil(:,:)=palbvis_soil(:,:)
811 IF (gdata .AND. dti%LDATA_ALBUV_SOIL)
THEN
813 palbuv_soil,dti%XPAR_VEGTYPE,dti%XPAR_ALBUV_SOIL,ynat,
'ARI',kdecade=kdecade2)
815 CALL
soil_albedo(i%CALBEDO, i%XWSAT(:,1),pwg1, i%XALBVIS_DRY,i%XALBUV_DRY,i%XALBUV_DRY, &
816 i%XALBVIS_WET,i%XALBNIR_WET,i%XALBUV_WET,palbuv_soil=palbuv_soil )
823 IF (present(ostress))
THEN
824 IF (
SIZE(ostress)>0)
THEN
825 CALL
set_stress(
SIZE(ostress,1),
SIZE(ostress,2))
829 IF (
ASSOCIATED(dtco%XDATA_WEIGHT))
DEALLOCATE(dtco%XDATA_WEIGHT)
831 IF (lhook) CALL dr_hook(
'CONVERT_PATCH_ISBA',1,zhook_handle)
841 INTEGER,
INTENT(IN) :: ksize1
842 INTEGER,
INTENT(IN) :: ksize2
844 REAL,
DIMENSION(KSIZE1,KSIZE2) :: zwork
845 REAL,
DIMENSION(KSIZE1,NVEGTYPE) :: zstress
846 REAL(KIND=JPRB) :: zhook_handle
848 IF (lhook) CALL dr_hook(
'CONVERT_PATCH_ISBA:SET_STRESS',0,zhook_handle)
850 IF (gdata .AND. dti%LDATA_STRESS)
THEN
852 DO jvegtype=1,nvegtype
853 WHERE (dti%LPAR_STRESS(:,jvegtype)) zstress(:,jvegtype)=1.
856 zwork,dti%XPAR_VEGTYPE,zstress,yveg,
'ARI',kdecade=kdecade2)
859 zwork,pcover,xdata_stress(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
862 WHERE (zwork(:,:)<0.5)
863 ostress(:,:) = .false.
865 ostress(:,:) = .true.
868 IF (lhook) CALL dr_hook(
'CONVERT_PATCH_ISBA:SET_STRESS',1,zhook_handle)
880 USE modi_ini_data_rootfrac
881 USE modi_ini_data_soil
882 USE modi_permafrost_depth
887 REAL,
PARAMETER :: zprec=1.0e+6
889 INTEGER,
INTENT(IN) :: kni
890 INTEGER,
INTENT(IN) :: kground
891 INTEGER,
INTENT(IN) :: kpatch
892 LOGICAL,
INTENT(IN) :: ldg2
893 LOGICAL,
INTENT(IN) :: ldroot
894 LOGICAL,
INTENT(IN) :: lwg_layer
895 LOGICAL,
INTENT(IN) :: lrootfrac
896 LOGICAL,
INTENT(IN) :: lrootfracgv
898 REAL,
DIMENSION (SIZE(XDATA_GROUND_DEPTH,1),NVEGTYPE) :: zdata_ground_depth
900 REAL,
DIMENSION (KNI,KGROUND,KPATCH) :: zrootfrac
901 REAL,
DIMENSION (KNI,KPATCH) :: zdtot, zdg2, zroot_ext, zroot_lin
902 INTEGER,
DIMENSION (KNI,KPATCH) :: iwg_layer
904 INTEGER :: jj, jl, jpatch
907 LOGICAL :: gdata_dg, gdata_ground_depth, gdata_root_depth, gdata_rootfrac, &
908 gdata_rootfracgv, gnoeco
910 REAL(KIND=JPRB) :: zhook_handle
912 IF (lhook) CALL dr_hook(
'CONVERT_PATCH_ISBA:SET_GRID_PARAM',0,zhook_handle)
915 IF(.NOT.lwg_layer) CALL
abor1_sfx(
'CONVERT_PATCH_ISBA: SET_GRID_PARAM: KWG_LAYER must be present with DIF')
916 IF(.NOT.ldroot ) CALL
abor1_sfx(
'CONVERT_PATCH_ISBA: SET_GRID_PARAM: PDROOT must be present with DIF')
917 IF(.NOT.ldg2 ) CALL
abor1_sfx(
'CONVERT_PATCH_ISBA: SET_GRID_PARAM: PDG2 must be present with DIF')
920 zrootfrac(:,:,:) = xundef
923 iwg_layer(:,:) = nundef
925 zdata_ground_depth(:,:) = xdata_ground_depth(:,:)
927 gdata_dg = gdata .AND. dti%LDATA_DG
928 gdata_ground_depth = gdata .AND. dti%LDATA_GROUND_DEPTH
929 gdata_root_depth = gdata .AND. dti%LDATA_ROOT_DEPTH
930 gdata_rootfrac = gdata .AND. dti%LDATA_ROOTFRAC
931 gdata_rootfracgv = gdata .AND. dti%LDATA_ROOTFRACGV
948 pdg(:,jlayer,:),dti%XPAR_VEGTYPE,dti%XPAR_DG(:,jlayer,:),ynat,cdgavg)
953 IF(.NOT.gdata_ground_depth.AND.hisba==
'DIF'.AND.cdgdif==
'ROOT')
THEN
954 DO jvegtype=1,nvegtype
955 IF(jvegtype==nvt_no)
THEN
956 WHERE(xdata_ground_depth(:,jvegtype)/=xundef)
957 zdata_ground_depth(:,jvegtype) = min(1.0,xdata_ground_depth(:,jvegtype))
959 ELSEIF(jvegtype/=nvt_rock.AND.jvegtype/=nvt_snow)
THEN
960 zdata_ground_depth(:,jvegtype) = max(1.0,xdata_root_depth(:,jvegtype))
962 zdata_ground_depth(:,jvegtype) = xdata_root_depth(:,jvegtype)
968 IF (hisba/=
'2-L')
THEN
970 IF (gdata_ground_depth .AND. (hisba==
'DIF' .OR. .NOT.gdata_dg))
THEN
973 zdtot(:,:),dti%XPAR_VEGTYPE,dti%XPAR_GROUND_DEPTH(:,:),ynat,cdgavg)
975 WHERE(zdtot(:,:)/=xundef)
976 zdtot(:,:)=int(zdtot(:,:)*zprec)/zprec
979 IF (gdata_dg) zdtot(:,:) = min(zdtot(:,:),pdg(:,kground,:))
980 ELSEIF (gdata_dg)
THEN
982 zdtot(:,:) = pdg(:,kground,:)
986 zdtot(:,:),pcover,zdata_ground_depth(:,:),ynat,cdgavg,ocover,kdecade=kdecade)
987 IF(hisba==
'DIF'.AND.cdgdif==
'ROOT')zdg2(:,:)=zdtot(:,:)
993 IF(hisba==
'DIF'.AND.operm)
THEN
998 IF (hisba==
'DIF' .OR. .NOT.gdata_dg)
THEN
1000 gnoeco=(gdata_root_depth .AND. .NOT.gdata_rootfrac)
1004 zdg2(:,:),dti%XPAR_VEGTYPE,dti%XPAR_ROOT_DEPTH(:,:),ynat,cdgavg)
1006 WHERE(zdg2(:,:)/=xundef)
1007 zdg2(:,:)=int(zdg2(:,:)*zprec)/zprec
1010 IF (dti%LDATA_DG) zdg2(:,:) = min(zdg2(:,:),pdg(:,kground,:))
1011 zdtot(:,:) = max(zdg2(:,:),zdtot(:,:))
1012 IF (hisba==
'DIF')
THEN
1014 pdroot(:,:),dti%XPAR_VEGTYPE,dti%XPAR_ROOT_DEPTH(:,:),ydif,cdgavg)
1015 !error due to machine precision
1016 WHERE(pdroot(:,:)/=xundef)
1017 pdroot(:,:)=int(pdroot(:,:)*zprec)/zprec
1019 IF(cdgdif==
'ROOT')
THEN
1020 WHERE(pdroot(:,:).NE.xundef) zdtot(:,:) = max(pdroot(:,:),zdtot(:,:))
1021 WHERE(pdroot(:,:).NE.xundef) zdg2(:,:) = max(pdroot(:,:),zdg2(:,:))
1024 zdg2(:,:),pcover,xdata_root_depth(:,:),ynat,cdgavg,ocover,kdecade=kdecade)
1027 IF (gdata_dg)
WHERE (pdroot(:,:).NE.xundef) pdroot(:,:) = min(pdroot(:,:),pdg(:,kground,:))
1031 IF (hisba==
'DIF')
THEN
1033 pdroot(:,:),pcover,xdata_root_depth(:,:),ydif,cdgavg,ocover,kdecade=kdecade)
1034 IF(cdgdif==
'ROOT')
THEN
1035 WHERE(pdroot(:,:).NE.xundef) zdtot(:,:) = max(pdroot(:,:),zdtot(:,:))
1036 WHERE(pdroot(:,:).NE.xundef) zdg2(:,:) = max(pdroot(:,:),zdg2(:,:))
1039 zdg2(:,:),pcover,xdata_root_depth(:,:),ynat,cdgavg,ocover,kdecade=kdecade)
1043 zdg2(:,:),pcover,xdata_root_depth(:,:),ynat,cdgavg,ocover,kdecade=kdecade)
1045 IF ( gdata_ground_depth .OR. gdata_dg )
THEN
1046 zdg2(:,:) = min(zdg2(:,:),zdtot(:,:))
1047 IF (hisba==
'DIF')
WHERE (pdroot(:,:).NE.xundef) pdroot(:,:) = min(pdroot(:,:),zdtot(:,:))
1052 IF (.NOT.gdata_dg)
THEN
1054 IF (hisba==
'DIF')
THEN
1055 IF( maxval(zdtot,zdtot/=xundef)>psoilgrid(kground) )
THEN
1056 CALL
abor1_sfx(
'CONVERT_PATCH_ISBA: not enough soil layer with optimized grid')
1060 WHERE(zdg2(:,:)==xundef.AND.zdtot(:,:)/=xundef) zdg2(:,:)=0.0
1063 CALL
ini_data_soil(hisba, pdg,prootdepth=zdg2, psoildepth=zdtot,&
1064 psoilgrid=psoilgrid, kwg_layer=iwg_layer )
1065 IF (hisba==
'DIF'.AND.cdgdif==
'ROOT')
THEN
1068 IF(operm.AND.iwg_layer(jj,jpatch)/=nundef)
THEN
1069 IF(i%XPERM(jj)<xpermfrac) zdg2(jj,jpatch)=pdg(jj,iwg_layer(jj,jpatch),jpatch)
1070 ELSEIF(iwg_layer(jj,jpatch)/=nundef)
THEN
1071 zdg2(jj,jpatch)=pdg(jj,iwg_layer(jj,jpatch),jpatch)
1073 zdg2(jj,jpatch)=xundef
1080 ELSEIF ( hisba==
'DIF')
THEN
1083 IF(gdata_ground_depth)
THEN
1087 IF( pdg(jj,jl,jpatch) <= zdtot(jj,jpatch) .AND. zdtot(jj,jpatch) < xundef ) &
1088 iwg_layer(jj,jpatch) = jl
1093 iwg_layer(:,:) = kground
1099 IF (hisba==
'DIF' .AND. .NOT.dti%LDATA_ROOTFRAC)
THEN
1103 IF(iwg_layer(jj,jpatch)/=nundef)
THEN
1104 jl = iwg_layer(jj,jpatch)
1105 zdg2(jj,jpatch)=min(zdg2(jj,jpatch),pdg(jj,jl,jpatch))
1106 IF (pdroot(jj,jpatch)/=xundef) pdroot(jj,jpatch)=min(pdroot(jj,jpatch),pdg(jj,jl,jpatch))
1116 IF (hisba==
'DIF')
THEN
1118 IF ( (gdata_rootfrac .OR. gdata_rootfracgv) .AND. (ldg2 .OR. ldroot .OR. lrootfrac .OR. lrootfracgv))
THEN
1124 prootfracgv(:,jl,:),dti%XPAR_VEGTYPE,dti%XPAR_ROOTFRACGV(:,jl,:),ynat,
'ARI')
1131 zrootfrac(:,jl,:),dti%XPAR_VEGTYPE,dti%XPAR_ROOTFRAC(:,jl,:),ynat,
'ARI',kdecade=kdecade)
1133 IF (lrootfrac) prootfrac(:,:,:) = zrootfrac(:,:,:)
1142 IF( zrootfrac(jj,jl,jpatch)>=1.0 )
THEN
1143 zdg2(jj,jpatch) = pdg(jj,jl,jpatch)
1144 pdroot(jj,jpatch) = pdg(jj,jl,jpatch)
1145 ELSEIF (jl<kground.AND.zrootfrac(jj,jl,jpatch)>0.0)
THEN
1146 IF (iwg_layer(jj,jpatch)<=jl) iwg_layer(jj,jpatch) = jl+1
1151 IF(pdroot(jj,jpatch)==0.0.AND.zdg2(jj,jpatch)==0.0)
THEN
1152 jl=iwg_layer(jj,jpatch)
1153 zdg2(jj,jpatch)=min(0.6,pdg(jj,jl,jpatch))
1159 ELSEIF (lrootfrac .OR. lrootfracgv)
THEN
1162 IF (gdata .AND. dti%LDATA_ROOT_LIN)
THEN
1164 zroot_lin(:,:),dti%XPAR_VEGTYPE,dti%XPAR_ROOT_LIN(:,:),ydif,
'ARI')
1167 zroot_lin(:,:),pcover,xdata_root_lin(:,:),ydif,
'ARI',ocover,kdecade=kdecade)
1171 IF (gdata .AND. dti%LDATA_ROOT_EXTINCTION)
THEN
1173 zroot_ext(:,:),dti%XPAR_VEGTYPE,dti%XPAR_ROOT_EXTINCTION(:,:),ydif,
'ARI')
1176 zroot_ext(:,:),pcover,xdata_root_extinction(:,:),ydif,
'ARI',ocover,kdecade=kdecade)
1182 IF (gdata .AND. dti%LDATA_ROOT_EXTINCTIONGV)
THEN
1184 zroot_ext(:,:),dti%XPAR_VEGTYPE,dti%XPAR_ROOT_EXTINCTIONGV(:,:),ydif,
'ARI')
1187 zroot_ext(:,:),pcover,xdata_root_extinctiongv(:,:),ydif,
'ARI',ocover,kdecade=kdecade)
1191 prootfracgv,ogv=lrootfracgv)
1197 IF (ldg2) pdg2(:,:) = zdg2(:,:)
1198 IF (lwg_layer) kwg_layer(:,:) = iwg_layer(:,:)
1202 IF (lhook) CALL dr_hook(
'CONVERT_PATCH_ISBA:SET_GRID_PARAM',1,zhook_handle)
subroutine permafrost_depth(KNI, KPATCH, PPERM, PSOILDEPTH)
subroutine ini_data_rootfrac(PDG, PROOTDEPTH, PROOT_EXT, PROOT_LIN, PROOTFRAC, OGV)
subroutine av_pgd_param(DTI, PFIELD, PVEGTYPE, PDATA, HSFTYPE, HATYPE, PDZ, KDECADE)
subroutine ini_data_soil(HISBA, PDG_OUT, PSURF, PSURF2, PROOTDEPTH, PSOILDEPTH, PSOILGRID, KWG_LAYER)
subroutine abor1_sfx(YTEXT)
subroutine set_stress(KSIZE1, KSIZE2)
subroutine set_grid_param(KNI, KGROUND, KPATCH, LDG2, LDROOT, LWG_LAYER, LROOTFRAC, LROOTFRACGV)
subroutine convert_patch_isba(DTCO, DTI, I, HISBA, KDECADE, KDECADE2, PCOVER, OCOVER, HPHOTO, OAGRIP, OPERM, OTR_ML, HSFTYPE, PVEG, PLAI, PRSMIN, PGAMMA, PWRMAX_CF, PRGL, PCV, PSOILGRID, PDG, KWG_LAYER, PDROOT, PDG2, PZ0, PZ0_O_Z0H, PALBNIR_VEG, PALBVIS_VEG, PALBUV_VEG, PEMIS_ECO, PVEGTYPE, PROOTFRAC, PGMES, PBSLAI, PLAIMIN, PSEFOLD, PGC, PDMAX, PF2I, OSTRESS, PH_TREE, PRE25, PCE_NITRO, PCF_NITRO, PCNA_NITRO, PD_ICE, PWG1, PALBNIR_SOIL, PALBVIS_SOIL, PALBUV_SOIL, TPSEED, TPREAP, PWATSUP, PIRRIG, PGNDLITTER, PRGLGV, PGAMMAGV, PRSMINGV, PROOTFRACGV, PWRMAX_CFGV, PLAIGV, PZ0LITTER, PH_VEG)