7 hisba,kdecade,pcover,ocover,hphoto, &
9 plai,prsmin,pgamma,pwrmax_cf, &
10 prgl,pcv,psoilgrid,pperm, &
11 pdg,kwg_layer,pdroot,pdg2, &
12 pd_ice,pz0,pz0_o_z0h, &
13 palbnir_veg,palbvis_veg,palbuv_veg, &
16 pgmes,pbslai,plaimin,psefold,pgc, &
17 pdmax, pf2i, ostress, ph_tree,pre25,&
18 pce_nitro, pcf_nitro, pcna_nitro, &
19 tpseed, tpreap, pwatsup, pirrig, &
20 pgndlitter, plaigv, prsmingv, &
22 pwrmax_cfgv, prglgv, prootfracgv, &
69 xdata_veg, xdata_z0, xdata_z0_o_z0h, &
70 xdata_emis_eco, xdata_gamma, xdata_cv, &
71 xdata_rgl, xdata_rsmin, &
72 xdata_albnir_veg, xdata_albvis_veg, &
73 xdata_albuv_veg, xdata_dice, &
74 xdata_alb_veg_nir, xdata_alb_veg_vis, &
75 xdata_alb_soil_nir, xdata_alb_soil_vis, &
76 xdata_gmes, xdata_bslai, xdata_laimin, &
77 xdata_sefold, xdata_gc, xdata_wrmax_cf, &
79 xdata_dmax, xdata_f2i, xdata_re25, &
80 xdata_ce_nitro, xdata_cf_nitro, &
82 xdata_gmes_st, xdata_bslai_st, &
83 xdata_sefold_st, xdata_gc_st, &
84 xdata_dmax_st, xdata_watsup, &
85 tdata_seed, tdata_reap,xdata_irrig, &
86 xdata_root_depth, xdata_ground_depth, &
87 xdata_root_extinction, xdata_root_lin, &
89 xdata_rglgv, xdata_gammagv, &
90 xdata_rsmingv, xdata_wrmax_cfgv, &
91 xdata_laigv, xdata_z0litter, &
92 xdata_root_depthgv, xdata_h_veg, &
93 xdata_root_extinctiongv
102 USE yomhook
,ONLY : lhook, dr_hook
103 USE parkind1
,ONLY : jprb
112 TYPE(isba_t
),
INTENT(INOUT) :: i
114 CHARACTER(LEN=*),
INTENT(IN) :: hisba
115 INTEGER,
INTENT(IN) :: kdecade
116 REAL,
DIMENSION(:,:),
INTENT(IN) :: pcover
117 LOGICAL,
DIMENSION(:),
INTENT(IN) :: ocover
118 CHARACTER(LEN=*),
INTENT(IN) :: hphoto
119 CHARACTER(LEN=*),
INTENT(IN) :: hsftype
121 REAL,
DIMENSION(:) ,
OPTIONAL,
INTENT(IN) :: psoilgrid
122 REAL,
DIMENSION(:) ,
OPTIONAL,
INTENT(IN) :: pperm
123 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pveg
124 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: plai
125 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: prsmin
126 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pgamma
127 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pwrmax_cf
128 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: prgl
129 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pcv
130 REAL,
DIMENSION(:,:,:),
OPTIONAL,
INTENT(OUT) :: pdg
131 INTEGER,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: kwg_layer
132 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pdroot
133 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pdg2
134 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pd_ice
135 REAL,
DIMENSION(:,:,:),
OPTIONAL,
INTENT(OUT) :: prootfrac
136 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pz0
137 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pz0_o_z0h
138 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: palbnir_veg
139 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: palbvis_veg
140 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: palbuv_veg
141 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pemis_eco
143 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pgndlitter
144 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: plaigv
145 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: prsmingv
146 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pgammagv
147 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pwrmax_cfgv
148 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: prglgv
149 REAL,
DIMENSION(:,:,:),
OPTIONAL,
INTENT(OUT) :: prootfracgv
150 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pz0litter
151 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: ph_veg
153 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pvegtype
155 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pgmes
156 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pre25
157 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pbslai
158 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: plaimin
159 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: psefold
160 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pgc
161 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pdmax
162 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pf2i
163 LOGICAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: ostress
165 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: ph_tree
167 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pce_nitro
168 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pcf_nitro
169 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pcna_nitro
171 TYPE(date_time),
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: tpseed
172 TYPE(date_time),
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: tpreap
174 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pwatsup
175 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(OUT) :: pirrig
181 REAL,
DIMENSION (:,:),
ALLOCATABLE :: zwork
183 CHARACTER(LEN=3) :: ytree, ynat, ylai, yveg, ydif
188 REAL(KIND=JPRB) :: zhook_handle
194 IF (lhook) CALL dr_hook(
'CONVERT_COVER_ISBA',0,zhook_handle)
196 IF (
ASSOCIATED(dtco%XDATA_WEIGHT))
DEALLOCATE(dtco%XDATA_WEIGHT)
198 IF (hsftype==
'NAT')
THEN
204 ELSEIF (hsftype==
'GRD')
THEN
219 IF (present(plai))
THEN
221 plai ,pcover ,xdata_lai(:,kdecade,:),yveg,
'ARI',ocover,kdecade=kdecade)
224 IF (present(plaigv))
THEN
226 plaigv ,pcover ,xdata_laigv(:,kdecade,:),yveg,
'ARI',ocover,kdecade=kdecade)
232 IF (present(prsmin))
THEN
233 IF (
SIZE(prsmin)>0) &
235 prsmin,pcover ,xdata_rsmin,ylai,
'INV',ocover,kdecade=kdecade)
238 IF (present(prsmingv))
THEN
239 IF (
SIZE(prsmingv)>0) &
241 prsmingv,pcover ,xdata_rsmingv,ylai,
'INV',ocover,kdecade=kdecade)
244 IF (present(ph_tree)) &
246 ph_tree ,pcover ,xdata_h_tree(:,:) ,ytree,
'ARI',ocover)
249 IF (present(pvegtype)) &
251 pvegtype(:,jveg),pcover ,dtco%XDATA_VEGTYPE(:,jveg),ynat,
'ARI',ocover)
260 pveg ,pcover ,xdata_veg(:,kdecade,:),ynat,
'ARI',ocover)
263 IF (present(pgndlitter)) &
265 pgndlitter ,pcover ,xdata_gndlitter(:,kdecade,:),ynat,
'ARI',ocover)
272 pz0 ,pcover ,xdata_z0(:,kdecade,:),ynat,
'CDN',ocover)
274 IF (present(pz0_o_z0h)) &
276 pz0_o_z0h ,pcover ,xdata_z0_o_z0h(:,:),ynat,
'ARI',ocover)
278 IF (present(pz0litter)) &
280 pz0litter ,pcover ,xdata_z0litter(:,kdecade,:),ynat,
'CDN',ocover)
285 IF (present(pemis_eco)) &
287 pemis_eco ,pcover ,xdata_emis_eco(:,kdecade,:),ynat,
'ARI',ocover)
293 IF (present(pgamma)) &
295 pgamma ,pcover ,xdata_gamma(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
296 IF (present(pgammagv)) &
298 pgammagv ,pcover ,xdata_gammagv(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
299 IF (present(pwrmax_cf)) &
301 pwrmax_cf ,pcover ,xdata_wrmax_cf(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
302 IF (present(pwrmax_cfgv)) &
304 pwrmax_cfgv ,pcover ,xdata_wrmax_cfgv(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
309 prgl ,pcover ,xdata_rgl(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
310 IF (present(prglgv)) &
312 prglgv ,pcover ,xdata_rglgv(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
315 pcv ,pcover ,xdata_cv(:,:),yveg,
'INV',ocover,kdecade=kdecade)
317 IF (present(ph_veg))
THEN
319 ph_veg,pcover,xdata_h_veg(:,kdecade,:),yveg,
'ARI',ocover,kdecade=kdecade)
329 IF (present(pdg))
THEN
333 CALL
set_cover_dg(
SIZE(pdg,1),
SIZE(pdg,2),
SIZE(pdg,3),present(pperm),&
334 present(pdg2),present(pdroot),present(kwg_layer), &
335 present(prootfrac),present(prootfracgv) )
344 IF (present(pd_ice)) &
346 pd_ice,pcover ,xdata_dice(:,:),ynat,
'ARI',ocover)
350 IF (present(palbnir_veg))
THEN
351 IF (i%CALBEDO==
'CM13')
THEN
353 palbvis_veg,pcover,xdata_alb_veg_nir(:,kdecade,:),yveg,
'ARI',ocover,kdecade=kdecade)
356 palbnir_veg,pcover ,xdata_albnir_veg(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
360 IF (present(palbvis_veg))
THEN
361 IF (i%CALBEDO==
'CM13')
THEN
363 palbvis_veg,pcover,xdata_alb_veg_vis(:,kdecade,:),yveg,
'ARI',ocover,kdecade=kdecade)
366 palbvis_veg,pcover ,xdata_albvis_veg(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
370 IF (present(palbuv_veg))
THEN
371 IF ((i%CALBEDO==
'CM13'.OR.i%LTR_ML).AND.present(palbvis_veg))
THEN
372 palbuv_veg(:,:)=palbvis_veg(:,:)
375 palbuv_veg, pcover ,xdata_albuv_veg(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
380 IF (hphoto ==
'AST' .OR. hphoto ==
'LST' .OR. hphoto ==
'NIT' .OR. hphoto ==
'NCB')
THEN
382 IF (present(pgmes))
THEN
385 pgmes ,pcover ,xdata_gmes_st(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
388 IF (present(pbslai))
THEN
389 IF (
SIZE(pbslai)>0) &
391 pbslai ,pcover ,xdata_bslai_st(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
394 IF (present(psefold))
THEN
395 IF (
SIZE(psefold)>0) &
397 psefold,pcover ,xdata_sefold_st(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
400 IF (present(pgc))
THEN
403 pgc ,pcover ,xdata_gc_st(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
406 IF (present(pdmax))
THEN
409 pdmax ,pcover ,xdata_dmax_st(:,:),ytree,
'ARI',ocover,kdecade=kdecade)
413 IF (present(pgmes))
THEN
416 pgmes ,pcover ,xdata_gmes(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
418 IF (present(pbslai))
THEN
419 IF (
SIZE(pbslai)>0) &
421 pbslai ,pcover ,xdata_bslai(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
423 IF (present(psefold))
THEN
424 IF (
SIZE(psefold)>0) &
426 psefold,pcover ,xdata_sefold(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
428 IF (present(pgc))
THEN
431 pgc ,pcover ,xdata_gc(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
433 IF (present(pdmax))
THEN
436 pdmax ,pcover ,xdata_dmax(:,:),ytree,
'ARI',ocover,kdecade=kdecade)
441 IF (present(pre25))
THEN
444 pre25 ,pcover ,xdata_re25(:,:),ynat,
'ARI',ocover,kdecade=kdecade)
447 IF (present(plaimin))
THEN
448 IF (
SIZE(plaimin)>0) &
450 plaimin,pcover ,xdata_laimin(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
452 IF (present(pce_nitro))
THEN
453 IF (
SIZE(pce_nitro)>0) &
455 pce_nitro ,pcover ,xdata_ce_nitro(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
457 IF (present(pcf_nitro))
THEN
458 IF (
SIZE(pcf_nitro)>0) &
460 pcf_nitro ,pcover ,xdata_cf_nitro(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
462 IF (present(pcna_nitro))
THEN
463 IF (
SIZE(pcna_nitro)>0) &
465 pcna_nitro ,pcover ,xdata_cna_nitro(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
467 IF (present(pf2i))
THEN
470 pf2i ,pcover ,xdata_f2i(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
473 IF (present(ostress))
THEN
474 IF (
SIZE(ostress)>0)
THEN
475 ALLOCATE(zwork(
SIZE(ostress,1),
SIZE(ostress,2)))
477 zwork,pcover ,xdata_stress(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
487 IF (hphoto ==
'LAI' .OR. hphoto ==
'LST' .OR. hphoto ==
'NIT')
THEN
492 IF (present(tpseed))
THEN
493 IF (
SIZE(tpseed)>0) &
494 CALL
av_pgd(tpseed ,pcover ,tdata_seed(:,:),yveg,
'MAJ',ocover,kdecade=kdecade)
500 IF (present(tpreap))
THEN
501 IF (
SIZE(tpreap)>0) &
502 CALL
av_pgd(tpreap ,pcover ,tdata_reap(:,:),yveg,
'MAJ',ocover,kdecade=kdecade)
508 IF (present(pirrig))
THEN
509 IF (
SIZE(pirrig)>0) &
511 pirrig ,pcover ,xdata_irrig(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
517 IF (present(pwatsup))
THEN
518 IF (
SIZE(pwatsup)>0) &
520 pwatsup ,pcover ,xdata_watsup(:,:),yveg,
'ARI',ocover,kdecade=kdecade)
525 IF (
ASSOCIATED(dtco%XDATA_WEIGHT))
DEALLOCATE(dtco%XDATA_WEIGHT)
527 IF (lhook) CALL dr_hook(
'CONVERT_COVER_ISBA',1,zhook_handle)
533 SUBROUTINE set_cover_dg(KNI,KGROUND,KPATCH,LPERM,LDG2,LDROOT,LWG_LAYER,LROOTFRAC, &
540 USE modi_ini_data_rootfrac
541 USE modi_ini_data_soil
542 USE modi_permafrost_depth
546 INTEGER,
INTENT(IN) :: kni
547 INTEGER,
INTENT(IN) :: kground
548 INTEGER,
INTENT(IN) :: kpatch
549 LOGICAL,
INTENT(IN) :: lperm
550 LOGICAL,
INTENT(IN) :: ldg2
551 LOGICAL,
INTENT(IN) :: ldroot
552 LOGICAL,
INTENT(IN) :: lwg_layer
553 LOGICAL,
INTENT(IN) :: lrootfrac
554 LOGICAL,
INTENT(IN) :: lrootfracgv
556 REAL,
DIMENSION (SIZE(XDATA_GROUND_DEPTH,1),SIZE(XDATA_GROUND_DEPTH,2)) :: zdata_ground_depth
557 REAL,
DIMENSION (SIZE(XDATA_ROOT_DEPTH ,1),3,SIZE(XDATA_ROOT_DEPTH,2)) :: zdata_dg
559 INTEGER,
DIMENSION (KNI,KPATCH) :: iwg_layer
560 REAL,
DIMENSION (KNI,KPATCH) :: zdtot, zdroot
561 REAL,
DIMENSION (KNI,KPATCH) :: zroot_ext
562 REAL,
DIMENSION (KNI,KPATCH) :: zroot_lin
564 INTEGER :: jpatch, jj, jvegtype
566 REAL(KIND=JPRB) :: zhook_handle
568 IF (lhook) CALL dr_hook(
'CONVERT_COVER_ISBA:SET_COVER_DG',0,zhook_handle)
572 zroot_ext(:,:) = xundef
573 zroot_lin(:,:) = xundef
574 iwg_layer(:,:) = nundef
576 zdata_ground_depth(:,:) = xdata_ground_depth(:,:)
591 psurf = dtco%XDATA_NATURE, &
592 psurf2 = dtco%XDATA_GARDEN, &
593 prootdepth = xdata_root_depth, &
594 psoildepth = xdata_ground_depth )
598 pdg(:,jlayer,:),pcover,zdata_dg(:,jlayer,:),ynat,
'ARI',ocover,kdecade=kdecade)
603 IF(cdgdif==
'ROOT')
THEN
604 DO jvegtype=1,nvegtype
605 IF(jvegtype==nvt_no)
THEN
606 WHERE(xdata_ground_depth(:,jvegtype)/=xundef)
607 zdata_ground_depth(:,jvegtype) = min(1.0,xdata_ground_depth(:,jvegtype))
609 ELSEIF(jvegtype/=nvt_rock.AND.jvegtype/=nvt_snow)
THEN
610 zdata_ground_depth(:,jvegtype) = max(1.0,xdata_root_depth(:,jvegtype))
612 zdata_ground_depth(:,jvegtype) = xdata_root_depth(:,jvegtype)
618 zdtot(:,:),pcover,zdata_ground_depth,ynat,cdgavg,ocover,kdecade=kdecade)
626 IF(cdgdif==
'ROOT')
THEN
628 pdg2(:,:),pcover,zdata_ground_depth,ynat,cdgavg,ocover)
631 pdg2(:,:),pcover,xdata_root_depth,ynat,cdgavg,ocover)
634 IF (ldroot .OR. lrootfrac .OR. lrootfracgv .OR. (cdgdif==
'ROOT'))
THEN
636 zdroot(:,:),pcover,xdata_root_depth,ydif,cdgavg,ocover,kdecade=kdecade)
637 IF (ldroot) pdroot(:,:) = zdroot(:,:)
638 IF (cdgdif==
'ROOT')
WHERE(zdroot(:,:).NE.xundef) zdtot(:,:) = max(zdroot(:,:),zdtot(:,:))
641 CALL
ini_data_soil(hisba, pdg, psoildepth=zdtot, psoilgrid=psoilgrid, &
642 kwg_layer=iwg_layer )
643 IF (lwg_layer) kwg_layer(:,:) = iwg_layer(:,:)
645 IF (lrootfrac .OR. lrootfracgv)
THEN
648 zroot_lin(:,:),pcover,xdata_root_lin(:,:),ydif,
'ARI',ocover,kdecade=kdecade)
651 zroot_ext(:,:),pcover,xdata_root_extinction(:,:),ydif,
'ARI',ocover,kdecade=kdecade)
654 IF (lrootfracgv)
THEN
656 zroot_ext(:,:),pcover,xdata_root_extinctiongv(:,:),ydif,
'ARI',ocover,kdecade=kdecade)
658 prootfracgv,ogv=lrootfracgv)
665 IF (lhook) CALL dr_hook(
'CONVERT_COVER_ISBA:SET_COVER_DG',1,zhook_handle)
subroutine permafrost_depth(KNI, KPATCH, PPERM, PSOILDEPTH)
subroutine set_cover_dg(KNI, KGROUND, KPATCH, LPERM, LDG2, LDROOT, LWG_LAYER, LROOTFRAC, LROOTFRACGV)
subroutine ini_data_rootfrac(PDG, PROOTDEPTH, PROOT_EXT, PROOT_LIN, PROOTFRAC, OGV)
subroutine ini_data_soil(HISBA, PDG_OUT, PSURF, PSURF2, PROOTDEPTH, PSOILDEPTH, PSOILGRID, KWG_LAYER)
subroutine convert_cover_isba(DTCO, I, HISBA, KDECADE, PCOVER, OCOVER, HPHOTO, HSFTYPE, PVEG, PLAI, PRSMIN, PGAMMA, PWRMAX_CF, PRGL, PCV, PSOILGRID, PPERM, PDG, KWG_LAYER, PDROOT, PDG2, PD_ICE, 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, TPSEED, TPREAP, PWATSUP, PIRRIG, PGNDLITTER, PLAIGV, PRSMINGV, PGAMMAGV, PWRMAX_CFGV, PRGLGV, PROOTFRACGV, PZ0LITTER, PH_VEG)