SURFEX v8.1
General documentation of Surfex
green_from_lai.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 !#######################
7 !#######################
8 !
9 INTERFACE green_from_lai
10 !
11  FUNCTION green_from_lai_0d(PLAI,PVEGTYPE,OAGRI_TO_GRASS) RESULT(PGREEN)
12 !
13 REAL, INTENT(IN) :: PLAI ! Leaf area Index
14 REAL, DIMENSION(:), INTENT(IN) :: PVEGTYPE ! type of vegetation
15 LOGICAL, INTENT(IN) :: OAGRI_TO_GRASS
16 !
17 REAL :: PGREEN ! greeness fraction
18 !
19 END FUNCTION green_from_lai_0d
20 !
21 !
22  FUNCTION green_from_lai_1d(PLAI,PVEGTYPE,OAGRI_TO_GRASS) RESULT(PGREEN)
23 !
24 REAL, DIMENSION(:), INTENT(IN) :: PLAI ! Leaf area Index
25 REAL, DIMENSION(:,:), INTENT(IN) :: PVEGTYPE ! type of vegetation
26 LOGICAL, INTENT(IN) :: OAGRI_TO_GRASS
27 !
28 REAL, DIMENSION(SIZE(PLAI)) :: PGREEN ! greeness fraction
29 !
30 END FUNCTION green_from_lai_1d
31 !
32 !
33  FUNCTION green_from_lai_2d(PLAI,PVEGTYPE,OAGRI_TO_GRASS) RESULT(PGREEN)
34 !
35 REAL, DIMENSION(:,:), INTENT(IN) :: PLAI ! Leaf area Index
36 REAL, DIMENSION(:,:,:), INTENT(IN) :: PVEGTYPE ! type of vegetation
37 LOGICAL, INTENT(IN) :: OAGRI_TO_GRASS
38 !
39 REAL, DIMENSION(SIZE(PLAI,1),SIZE(PLAI,2))::PGREEN ! greeness fraction
40 !
41 END FUNCTION green_from_lai_2d
42 !
43 
44  FUNCTION green_from_lai_vegtype_1d(PLAI,OAGRI_TO_GRASS) RESULT(PGREEN)
45 !
46 REAL, DIMENSION(:), INTENT(IN) :: PLAI ! Leaf area Index for each vegtype
47 LOGICAL, INTENT(IN) :: OAGRI_TO_GRASS
48 !
49 REAL, DIMENSION(SIZE(PLAI)) :: PGREEN ! greeness fraction
50 !
51 END FUNCTION green_from_lai_vegtype_1d
52 !
53 END INTERFACE
54 !
55 END MODULE modi_green_from_lai
56 !
57 ! ####################################################
58  FUNCTION green_from_lai_0d(PLAI,PVEGTYPE,OAGRI_TO_GRASS) RESULT(PGREEN)
59 ! ####################################################
60 !!
61 !! PURPOSE
62 !! -------
63 !
64 ! Calculates coverage of soil by vegetation from leaf
65 ! area index and type of vegetation
66 ! (most of types; forest and vineyards; grassland)
67 !
68 !!** METHOD
69 !! ------
70 !!
71 !! EXTERNAL
72 !! --------
73 !! none
74 !!
75 !! IMPLICIT ARGUMENTS
76 !! ------------------
77 !!
78 !! none
79 !!
80 !! REFERENCE
81 !! ---------
82 !!
83 !!
84 !! AUTHOR
85 !! ------
86 !!
87 !! V. Masson and A. Boone * Meteo-France *
88 !!
89 !! MODIFICATIONS
90 !! -------------
91 !! Original 25/03/99
92 !!
93 !! R. Alkama 05/2012 : Add 7 new vegtype (19 rather than 12)
94 !! B. Decharme 05/2013 new param for equatorial forest
95 !-------------------------------------------------------------------------------
96 !
97 !* 0. DECLARATIONS
98 ! ------------
99 !
100 USE modd_data_cover_par, ONLY : nvt_no, nvt_rock, nvt_snow, nvt_park, &
101  nvt_tebd, nvt_bone, nvt_trbe, nvt_trbd, &
102  nvt_tebe, nvt_tene, nvt_bobd, nvt_bond, &
103  nvt_shrb, nvt_c3, nvt_c4, nvt_irr, &
104  nvt_gras, nvt_bogr, nvt_trog
105 !
106 USE modd_reprod_oper, ONLY : xeverg_veg
107 !
108 USE yomhook ,ONLY : lhook, dr_hook
109 USE parkind1 ,ONLY : jprb
110 !
111 IMPLICIT NONE
112 !
113 !* 0.1 declarations of arguments
114 !
115 REAL, INTENT(IN) :: PLAI ! Leaf area Index
116 REAL, DIMENSION(:), INTENT(IN) :: PVEGTYPE ! type of vegetation
117 LOGICAL, INTENT(IN) :: OAGRI_TO_GRASS
118 !
119 REAL :: PGREEN ! greeness fraction
120 !
121 !* 0.2 declarations of local variables
122 !
123 REAL :: ZLAI, ZAGRI
124 REAL(KIND=JPRB) :: ZHOOK_HANDLE
125 !-----------------------------------------------------------------
126 IF (lhook) CALL dr_hook('MODI_GREEN_FROM_LAI:GREEN_FROM_LAI_0D',0,zhook_handle)
127 !
128 zlai = plai
129 IF ( pvegtype(nvt_no ) + pvegtype(nvt_rock)< 1.) THEN
130  zlai = plai / (1.-pvegtype(nvt_no)-pvegtype(nvt_rock))
131 END IF
132 !
133 zagri=(1. - exp( -0.6 * zlai ))
134 IF(oagri_to_grass)zagri=min(zagri,0.95)
135 !
136 pgreen= zagri *(pvegtype(nvt_c4 ) + &! C4 crops
137  pvegtype(nvt_irr ) + &! irrigated crops
138  pvegtype(nvt_c3 ) ) &! C3 crops
139  + min(1. - exp( -0.5 * zlai ),0.95) &
140  *(pvegtype(nvt_trbd) + &! tropical broadleaf deciduous
141  pvegtype(nvt_tebe) + &! temperate broadleaf evergreen
142  pvegtype(nvt_tebd) + &! temperate broadleaf cold-deciduous (summergreen)
143  pvegtype(nvt_tene) + &! temperate needleleaf evergreen
144  pvegtype(nvt_bobd) + &! boreal broadleaf cold-deciduous (summergreen)
145  pvegtype(nvt_bone) + &! boreal needleleaf evergreen
146  pvegtype(nvt_bone) + &! boreal needleleaf cold-deciduous (summergreen)
147  pvegtype(nvt_shrb) ) &! shrub
148  + xeverg_veg * pvegtype(nvt_trbe) &! tropical broadleaf evergreen
149  + min(1. - exp( -0.6 * zlai ),0.95) &
150  *(pvegtype(nvt_gras) + &! grassland
151  pvegtype(nvt_bogr) + &! Boreal grassland
152  pvegtype(nvt_trog) + &! tropical grassland
153  pvegtype(nvt_park) ) &! irr. parks
154  + 0. * pvegtype(nvt_no ) &! no vegetation (smooth)
155  + 0. * pvegtype(nvt_snow) &! no vegetation (snow)
156  + 0. * pvegtype(nvt_rock) ! no vegetation (rocks)
157 !
158 IF (lhook) CALL dr_hook('MODI_GREEN_FROM_LAI:GREEN_FROM_LAI_0D',1,zhook_handle)
159 !-----------------------------------------------------------------
160 !
161 END FUNCTION green_from_lai_0d
162 !
163 ! ####################################################
164  FUNCTION green_from_lai_1d(PLAI,PVEGTYPE,OAGRI_TO_GRASS) RESULT(PGREEN)
165 ! ####################################################
166 !!
167 !! PURPOSE
168 !! -------
169 !
170 ! Calculates coverage of soil by vegetation from leaf
171 ! area index and type of vegetation
172 ! (most of types; forest and vineyards; grassland)
173 !
174 !!** METHOD
175 !! ------
176 !!
177 !! EXTERNAL
178 !! --------
179 !! none
180 !!
181 !! IMPLICIT ARGUMENTS
182 !! ------------------
183 !!
184 !! none
185 !!
186 !! REFERENCE
187 !! ---------
188 !!
189 !!
190 !! AUTHOR
191 !! ------
192 !!
193 !! V. Masson and A. Boone * Meteo-France *
194 !!
195 !! MODIFICATIONS
196 !! -------------
197 !! Original 25/03/99
198 !! B. Decharme 05/2013 new param for equatorial forest
199 !!
200 !-------------------------------------------------------------------------------
201 !
202 !* 0. DECLARATIONS
203 ! ------------
204 !
205 USE modd_data_cover_par, ONLY : nvt_no, nvt_rock, nvt_snow, nvt_park, &
206  nvt_tebd, nvt_bone, nvt_trbe, nvt_trbd, &
207  nvt_tebe, nvt_tene, nvt_bobd, nvt_bond, &
208  nvt_shrb, nvt_c3, nvt_c4, nvt_irr, &
209  nvt_gras, nvt_bogr, nvt_trog, nvt_c3w, &
210  nvt_c3s, nvt_fltr, nvt_flgr
211 !
212 USE modd_reprod_oper, ONLY : xeverg_veg
213 !
214 USE yomhook ,ONLY : lhook, dr_hook
215 USE parkind1 ,ONLY : jprb
216 !
217 IMPLICIT NONE
218 !
219 !* 0.1 declarations of arguments
220 !
221 REAL, DIMENSION(:), INTENT(IN) :: PLAI ! Leaf area Index
222 REAL, DIMENSION(:,:), INTENT(IN) :: PVEGTYPE ! type of vegetation
223 LOGICAL, INTENT(IN) :: OAGRI_TO_GRASS
224 !
225 REAL, DIMENSION(SIZE(PLAI)) :: PGREEN ! greeness fraction
226 !
227 !* 0.2 declarations of local variables
228 !
229 REAL, DIMENSION(SIZE(PLAI)) :: ZLAI, ZAGRI
230 REAL :: ZSUM1, ZSUM2, ZSUM3
231 INTEGER :: JJ
232 REAL(KIND=JPRB) :: ZHOOK_HANDLE
233 !-----------------------------------------------------------------
234 IF (lhook) CALL dr_hook('MODI_GREEN_FROM_LAI:GREEN_FROM_LAI_1D',0,zhook_handle)
235 !
236 zlai(:) = plai(:)
237 WHERE ( pvegtype(:,nvt_no ) + pvegtype(:,nvt_rock) + pvegtype(:,nvt_snow) < 1.)
238  zlai(:) = plai(:) / (1.-pvegtype(:,nvt_no)-pvegtype(:,nvt_rock)-pvegtype(:,nvt_snow))
239 END WHERE
240 !
241 zagri(:)=(1. - exp( -0.6 * zlai(:) ))
242 IF(oagri_to_grass)zagri(:)=min(zagri(:),0.95)
243 !
244 DO jj = 1,SIZE(pgreen)
245  !
246  zsum1 = pvegtype(jj,nvt_c4)
247  IF (nvt_c3/=0 .AND. nvt_irr/=0) THEN
248  zsum1 = zsum1 + pvegtype(jj,nvt_c3) + pvegtype(jj,nvt_irr)
249  ELSEIF (nvt_c3w/=0 .AND. nvt_c3s/=0) THEN
250  zsum1 = zsum1 + pvegtype(jj,nvt_c3w) + pvegtype(jj,nvt_c3s)
251  ENDIF
252  !
253  zsum2 = pvegtype(jj,nvt_trbd) + pvegtype(jj,nvt_tebe) + pvegtype(jj,nvt_tebd) + &
254  pvegtype(jj,nvt_tene) + pvegtype(jj,nvt_bobd) + pvegtype(jj,nvt_bone) + &
255  pvegtype(jj,nvt_bone) + pvegtype(jj,nvt_shrb)
256  IF (nvt_fltr/=0) zsum2 = zsum2 + pvegtype(jj,nvt_fltr)
257  !
258  zsum3 = pvegtype(jj,nvt_gras) + pvegtype(jj,nvt_bogr) + pvegtype(jj,nvt_trog)
259  IF (nvt_park/=0) THEN
260  zsum3 = zsum3 + pvegtype(jj,nvt_park)
261  ELSEIF (nvt_flgr/=0) THEN
262  zsum3 = zsum3 + pvegtype(jj,nvt_flgr)
263  ENDIF
264  !
265  pgreen(jj)= zagri(jj) * zsum1 &
266  + min(1. - exp( -0.5 * zlai(jj) ),0.95) * zsum2 &
267  + xeverg_veg * pvegtype(jj,nvt_trbe) &! tropical broadleaf evergreen
268  + min(1. - exp( -0.6 * zlai(jj) ),0.95) * zsum3 &
269  + 0. * pvegtype(jj,nvt_no ) &! no vegetation (smooth)
270  + 0. * pvegtype(jj,nvt_snow) &! no vegetation (snow)
271  + 0. * pvegtype(jj,nvt_rock) ! no vegetation (rocks)
272  !
273 ENDDO
274 !
275 IF (lhook) CALL dr_hook('MODI_GREEN_FROM_LAI:GREEN_FROM_LAI_1D',1,zhook_handle)
276 !-----------------------------------------------------------------
277 !
278 END FUNCTION green_from_lai_1d
279 !
280 ! ####################################################
281  FUNCTION green_from_lai_2d(PLAI,PVEGTYPE,OAGRI_TO_GRASS) RESULT(PGREEN)
282 ! ####################################################
283 !!
284 !! PURPOSE
285 !! -------
286 !
287 ! Calculates coverage of soil by vegetation from leaf
288 ! area index and type of vegetation
289 ! (most of types; forest and vineyards; grassland)
290 !
291 !!** METHOD
292 !! ------
293 !!
294 !! EXTERNAL
295 !! --------
296 !! none
297 !!
298 !! IMPLICIT ARGUMENTS
299 !! ------------------
300 !!
301 !! none
302 !!
303 !! REFERENCE
304 !! ---------
305 !!
306 !!
307 !! AUTHOR
308 !! ------
309 !!
310 !! V. Masson and A. Boone * Meteo-France *
311 !!
312 !! MODIFICATIONS
313 !! -------------
314 !! Original 25/03/99
315 !!
316 !-------------------------------------------------------------------------------
317 !
318 !* 0. DECLARATIONS
319 ! ------------
320 !
321 USE modd_data_cover_par, ONLY : nvt_no, nvt_rock, nvt_snow, nvt_park, &
322  nvt_tebd, nvt_bone, nvt_trbe, nvt_trbd, &
323  nvt_tebe, nvt_tene, nvt_bobd, nvt_bond, &
324  nvt_shrb, nvt_c3, nvt_c4, nvt_irr, &
325  nvt_gras, nvt_bogr, nvt_trog, nvt_c3w, &
326  nvt_c3s, nvt_fltr, nvt_flgr
327 USE modd_surf_par, ONLY : xundef
328 !
329 USE modd_reprod_oper, ONLY : xeverg_veg
330 !
331 USE yomhook ,ONLY : lhook, dr_hook
332 USE parkind1 ,ONLY : jprb
333 !
334 IMPLICIT NONE
335 !
336 !* 0.1 declarations of arguments
337 !
338 REAL, DIMENSION(:,:), INTENT(IN) :: PLAI ! Leaf area Index
339 REAL, DIMENSION(:,:,:), INTENT(IN) :: PVEGTYPE ! type of vegetation
340 LOGICAL, INTENT(IN) :: OAGRI_TO_GRASS
341 !
342 REAL, DIMENSION(SIZE(PLAI,1),SIZE(PLAI,2))::PGREEN ! greeness fraction
343 !
344 !* 0.2 declarations of local variables
345 !
346 REAL, DIMENSION(SIZE(PLAI,1),SIZE(PLAI,2)) :: ZLAI, ZAGRI
347 REAL, DIMENSION(SIZE(PLAI,2)) :: ZSUM1, ZSUM2, ZSUM3
348 INTEGER :: JJ
349 REAL(KIND=JPRB) :: ZHOOK_HANDLE
350 !-----------------------------------------------------------------
351 IF (lhook) CALL dr_hook('MODI_GREEN_FROM_LAI:GREEN_FROM_LAI_2D',0,zhook_handle)
352 zlai(:,:) = plai(:,:)
353 WHERE ( pvegtype(:,:,nvt_no ) + pvegtype(:,:,nvt_rock) + pvegtype(:,:,nvt_snow) < 1.)
354  zlai(:,:) = plai(:,:) / (1.-pvegtype(:,:,nvt_no)-pvegtype(:,:,nvt_rock)-pvegtype(:,:,nvt_snow))
355 END WHERE
356 !
357 pgreen(:,:) = xundef
358 zagri(:,:) = xundef
359 !
360 WHERE (plai(:,:) /= xundef)
361  zagri(:,:)=(1. - exp( -0.6 * zlai(:,:) ))
362 ENDWHERE
363 IF(oagri_to_grass)zagri(:,:)=min(zagri(:,:),0.95)
364 !
365 !
366 DO jj = 1,SIZE(pgreen)
367  !
368  zsum1(:) = pvegtype(jj,:,nvt_c4)
369  IF (nvt_c3/=0 .AND. nvt_irr/=0) THEN
370  zsum1(:) = zsum1(:) + pvegtype(jj,:,nvt_c3) + pvegtype(jj,:,nvt_irr)
371  ELSEIF (nvt_c3w/=0 .AND. nvt_c3s/=0) THEN
372  zsum1(:) = zsum1(:) + pvegtype(jj,:,nvt_c3w) + pvegtype(jj,:,nvt_c3s)
373  ENDIF
374  !
375  zsum2(:) = pvegtype(jj,:,nvt_trbd) + pvegtype(jj,:,nvt_tebe) + pvegtype(jj,:,nvt_tebd) + &
376  pvegtype(jj,:,nvt_tene) + pvegtype(jj,:,nvt_bobd) + pvegtype(jj,:,nvt_bone) + &
377  pvegtype(jj,:,nvt_bone) + pvegtype(jj,:,nvt_shrb)
378  IF (nvt_fltr/=0) zsum2(:) = zsum2(:) + pvegtype(jj,:,nvt_fltr)
379  !
380  zsum3(:) = pvegtype(jj,:,nvt_gras) + pvegtype(jj,:,nvt_bogr) + pvegtype(jj,:,nvt_trog)
381  IF (nvt_park/=0) THEN
382  zsum3(:) = zsum3(:) + pvegtype(jj,:,nvt_park)
383  ELSEIF (nvt_flgr/=0) THEN
384  zsum3(:) = zsum3(:) + pvegtype(jj,:,nvt_flgr)
385  ENDIF
386  !
387  WHERE (plai(jj,:) /= xundef)
388  !
389  pgreen(jj,:)= zagri(jj,:) * zsum1(:) &
390  + min((1. - exp( -0.5 * zlai(jj,:) )),0.95) * zsum2 &
391  + xeverg_veg * pvegtype(jj,:,nvt_trbe) &! tropical broadleaf evergreen
392  + min((1. - exp( -0.6 * zlai(jj,:) )),0.95) * zsum3 &
393  + 0. * pvegtype(jj,:,nvt_no ) &! no vegetation (smooth)
394  + 0. * pvegtype(jj,:,nvt_snow) &! no vegetation (snow)
395  + 0. * pvegtype(jj,:,nvt_rock) ! no vegetation (rocks)
396  !
397  END WHERE
398  !
399 ENDDO
400 !
401 IF (lhook) CALL dr_hook('MODI_GREEN_FROM_LAI:GREEN_FROM_LAI_2D',1,zhook_handle)
402 !
403 !-----------------------------------------------------------------
404 !
405 END FUNCTION green_from_lai_2d
406 !
407 !
408 !
409 ! ####################################################
410  FUNCTION green_from_lai_vegtype_1d(PLAI,OAGRI_TO_GRASS) RESULT(PGREEN)
411 ! ####################################################
412 !!
413 !! PURPOSE
414 !! -------
415 !
416 ! Calculates coverage of soil by vegetation from leaf
417 ! area index and type of vegetation for each vegetation patch
418 ! (most of types; forest and vineyards; grassland)
419 !
420 !!** METHOD
421 !! ------
422 !!
423 !! EXTERNAL
424 !! --------
425 !! none
426 !!
427 !! IMPLICIT ARGUMENTS
428 !! ------------------
429 !!
430 !! none
431 !!
432 !! REFERENCE
433 !! ---------
434 !!
435 !!
436 !! AUTHOR
437 !! ------
438 !!
439 !! F.Solmon/V.Masson
440 !!
441 !! MODIFICATIONS
442 !! -------------
443 !! Original 25/03/99
444 !!
445 !-------------------------------------------------------------------------------
446 !
447 !* 0. DECLARATIONS
448 ! ------------
449 !
450 USE modd_data_cover_par, ONLY : nvt_no, nvt_rock, nvt_snow, nvt_park, &
451  nvt_tebd, nvt_bone, nvt_trbe, nvt_trbd, &
452  nvt_tebe, nvt_tene, nvt_bobd, nvt_bond, &
453  nvt_shrb, nvt_c3, nvt_c4, nvt_irr, &
454  nvt_gras, nvt_bogr, nvt_trog, nvt_c3w, &
455  nvt_c3s, nvt_fltr, nvt_flgr
456 !
457 USE modd_surf_par, ONLY : xundef
458 !
459 USE modd_reprod_oper, ONLY : xeverg_veg
460 !
461 USE yomhook ,ONLY : lhook, dr_hook
462 USE parkind1 ,ONLY : jprb
463 !
464 IMPLICIT NONE
465 !
466 !* 0.1 declarations of arguments
467 !
468 REAL, DIMENSION(:), INTENT(IN) :: PLAI ! Leaf area Index
469 LOGICAL, INTENT(IN) :: OAGRI_TO_GRASS
470 !
471 REAL, DIMENSION(SIZE(PLAI)) :: PGREEN ! greeness fraction
472 !
473 !* 0.2 declarations of local variables
474 !
475 REAL(KIND=JPRB) :: ZHOOK_HANDLE
476 !-----------------------------------------------------------------
477 IF (lhook) CALL dr_hook('MODI_GREEN_FROM_LAI:GREEN_FROM_LAI_VEGTYPE_1D',0,zhook_handle)
478 pgreen(:) = xundef
479 !
480 IF(oagri_to_grass)THEN
481  IF (plai(nvt_c4 )/=xundef) pgreen(nvt_c4 )= min(1. - exp( -0.6 * plai(nvt_c4 ) ),0.95)
482  IF (nvt_irr>0 .AND. nvt_c3>0) THEN
483  IF (plai(nvt_irr )/=xundef) pgreen(nvt_irr )= min(1. - exp( -0.6 * plai(nvt_irr ) ),0.95)
484  IF (plai(nvt_c3 )/=xundef) pgreen(nvt_c3 )= min(1. - exp( -0.6 * plai(nvt_c3 ) ),0.95)
485  ELSEIF (nvt_c3w>0 .AND. nvt_c3s>0) THEN
486  IF (plai(nvt_c3w )/=xundef) pgreen(nvt_c3w )= min(1. - exp( -0.6 * plai(nvt_c3w ) ),0.95)
487  IF (plai(nvt_c3s )/=xundef) pgreen(nvt_c3s )= min(1. - exp( -0.6 * plai(nvt_c3s ) ),0.95)
488  ENDIF
489 ELSE
490  IF (plai(nvt_c4 )/=xundef) pgreen(nvt_c4 )= 1. - exp( -0.6 * plai(nvt_c4 ) )
491  IF (nvt_irr>0 .AND. nvt_c3>0) THEN
492  IF (plai(nvt_irr )/=xundef) pgreen(nvt_irr )= 1. - exp( -0.6 * plai(nvt_irr ) )
493  IF (plai(nvt_c3 )/=xundef) pgreen(nvt_c3 )= 1. - exp( -0.6 * plai(nvt_c3 ) )
494  ELSEIF (nvt_c3w>0 .AND. nvt_c3s>0) THEN
495  IF (plai(nvt_c3w )/=xundef) pgreen(nvt_c3w )= 1. - exp( -0.6 * plai(nvt_c3w ) )
496  IF (plai(nvt_c3s )/=xundef) pgreen(nvt_c3s )= 1. - exp( -0.6 * plai(nvt_c3s ) )
497  ENDIF
498 ENDIF
499 !
500 IF (plai(nvt_tebd)/=xundef) pgreen(nvt_tebd)= min(1. - exp( -0.5 * plai(nvt_tebd) ),0.95)
501 IF (plai(nvt_bone)/=xundef) pgreen(nvt_bone)= min(1. - exp( -0.5 * plai(nvt_bone) ),0.95)
502 IF (plai(nvt_trbd)/=xundef) pgreen(nvt_trbd)= min(1. - exp( -0.5 * plai(nvt_trbd) ),0.95)
503 IF (plai(nvt_tebe)/=xundef) pgreen(nvt_tebe)= min(1. - exp( -0.5 * plai(nvt_tebe) ),0.95)
504 IF (plai(nvt_tene)/=xundef) pgreen(nvt_tene)= min(1. - exp( -0.5 * plai(nvt_tene) ),0.95)
505 IF (plai(nvt_bobd)/=xundef) pgreen(nvt_bobd)= min(1. - exp( -0.5 * plai(nvt_bobd) ),0.95)
506 IF (plai(nvt_bond)/=xundef) pgreen(nvt_bond)= min(1. - exp( -0.5 * plai(nvt_bond) ),0.95)
507 IF (plai(nvt_shrb)/=xundef) pgreen(nvt_shrb)= min(1. - exp( -0.5 * plai(nvt_shrb) ),0.95)
508 !
509 IF (nvt_fltr>0) THEN
510  IF (plai(nvt_fltr)/=xundef) pgreen(nvt_fltr)= min(1. - exp( -0.5 * plai(nvt_fltr) ),0.95)
511 ENDIF
512 !
513 IF (plai(nvt_trbe)/=xundef) pgreen(nvt_trbe)= xeverg_veg
514 !
515 IF (plai(nvt_gras)/=xundef) pgreen(nvt_gras)= min(1. - exp( -0.6 * plai(nvt_gras) ),0.95)
516 IF (plai(nvt_bogr)/=xundef) pgreen(nvt_bogr)= min(1. - exp( -0.6 * plai(nvt_bogr) ),0.95)
517 IF (plai(nvt_trog)/=xundef) pgreen(nvt_trog)= min(1. - exp( -0.6 * plai(nvt_trog) ),0.95)
518 IF (nvt_park>0) THEN
519  IF (plai(nvt_park)/=xundef) pgreen(nvt_park)= min(1. - exp( -0.6 * plai(nvt_park) ),0.95)
520 ELSEIF (nvt_flgr>0) THEN
521  IF (plai(nvt_flgr)/=xundef) pgreen(nvt_flgr)= min(1. - exp( -0.6 * plai(nvt_flgr) ),0.95)
522 ENDIF
523 !
524 pgreen(nvt_no )= 0.
525 pgreen(nvt_snow)= 0.
526 pgreen(nvt_rock)= 0.
527 IF (lhook) CALL dr_hook('MODI_GREEN_FROM_LAI:GREEN_FROM_LAI_VEGTYPE_1D',1,zhook_handle)
528 
529 !
530 END FUNCTION green_from_lai_vegtype_1d
531 !
532 !--------------------------------------------
533 !
real function, dimension(size(plai, 1), size(plai, 2)) green_from_lai_2d(PLAI, PVEGTYPE, OAGRI_TO_GRASS)
real function, dimension(size(plai)) green_from_lai_1d(PLAI, PVEGTYPE, OAGRI_TO_GRASS)
real, parameter xundef
integer, parameter jprb
Definition: parkind1.F90:32
real function green_from_lai_0d(PLAI, PVEGTYPE, OAGRI_TO_GRASS)
logical lhook
Definition: yomhook.F90:15
real function, dimension(size(plai)) green_from_lai_vegtype_1d(PLAI, OAGRI_TO_GRASS)