13 REAL,
INTENT(IN) :: PLAI
14 REAL,
DIMENSION(:),
INTENT(IN) :: PVEGTYPE
15 LOGICAL,
INTENT(IN) :: OAGRI_TO_GRASS
24 REAL,
DIMENSION(:),
INTENT(IN) :: PLAI
25 REAL,
DIMENSION(:,:),
INTENT(IN) :: PVEGTYPE
26 LOGICAL,
INTENT(IN) :: OAGRI_TO_GRASS
28 REAL,
DIMENSION(SIZE(PLAI)) :: PVEG
35 REAL,
DIMENSION(:,:),
INTENT(IN) :: PLAI
36 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: PVEGTYPE
37 LOGICAL,
INTENT(IN) :: OAGRI_TO_GRASS
39 REAL,
DIMENSION(SIZE(PLAI,1),SIZE(PLAI,2)) :: PVEG
46 REAL,
DIMENSION(:),
INTENT(IN) :: PLAI
47 LOGICAL,
INTENT(IN) :: OAGRI_TO_GRASS
49 REAL,
DIMENSION(SIZE(PLAI)) :: PVEG
100 USE modd_data_cover_par
, ONLY :nvt_no, nvt_rock, nvt_snow, nvt_tebd, &
101 nvt_bone, nvt_trbe, nvt_c3, nvt_c4, &
102 nvt_irr, nvt_gras, nvt_trog, nvt_park, &
103 nvt_trbd, nvt_tebe, nvt_tene, nvt_bobd, &
104 nvt_bond, nvt_bogr, nvt_shrb, nvt_c3w, &
105 nvt_c3s, nvt_fltr, nvt_flgr
116 REAL,
INTENT(IN) :: PLAI
117 REAL,
DIMENSION(:),
INTENT(IN) :: PVEGTYPE
118 LOGICAL,
INTENT(IN) :: OAGRI_TO_GRASS
124 REAL :: ZLAI, ZAGRI, ZSUM1, ZSUM2, ZSUM3
126 REAL(KIND=JPRB) :: ZHOOK_HANDLE
128 IF (
lhook)
CALL dr_hook(
'MODI_VEG_FROM_LAI:VEG_FROM_LAI_0D',0,zhook_handle)
130 IF ( pvegtype(nvt_no ) + pvegtype(nvt_rock) + pvegtype(nvt_snow)< 1.)
THEN 131 zlai = plai / (1.-pvegtype(nvt_no)-pvegtype(nvt_rock)-pvegtype(nvt_snow))
134 IF(oagri_to_grass)
THEN 137 zagri = (1. - exp( -0.6 * zlai ))
140 zsum1 = pvegtype(nvt_c4)
141 IF (nvt_irr>0 .AND. nvt_c3>0)
THEN 142 zsum1 = zsum1 + pvegtype(nvt_irr) + pvegtype(nvt_c3)
143 ELSEIF (nvt_c3w>0 .AND. nvt_c3s>0)
THEN 144 zsum1 = zsum1 + pvegtype(nvt_c3w) + pvegtype(nvt_c3s)
147 zsum2 = pvegtype(nvt_tebd) + pvegtype(nvt_trbd) + pvegtype(nvt_tebe) + &
148 pvegtype(nvt_bobd) + pvegtype(nvt_shrb) + pvegtype(nvt_bone) + &
149 pvegtype(nvt_tene) + pvegtype(nvt_bond)
150 IF (nvt_fltr>0) zsum2 = zsum2 + pvegtype(nvt_fltr)
152 zsum3 = pvegtype(nvt_gras) + pvegtype(nvt_bogr) + pvegtype(nvt_trog)
154 zsum3 = zsum3 + pvegtype(nvt_park)
155 ELSEIF (nvt_flgr>0)
THEN 156 zsum3 = zsum3 + pvegtype(nvt_flgr)
159 pveg = zagri * zsum1 &
163 + 0. * pvegtype(nvt_no ) &
164 + 0. * pvegtype(nvt_snow) &
165 + 0. * pvegtype(nvt_rock)
167 IF (
lhook)
CALL dr_hook(
'MODI_VEG_FROM_LAI:VEG_FROM_LAI_0D',1,zhook_handle)
213 USE modd_data_cover_par
, ONLY : nvt_no, nvt_rock, nvt_snow, nvt_tebd, &
214 nvt_bone, nvt_trbe, nvt_c3, nvt_c4, &
215 nvt_irr, nvt_gras, nvt_trog, nvt_park, &
216 nvt_trbd, nvt_tebe, nvt_tene, nvt_bobd, &
217 nvt_bond, nvt_bogr, nvt_shrb, nvt_c3w, &
218 nvt_c3s, nvt_fltr, nvt_flgr
229 REAL,
DIMENSION(:),
INTENT(IN) :: PLAI
230 REAL,
DIMENSION(:,:),
INTENT(IN) :: PVEGTYPE
231 LOGICAL,
INTENT(IN) :: OAGRI_TO_GRASS
233 REAL,
DIMENSION(SIZE(PLAI)) :: PVEG
237 REAL,
DIMENSION(SIZE(PLAI)) :: ZLAI, ZAGRI, ZSUM1, ZSUM2, ZSUM3
239 REAL(KIND=JPRB) :: ZHOOK_HANDLE
241 IF (
lhook)
CALL dr_hook(
'MODI_VEG_FROM_LAI:VEG_FROM_LAI_1D',0,zhook_handle)
243 WHERE ( pvegtype(:,nvt_no ) + pvegtype(:,nvt_rock) + pvegtype(:,nvt_snow) < 1.)
244 zlai(:) = plai(:) / (1.-pvegtype(:,nvt_no)-pvegtype(:,nvt_rock)-pvegtype(:,nvt_snow))
247 IF(oagri_to_grass)
THEN 250 zagri(:) = (1. - exp( -0.6 * zlai(:) ))
253 zsum1(:) = pvegtype(:,nvt_c4)
254 IF (nvt_irr>0 .AND. nvt_c3>0)
THEN 255 zsum1(:) = zsum1(:) + pvegtype(:,nvt_irr) + pvegtype(:,nvt_c3)
256 ELSEIF (nvt_c3w>0 .AND. nvt_c3s>0)
THEN 257 zsum1(:) = zsum1(:) + pvegtype(:,nvt_c3w) + pvegtype(:,nvt_c3s)
260 zsum2(:) = pvegtype(:,nvt_tebd) + pvegtype(:,nvt_trbd) + pvegtype(:,nvt_tebe) + &
261 pvegtype(:,nvt_bobd) + pvegtype(:,nvt_shrb) + pvegtype(:,nvt_bone) + &
262 pvegtype(:,nvt_tene) + pvegtype(:,nvt_bond)
263 IF (nvt_fltr>0) zsum2(:) = zsum2(:) + pvegtype(:,nvt_fltr)
265 zsum3(:) = pvegtype(:,nvt_gras) + pvegtype(:,nvt_bogr) + pvegtype(:,nvt_trog)
267 zsum3(:) = zsum3(:) + pvegtype(:,nvt_park)
268 ELSEIF (nvt_flgr>0)
THEN 269 zsum3(:) = zsum3(:) + pvegtype(:,nvt_flgr)
272 pveg(:) = zagri(:) * zsum1(:) &
276 + 0. * pvegtype(:,nvt_no ) &
277 + 0. * pvegtype(:,nvt_snow) &
278 + 0. * pvegtype(:,nvt_rock)
280 IF (
lhook)
CALL dr_hook(
'MODI_VEG_FROM_LAI:VEG_FROM_LAI_1D',1,zhook_handle)
327 USE modd_data_cover_par
, ONLY : nvt_no, nvt_rock, nvt_snow, nvt_tebd, &
328 nvt_bone, nvt_trbe, nvt_c3, nvt_c4, &
329 nvt_irr, nvt_gras, nvt_trog, nvt_park, &
330 nvt_trbd, nvt_tebe, nvt_tene, nvt_bobd, &
331 nvt_bond, nvt_bogr, nvt_shrb, nvt_c3w, &
332 nvt_c3s, nvt_fltr, nvt_flgr
344 REAL,
DIMENSION(:,:),
INTENT(IN) :: PLAI
345 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: PVEGTYPE
346 LOGICAL,
INTENT(IN) :: OAGRI_TO_GRASS
348 REAL,
DIMENSION(SIZE(PLAI,1),SIZE(PLAI,2)) :: PVEG
352 REAL,
DIMENSION(SIZE(PLAI,1),SIZE(PLAI,2)) :: ZLAI, ZAGRI, ZSUM1, ZSUM2, ZSUM3
353 REAL(KIND=JPRB) :: ZHOOK_HANDLE
355 IF (
lhook)
CALL dr_hook(
'MODI_VEG_FROM_LAI:VEG_FROM_LAI_2D',0,zhook_handle)
356 zlai(:,:) = plai(:,:)
357 WHERE ( pvegtype(:,:,nvt_no ) + pvegtype(:,:,nvt_rock) + pvegtype(:,:,nvt_snow) < 1.)
358 zlai(:,:) = plai(:,:) / (1.-pvegtype(:,:,nvt_no)-pvegtype(:,:,nvt_rock)-pvegtype(:,:,nvt_snow))
363 IF(oagri_to_grass)
THEN 366 WHERE (plai(:,:) /=
xundef)
367 zagri(:,:) = (1. - exp( -0.6 * zlai(:,:) ))
373 zsum1(:,:) = pvegtype(:,:,nvt_c4)
374 IF (nvt_irr>0 .AND. nvt_c3>0)
THEN 375 zsum1(:,:) = zsum1(:,:) + pvegtype(:,:,nvt_irr) + pvegtype(:,:,nvt_c3)
376 ELSEIF (nvt_c3w>0 .AND. nvt_c3s>0)
THEN 377 zsum1(:,:) = zsum1(:,:) + pvegtype(:,:,nvt_c3w) + pvegtype(:,:,nvt_c3s)
380 zsum2(:,:) = pvegtype(:,:,nvt_tebd) + pvegtype(:,:,nvt_trbd) + pvegtype(:,:,nvt_tebe) + &
381 pvegtype(:,:,nvt_bobd) + pvegtype(:,:,nvt_shrb) + pvegtype(:,:,nvt_bone) + &
382 pvegtype(:,:,nvt_tene) + pvegtype(:,:,nvt_bond)
383 IF (nvt_fltr>0) zsum2(:,:) = zsum2(:,:) + pvegtype(:,:,nvt_fltr)
385 zsum3(:,:) = pvegtype(:,:,nvt_gras) + pvegtype(:,:,nvt_bogr) + pvegtype(:,:,nvt_trog)
387 zsum3(:,:) = zsum3(:,:) + pvegtype(:,:,nvt_park)
388 ELSEIF (nvt_flgr>0)
THEN 389 zsum3(:,:) = zsum3(:,:) + pvegtype(:,:,nvt_flgr)
392 WHERE (plai(:,:) /=
xundef)
393 pveg(:,:) = zagri(:,:) * zsum1(:,:) &
394 + 0.95 * zsum2(:,:) &
396 + 0.95 * zsum3(:,:) &
397 + 0. * pvegtype(:,:,nvt_no ) &
398 + 0. * pvegtype(:,:,nvt_snow) &
399 + 0. * pvegtype(:,:,nvt_rock)
401 IF (
lhook)
CALL dr_hook(
'MODI_VEG_FROM_LAI:VEG_FROM_LAI_2D',1,zhook_handle)
450 USE modd_data_cover_par
, ONLY : nvt_no, nvt_rock, nvt_snow, nvt_tebd, &
451 nvt_bone, nvt_trbe, nvt_c3, nvt_c4, &
452 nvt_irr, nvt_gras, nvt_trog, nvt_park, &
453 nvt_trbd, nvt_tebe, nvt_tene, nvt_bobd, &
454 nvt_bond, nvt_bogr, nvt_shrb, nvt_c3w, &
455 nvt_c3s, nvt_fltr, nvt_flgr
468 REAL,
DIMENSION(:),
INTENT(IN) :: PLAI
469 LOGICAL,
INTENT(IN) :: OAGRI_TO_GRASS
471 REAL,
DIMENSION(SIZE(PLAI)) :: PVEG
475 REAL(KIND=JPRB) :: ZHOOK_HANDLE
477 IF (
lhook)
CALL dr_hook(
'MODI_VEG_FROM_LAI:VEG_FROM_LAI_VEGTYPE_1D',0,zhook_handle)
480 IF(oagri_to_grass)
THEN 487 ELSEIF (nvt_c3w>0 .AND. nvt_c3s>0)
THEN 492 IF (plai(nvt_c4)/=
xundef) pveg(nvt_c4 )= 1. - exp( -0.6 * plai(nvt_c4 ) )
494 IF (plai(nvt_irr)/=
xundef) pveg(nvt_irr )= 1. - exp( -0.6 * plai(nvt_irr ) )
497 IF (plai(nvt_c3)/=
xundef) pveg(nvt_c3 )= 1. - exp( -0.6 * plai(nvt_c3 ) )
498 ELSEIF (nvt_c3w>0 .AND. nvt_c3s>0)
THEN 499 IF (plai(nvt_c3w)/=
xundef) pveg(nvt_c3w )= 1. - exp( -0.6 * plai(nvt_c3w ) )
500 IF (plai(nvt_c3s)/=
xundef) pveg(nvt_c3s )= 1. - exp( -0.6 * plai(nvt_c3s ) )
522 ELSEIF (nvt_flgr>0)
THEN 529 IF (
lhook)
CALL dr_hook(
'MODI_VEG_FROM_LAI:VEG_FROM_LAI_VEGTYPE_1D',1,zhook_handle)
real function, dimension(size(plai)) veg_from_lai_1d(PLAI, PVEGTYPE, OAGRI_TO_GRASS)
real function, dimension(size(plai, 1), size(plai, 2)) veg_from_lai_2d(PLAI, PVEGTYPE, OAGRI_TO_GRASS)
real function veg_from_lai_0d(PLAI, PVEGTYPE, OAGRI_TO_GRASS)
real function, dimension(size(plai)) veg_from_lai_vegtype_1d(PLAI, OAGRI_TO_GRASS)