13 REAL,
INTENT(IN) :: plai
14 REAL,
INTENT(IN) :: ph_tree
15 REAL,
DIMENSION(:),
INTENT(IN) :: pvegtype
16 LOGICAL,
INTENT(IN) :: oagri_to_grass
18 REAL,
DIMENSION(SIZE(PVEGTYPE)) :: ph_veg
25 REAL,
DIMENSION(:),
INTENT(IN) :: plai
26 REAL,
DIMENSION(:),
INTENT(IN) :: ph_tree
27 REAL,
DIMENSION(:,:),
INTENT(IN) :: pvegtype
28 LOGICAL,
INTENT(IN) :: oagri_to_grass
30 REAL,
DIMENSION(SIZE(PVEGTYPE,1),SIZE(PVEGTYPE,2)) :: ph_veg
37 REAL,
DIMENSION(:,:),
INTENT(IN) :: plai
38 REAL,
DIMENSION(:,:),
INTENT(IN) :: ph_tree
39 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: pvegtype
40 LOGICAL,
INTENT(IN) :: oagri_to_grass
42 REAL,
DIMENSION(SIZE(PVEGTYPE,1),SIZE(PVEGTYPE,2),SIZE(PVEGTYPE,3)) :: ph_veg
48 REAL,
DIMENSION(:),
INTENT(IN) :: plai
49 REAL,
DIMENSION(:),
INTENT(IN) :: ph_tree
50 REAL,
DIMENSION(:),
INTENT(IN) :: pvegtype
51 LOGICAL,
INTENT(IN) :: oagri_to_grass
53 REAL,
DIMENSION(SIZE(PVEGTYPE)) :: ph_veg
106 nvt_tebd, nvt_bone, nvt_trbe, nvt_trbd, &
107 nvt_tebe, nvt_tene, nvt_bobd, nvt_bond, &
108 nvt_shrb, nvt_c3, nvt_c4, nvt_irr, &
109 nvt_gras, nvt_bogr, nvt_trog
112 USE yomhook
,ONLY : lhook, dr_hook
113 USE parkind1
,ONLY : jprb
119 REAL,
INTENT(IN) :: plai
120 REAL,
INTENT(IN) :: ph_tree
121 REAL,
DIMENSION(:),
INTENT(IN) :: pvegtype
122 LOGICAL,
INTENT(IN) :: oagri_to_grass
124 REAL,
DIMENSION(SIZE(PVEGTYPE)) :: ph_veg
135 REAL(KIND=JPRB) :: zhook_handle
138 IF (lhook) CALL dr_hook(
'MODI_VEG_HEIGHT_FROM_LAI:VEG_HEIGHT_FROM_LAI_0D',0,zhook_handle)
143 IF ( pvegtype(nvt_no ) + pvegtype(nvt_rock) + pvegtype(nvt_snow) < 1.)
THEN
144 zlai = plai / (1.-pvegtype(nvt_no)-pvegtype(nvt_rock)-pvegtype(nvt_snow))
148 IF ( plai /= xundef)
THEN
149 zallen_h = exp((zlai-3.5)/(1.3))
152 ph_veg(nvt_park) = zlai / 6.
154 ph_veg(nvt_tebd) = zlai / 6.
155 ph_veg(nvt_bone) = zlai / 6.
156 ph_veg(nvt_trbe) = zlai / 6.
157 ph_veg(nvt_trbd) = zlai / 6.
158 ph_veg(nvt_tebe) = zlai / 6.
159 ph_veg(nvt_tene) = zlai / 6.
160 ph_veg(nvt_bobd) = zlai / 6.
161 ph_veg(nvt_bond) = zlai / 6.
162 ph_veg(nvt_shrb) = zlai / 6.
164 ph_veg(nvt_tebd) = ph_tree
165 ph_veg(nvt_bone) = ph_tree
166 ph_veg(nvt_trbe) = ph_tree
167 ph_veg(nvt_trbd) = ph_tree
168 ph_veg(nvt_tebe) = ph_tree
169 ph_veg(nvt_tene) = ph_tree
170 ph_veg(nvt_bobd) = ph_tree
171 ph_veg(nvt_bond) = ph_tree
172 ph_veg(nvt_shrb) = ph_tree
174 ph_veg(nvt_gras) = zlai / 6.
175 ph_veg(nvt_bogr) = zlai / 6.
176 ph_veg(nvt_trog) = zlai / 6.
177 IF(oagri_to_grass)
THEN
178 ph_veg(nvt_c3 ) = zlai / 6.
179 ph_veg(nvt_c4 ) = zlai / 6.
180 ph_veg(nvt_irr ) = zlai / 6.
182 ph_veg(nvt_c3 ) = min(1. , zallen_h )
183 ph_veg(nvt_c4 ) = min(2.5, zallen_h )
184 ph_veg(nvt_irr ) = min(2.5, zallen_h )
186 ph_veg(nvt_no ) = 0.1
187 ph_veg(nvt_rock) = 1.
188 ph_veg(nvt_snow) = 0.01
190 ph_veg(:) = max(ph_veg(:),0.001)
192 IF (lhook) CALL dr_hook(
'MODI_VEG_HEIGHT_FROM_LAI:VEG_HEIGHT_FROM_LAI_0D',1,zhook_handle)
240 nvt_tebd, nvt_bone, nvt_trbe, nvt_trbd, &
241 nvt_tebe, nvt_tene, nvt_bobd, nvt_bond, &
242 nvt_shrb, nvt_c3, nvt_c4, nvt_irr, &
243 nvt_gras, nvt_bogr, nvt_trog
246 USE yomhook
,ONLY : lhook, dr_hook
247 USE parkind1
,ONLY : jprb
253 REAL,
DIMENSION(:),
INTENT(IN) :: plai
254 REAL,
DIMENSION(:),
INTENT(IN) :: ph_tree
255 REAL,
DIMENSION(:,:),
INTENT(IN) :: pvegtype
256 LOGICAL,
INTENT(IN) :: oagri_to_grass
258 REAL,
DIMENSION(SIZE(PVEGTYPE,1),SIZE(PVEGTYPE,2)) :: ph_veg
262 REAL,
DIMENSION(SIZE(PLAI)) :: zallen_h
263 REAL,
DIMENSION(SIZE(PLAI)) :: zlai
265 REAL,
DIMENSION(SIZE(PLAI)) :: zavg_h
269 REAL(KIND=JPRB) :: zhook_handle
272 IF (lhook) CALL dr_hook(
'MODI_VEG_HEIGHT_FROM_LAI:VEG_HEIGHT_FROM_LAI_1D',0,zhook_handle)
279 WHERE ( pvegtype(:,nvt_no ) + pvegtype(:,nvt_rock) + pvegtype(:,nvt_snow) < 1.)
280 zlai(:) = plai(:) / (1.-pvegtype(:,nvt_no)-pvegtype(:,nvt_rock)-pvegtype(:,nvt_snow))
284 WHERE (plai(:) /= xundef)
285 zallen_h(:) = exp((zlai(:)-3.5)/(1.3))
289 ph_veg(:,nvt_park) = zlai(:) / 6.
291 ph_veg(:,nvt_tebd) = zlai(:) / 6.
292 ph_veg(:,nvt_bone) = zlai(:) / 6.
293 ph_veg(:,nvt_trbe) = zlai(:) / 6.
294 ph_veg(:,nvt_trbd) = zlai(:) / 6.
295 ph_veg(:,nvt_tebe) = zlai(:) / 6.
296 ph_veg(:,nvt_tene) = zlai(:) / 6.
297 ph_veg(:,nvt_bobd) = zlai(:) / 6.
298 ph_veg(:,nvt_bond) = zlai(:) / 6.
299 ph_veg(:,nvt_shrb) = zlai(:) / 6.
301 ph_veg(:,nvt_tebd) = ph_tree(:)
302 ph_veg(:,nvt_bone) = ph_tree(:)
303 ph_veg(:,nvt_trbe) = ph_tree(:)
304 ph_veg(:,nvt_trbd) = ph_tree(:)
305 ph_veg(:,nvt_tebe) = ph_tree(:)
306 ph_veg(:,nvt_tene) = ph_tree(:)
307 ph_veg(:,nvt_bobd) = ph_tree(:)
308 ph_veg(:,nvt_bond) = ph_tree(:)
309 ph_veg(:,nvt_shrb) = ph_tree(:)
311 ph_veg(:,nvt_gras) = zlai(:) / 6.
312 ph_veg(:,nvt_bogr) = zlai(:) / 6.
313 ph_veg(:,nvt_trog) = zlai(:) / 6.
314 IF(oagri_to_grass)
THEN
315 ph_veg(:,nvt_c3 ) = zlai(:) / 6.
316 ph_veg(:,nvt_c4 ) = zlai(:) / 6.
317 ph_veg(:,nvt_irr ) = zlai(:) / 6.
319 ph_veg(:,nvt_c3 ) = min(1. , zallen_h(:) )
320 ph_veg(:,nvt_c4 ) = min(2.5, zallen_h(:) )
321 ph_veg(:,nvt_irr ) = min(2.5, zallen_h(:) )
323 ph_veg(:,nvt_no ) = 0.1
324 ph_veg(:,nvt_rock) = 1.
325 ph_veg(:,nvt_snow) = 0.01
327 ph_veg(:,:) = max(ph_veg(:,:),0.001)
329 IF (lhook) CALL dr_hook(
'MODI_VEG_HEIGHT_FROM_LAI:VEG_HEIGHT_FROM_LAI_1D',1,zhook_handle)
376 nvt_tebd, nvt_bone, nvt_trbe, nvt_trbd, &
377 nvt_tebe, nvt_tene, nvt_bobd, nvt_bond, &
378 nvt_shrb, nvt_c3, nvt_c4, nvt_irr, &
379 nvt_gras, nvt_bogr, nvt_trog
383 USE yomhook
,ONLY : lhook, dr_hook
384 USE parkind1
,ONLY : jprb
390 REAL,
DIMENSION(:,:),
INTENT(IN) :: plai
391 REAL,
DIMENSION(:,:),
INTENT(IN) :: ph_tree
392 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: pvegtype
393 LOGICAL,
INTENT(IN) :: oagri_to_grass
395 REAL,
DIMENSION(SIZE(PVEGTYPE,1),SIZE(PVEGTYPE,2),SIZE(PVEGTYPE,3)) :: ph_veg
400 REAL,
DIMENSION(SIZE(PLAI,1),SIZE(PLAI,2)) :: zallen_h
401 REAL,
DIMENSION(SIZE(PLAI,1),SIZE(PLAI,2)) :: zlai
403 REAL,
DIMENSION(SIZE(PLAI,1),SIZE(PLAI,2)) :: zavg_h
407 REAL(KIND=JPRB) :: zhook_handle
410 IF (lhook) CALL dr_hook(
'MODI_VEG_HEIGHT_FROM_LAI:VEG_HEIGHT_FROM_LAI_2D',0,zhook_handle)
416 zlai(:,:) = plai(:,:)
417 WHERE ( pvegtype(:,:,nvt_no ) + pvegtype(:,:,nvt_rock) + pvegtype(:,:,nvt_snow) < 1.)
418 zlai(:,:) = plai(:,:) / (1.-pvegtype(:,:,nvt_no)-pvegtype(:,:,nvt_rock)-pvegtype(:,:,nvt_snow))
422 WHERE(plai(:,:)/=xundef)
423 zallen_h(:,:) = exp((zlai(:,:)-3.5)/(1.3))
427 ph_veg(:,:,nvt_park) = zlai(:,:) / 6.
429 ph_veg(:,:,nvt_tebd) = zlai(:,:) / 6.
430 ph_veg(:,:,nvt_bone) = zlai(:,:) / 6.
431 ph_veg(:,:,nvt_trbe) = zlai(:,:) / 6.
432 ph_veg(:,:,nvt_trbd) = zlai(:,:) / 6.
433 ph_veg(:,:,nvt_tebe) = zlai(:,:) / 6.
434 ph_veg(:,:,nvt_tene) = zlai(:,:) / 6.
435 ph_veg(:,:,nvt_bobd) = zlai(:,:) / 6.
436 ph_veg(:,:,nvt_bond) = zlai(:,:) / 6.
437 ph_veg(:,:,nvt_shrb) = zlai(:,:) / 6.
439 ph_veg(:,:,nvt_tebd) = ph_tree(:,:)
440 ph_veg(:,:,nvt_bone) = ph_tree(:,:)
441 ph_veg(:,:,nvt_trbe) = ph_tree(:,:)
442 ph_veg(:,:,nvt_trbd) = ph_tree(:,:)
443 ph_veg(:,:,nvt_tebe) = ph_tree(:,:)
444 ph_veg(:,:,nvt_tene) = ph_tree(:,:)
445 ph_veg(:,:,nvt_bobd) = ph_tree(:,:)
446 ph_veg(:,:,nvt_bond) = ph_tree(:,:)
447 ph_veg(:,:,nvt_shrb) = ph_tree(:,:)
449 ph_veg(:,:,nvt_gras) = zlai(:,:) / 6.
450 ph_veg(:,:,nvt_bogr) = zlai(:,:) / 6.
451 ph_veg(:,:,nvt_trog) = zlai(:,:) / 6.
452 IF(oagri_to_grass)
THEN
453 ph_veg(:,:,nvt_c3 ) = zlai(:,:) / 6.
454 ph_veg(:,:,nvt_c4 ) = zlai(:,:) / 6.
455 ph_veg(:,:,nvt_irr ) = zlai(:,:) / 6.
457 ph_veg(:,:,nvt_c3 ) = min(1. , zallen_h(:,:) )
458 ph_veg(:,:,nvt_c4 ) = min(2.5, zallen_h(:,:) )
459 ph_veg(:,:,nvt_irr ) = min(2.5, zallen_h(:,:) )
461 ph_veg(:,:,nvt_no ) = 0.1
462 ph_veg(:,:,nvt_rock) = 1.
463 ph_veg(:,:,nvt_snow) = 0.01
465 ph_veg(:,:,:) = max(ph_veg(:,:,:),0.001)
467 IF (lhook) CALL dr_hook(
'MODI_VEG_HEIGHT_FROM_LAI:VEG_HEIGHT_FROM_LAI_2D',1,zhook_handle)
516 nvt_tebd, nvt_bone, nvt_trbe, nvt_trbd, &
517 nvt_tebe, nvt_tene, nvt_bobd, nvt_bond, &
518 nvt_shrb, nvt_c3, nvt_c4, nvt_irr, &
519 nvt_gras, nvt_bogr, nvt_trog
523 USE yomhook
,ONLY : lhook, dr_hook
524 USE parkind1
,ONLY : jprb
530 REAL,
DIMENSION(:),
INTENT(IN) :: plai
531 REAL,
DIMENSION(:),
INTENT(IN) :: ph_tree
532 REAL,
DIMENSION(:),
INTENT(IN) :: pvegtype
533 LOGICAL,
INTENT(IN) :: oagri_to_grass
535 REAL,
DIMENSION(SIZE(PVEGTYPE)) :: ph_veg
539 REAL,
DIMENSION(SIZE(PLAI)) :: zallen_h
540 REAL(KIND=JPRB) :: zhook_handle
543 IF (lhook) CALL dr_hook(
'MODI_VEG_HEIGHT_FROM_LAI:VEG_HEIGHT_FROM_LAI_PATCH',0,zhook_handle)
550 WHERE (plai(:)/= xundef)
551 zallen_h(:) = exp((plai(:)-3.5)/(1.3))
555 IF (pvegtype(nvt_park)>0.) ph_veg(nvt_park) = plai(nvt_park) / 6.
557 IF (pvegtype(nvt_tebd)>0.) ph_veg(nvt_tebd) = plai(nvt_tebd) / 6.
558 IF (pvegtype(nvt_bone)>0.) ph_veg(nvt_bone) = plai(nvt_bone) / 6.
559 IF (pvegtype(nvt_trbe)>0.) ph_veg(nvt_trbe) = plai(nvt_trbe) / 6.
560 IF (pvegtype(nvt_trbd)>0.) ph_veg(nvt_trbd) = plai(nvt_trbd) / 6.
561 IF (pvegtype(nvt_tebe)>0.) ph_veg(nvt_tebe) = plai(nvt_tebe) / 6.
562 IF (pvegtype(nvt_tene)>0.) ph_veg(nvt_tene) = plai(nvt_tene) / 6.
563 IF (pvegtype(nvt_bobd)>0.) ph_veg(nvt_bobd) = plai(nvt_bobd) / 6.
564 IF (pvegtype(nvt_bond)>0.) ph_veg(nvt_bond) = plai(nvt_bond) / 6.
565 IF (pvegtype(nvt_shrb)>0.) ph_veg(nvt_shrb) = plai(nvt_shrb) / 6.
567 IF (pvegtype(nvt_tebd)>0.) ph_veg(nvt_tebd) = ph_tree(nvt_tebd)
568 IF (pvegtype(nvt_bone)>0.) ph_veg(nvt_bone) = ph_tree(nvt_bone)
569 IF (pvegtype(nvt_trbe)>0.) ph_veg(nvt_trbe) = ph_tree(nvt_trbe)
570 IF (pvegtype(nvt_trbd)>0.) ph_veg(nvt_trbd) = ph_tree(nvt_trbd)
571 IF (pvegtype(nvt_tebe)>0.) ph_veg(nvt_tebe) = ph_tree(nvt_tebe)
572 IF (pvegtype(nvt_tene)>0.) ph_veg(nvt_tene) = ph_tree(nvt_tene)
573 IF (pvegtype(nvt_bobd)>0.) ph_veg(nvt_bobd) = ph_tree(nvt_bobd)
574 IF (pvegtype(nvt_bond)>0.) ph_veg(nvt_bond) = ph_tree(nvt_bond)
575 IF (pvegtype(nvt_shrb)>0.) ph_veg(nvt_shrb) = ph_tree(nvt_shrb)
577 IF (pvegtype(nvt_gras)>0.) ph_veg(nvt_gras) = plai(nvt_gras) / 6.
578 IF (pvegtype(nvt_bogr)>0.) ph_veg(nvt_bogr) = plai(nvt_bogr) / 6.
579 IF (pvegtype(nvt_trog)>0.) ph_veg(nvt_trog) = plai(nvt_trog) / 6.
580 IF(oagri_to_grass)
THEN
581 IF (pvegtype(nvt_c3 )>0.) ph_veg(nvt_c3 ) = plai(nvt_c3) / 6.
582 IF (pvegtype(nvt_c4 )>0.) ph_veg(nvt_c4 ) = plai(nvt_c4) / 6.
583 IF (pvegtype(nvt_irr )>0.) ph_veg(nvt_irr ) = plai(nvt_irr) / 6.
585 IF (pvegtype(nvt_c3 )>0.) ph_veg(nvt_c3 ) = min(1. , zallen_h(nvt_c3) )
586 IF (pvegtype(nvt_c4 )>0.) ph_veg(nvt_c4 ) = min(2.5, zallen_h(nvt_c4) )
587 IF (pvegtype(nvt_irr )>0.) ph_veg(nvt_irr ) = min(2.5, zallen_h(nvt_irr) )
589 IF (pvegtype(nvt_no )>0.) ph_veg(nvt_no ) = 0.1
590 IF (pvegtype(nvt_rock)>0.) ph_veg(nvt_rock) = 1.
591 IF (pvegtype(nvt_snow)>0.) ph_veg(nvt_snow) = 0.01
593 ph_veg(:) = max(ph_veg(:),0.001)
596 IF (lhook) CALL dr_hook(
'MODI_VEG_HEIGHT_FROM_LAI:VEG_HEIGHT_FROM_LAI_PATCH',1,zhook_handle)
real function, dimension(size(pvegtype, 1), size(pvegtype, 2)) veg_height_from_lai_1d(PLAI, PH_TREE, PVEGTYPE, OAGRI_TO_GRASS)
real function, dimension(size(pvegtype, 1), size(pvegtype, 2), size(pvegtype, 3)) veg_height_from_lai_2d(PLAI, PH_TREE, PVEGTYPE, OAGRI_TO_GRASS)
real function, dimension(size(pvegtype)) veg_height_from_lai_patch(PLAI, PH_TREE, PVEGTYPE, OAGRI_TO_GRASS)
real function, dimension(size(pvegtype)) veg_height_from_lai_0d(PLAI, PH_TREE, PVEGTYPE, OAGRI_TO_GRASS)