SURFEX v7.3
General documentation of Surfex
|
00001 !####################### 00002 MODULE MODI_GREEN_FROM_LAI 00003 !####################### 00004 ! 00005 INTERFACE GREEN_FROM_LAI 00006 ! 00007 FUNCTION GREEN_FROM_LAI_0D(PLAI,PVEGTYPE) RESULT(PGREEN) 00008 ! 00009 REAL, INTENT(IN) :: PLAI ! Leaf area Index 00010 REAL, DIMENSION(:), INTENT(IN) :: PVEGTYPE ! type of vegetation 00011 ! 00012 REAL :: PGREEN ! greeness fraction 00013 ! 00014 END FUNCTION GREEN_FROM_LAI_0D 00015 ! 00016 ! 00017 FUNCTION GREEN_FROM_LAI_1D(PLAI,PVEGTYPE) RESULT(PGREEN) 00018 ! 00019 REAL, DIMENSION(:), INTENT(IN) :: PLAI ! Leaf area Index 00020 REAL, DIMENSION(:,:), INTENT(IN) :: PVEGTYPE ! type of vegetation 00021 ! 00022 REAL, DIMENSION(SIZE(PLAI)) :: PGREEN ! greeness fraction 00023 ! 00024 END FUNCTION GREEN_FROM_LAI_1D 00025 ! 00026 ! 00027 FUNCTION GREEN_FROM_LAI_2D(PLAI,PVEGTYPE) RESULT(PGREEN) 00028 ! 00029 REAL, DIMENSION(:,:), INTENT(IN) :: PLAI ! Leaf area Index 00030 REAL, DIMENSION(:,:,:), INTENT(IN) :: PVEGTYPE ! type of vegetation 00031 ! 00032 REAL, DIMENSION(SIZE(PLAI,1),SIZE(PLAI,2))::PGREEN ! greeness fraction 00033 ! 00034 END FUNCTION GREEN_FROM_LAI_2D 00035 ! 00036 00037 FUNCTION GREEN_FROM_LAI_PATCH_1D(PLAI,PVEGTYPE) RESULT(PGREEN) 00038 ! 00039 REAL, DIMENSION(:), INTENT(IN) :: PLAI ! Leaf area Index for each vegtype 00040 REAL, DIMENSION(:), INTENT(IN) :: PVEGTYPE ! 00041 ! 00042 REAL, DIMENSION(SIZE(PLAI)) :: PGREEN ! greeness fraction 00043 ! 00044 END FUNCTION GREEN_FROM_LAI_PATCH_1D 00045 ! 00046 END INTERFACE 00047 ! 00048 END MODULE MODI_GREEN_FROM_LAI 00049 ! 00050 ! #################################################### 00051 FUNCTION GREEN_FROM_LAI_0D(PLAI,PVEGTYPE) RESULT(PGREEN) 00052 ! #################################################### 00053 !! 00054 !! PURPOSE 00055 !! ------- 00056 ! 00057 ! Calculates coverage of soil by vegetation from leaf 00058 ! area index and type of vegetation 00059 ! (most of types; forest and vineyards; grassland) 00060 ! 00061 !!** METHOD 00062 !! ------ 00063 !! 00064 !! EXTERNAL 00065 !! -------- 00066 !! none 00067 !! 00068 !! IMPLICIT ARGUMENTS 00069 !! ------------------ 00070 !! 00071 !! none 00072 !! 00073 !! REFERENCE 00074 !! --------- 00075 !! 00076 !! 00077 !! AUTHOR 00078 !! ------ 00079 !! 00080 !! V. Masson and A. Boone * Meteo-France * 00081 !! 00082 !! MODIFICATIONS 00083 !! ------------- 00084 !! Original 25/03/99 00085 !! 00086 !------------------------------------------------------------------------------- 00087 ! 00088 !* 0. DECLARATIONS 00089 ! ------------ 00090 ! 00091 USE MODD_DATA_COVER_PAR, ONLY : NVT_NO, NVT_ROCK, NVT_SNOW, & 00092 NVT_C3, NVT_C4, NVT_IRR, & 00093 NVT_CONI, NVT_TREE, NVT_EVER, & 00094 NVT_TROG, NVT_PARK, NVT_GRAS 00095 ! 00096 ! 00097 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00098 USE PARKIND1 ,ONLY : JPRB 00099 ! 00100 IMPLICIT NONE 00101 ! 00102 !* 0.1 declarations of arguments 00103 ! 00104 REAL, INTENT(IN) :: PLAI ! Leaf area Index 00105 REAL, DIMENSION(:), INTENT(IN) :: PVEGTYPE ! type of vegetation 00106 ! 00107 REAL :: PGREEN ! greeness fraction 00108 ! 00109 !* 0.2 declarations of local variables 00110 ! 00111 REAL :: ZLAI 00112 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00113 !----------------------------------------------------------------- 00114 IF (LHOOK) CALL DR_HOOK('MODI_GREEN_FROM_LAI:GREEN_FROM_LAI_0D',0,ZHOOK_HANDLE) 00115 ZLAI = PLAI 00116 IF ( PVEGTYPE(NVT_NO ) + PVEGTYPE(NVT_ROCK)< 1.) THEN 00117 ZLAI = PLAI / (1.-PVEGTYPE(NVT_NO)-PVEGTYPE(NVT_ROCK)) 00118 END IF 00119 ! 00120 PGREEN=(1. - EXP( -0.6 * ZLAI ))*(PVEGTYPE(NVT_C4 ) + &! C4 crops 00121 PVEGTYPE(NVT_IRR ) + &! irrigated crops 00122 PVEGTYPE(NVT_C3 ) ) &! C3 crops 00123 + MIN(1. - EXP( -0.5 * ZLAI ),0.95) & 00124 *(PVEGTYPE(NVT_TREE) + &! brodleaf forest 00125 PVEGTYPE(NVT_CONI) ) &! coniferous forest 00126 + 0.99 * PVEGTYPE(NVT_EVER) &! equatorial forest 00127 + MIN(1. - EXP( -0.6 * ZLAI ),0.95) & 00128 *(PVEGTYPE(NVT_GRAS) + &! grassland 00129 PVEGTYPE(NVT_TROG) + &! tropical grassland 00130 PVEGTYPE(NVT_PARK) ) &! irr. parks 00131 + 0. * PVEGTYPE(NVT_NO ) &! no vegetation (smooth) 00132 + 0. * PVEGTYPE(NVT_SNOW) &! no vegetation (snow) 00133 + 0. * PVEGTYPE(NVT_ROCK) ! no vegetation (rocks) 00134 IF (LHOOK) CALL DR_HOOK('MODI_GREEN_FROM_LAI:GREEN_FROM_LAI_0D',1,ZHOOK_HANDLE) 00135 !----------------------------------------------------------------- 00136 ! 00137 END FUNCTION GREEN_FROM_LAI_0D 00138 ! 00139 ! #################################################### 00140 FUNCTION GREEN_FROM_LAI_1D(PLAI,PVEGTYPE) RESULT(PGREEN) 00141 ! #################################################### 00142 !! 00143 !! PURPOSE 00144 !! ------- 00145 ! 00146 ! Calculates coverage of soil by vegetation from leaf 00147 ! area index and type of vegetation 00148 ! (most of types; forest and vineyards; grassland) 00149 ! 00150 !!** METHOD 00151 !! ------ 00152 !! 00153 !! EXTERNAL 00154 !! -------- 00155 !! none 00156 !! 00157 !! IMPLICIT ARGUMENTS 00158 !! ------------------ 00159 !! 00160 !! none 00161 !! 00162 !! REFERENCE 00163 !! --------- 00164 !! 00165 !! 00166 !! AUTHOR 00167 !! ------ 00168 !! 00169 !! V. Masson and A. Boone * Meteo-France * 00170 !! 00171 !! MODIFICATIONS 00172 !! ------------- 00173 !! Original 25/03/99 00174 !! 00175 !------------------------------------------------------------------------------- 00176 ! 00177 !* 0. DECLARATIONS 00178 ! ------------ 00179 ! 00180 USE MODD_DATA_COVER_PAR, ONLY : NVT_NO, NVT_ROCK, NVT_SNOW, & 00181 NVT_C3, NVT_C4, NVT_IRR, & 00182 NVT_CONI, NVT_TREE, NVT_EVER, & 00183 NVT_TROG, NVT_PARK, NVT_GRAS 00184 ! 00185 ! 00186 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00187 USE PARKIND1 ,ONLY : JPRB 00188 ! 00189 IMPLICIT NONE 00190 ! 00191 !* 0.1 declarations of arguments 00192 ! 00193 REAL, DIMENSION(:), INTENT(IN) :: PLAI ! Leaf area Index 00194 REAL, DIMENSION(:,:), INTENT(IN) :: PVEGTYPE ! type of vegetation 00195 ! 00196 REAL, DIMENSION(SIZE(PLAI)) :: PGREEN ! greeness fraction 00197 ! 00198 !* 0.2 declarations of local variables 00199 ! 00200 REAL, DIMENSION(SIZE(PLAI)) :: ZLAI 00201 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00202 !----------------------------------------------------------------- 00203 IF (LHOOK) CALL DR_HOOK('MODI_GREEN_FROM_LAI:GREEN_FROM_LAI_1D',0,ZHOOK_HANDLE) 00204 ZLAI(:) = PLAI(:) 00205 WHERE ( PVEGTYPE(:,NVT_NO ) + PVEGTYPE(:,NVT_ROCK) + PVEGTYPE(:,NVT_SNOW) < 1.) 00206 ZLAI(:) = PLAI(:) / (1.-PVEGTYPE(:,NVT_NO)-PVEGTYPE(:,NVT_ROCK)-PVEGTYPE(:,NVT_SNOW)) 00207 END WHERE 00208 ! 00209 PGREEN(:)=(1. - EXP( -0.6 * ZLAI(:) ))*(PVEGTYPE(:,NVT_C4 ) + &! C4 crops 00210 PVEGTYPE(:,NVT_IRR ) + &! irrigated crops 00211 PVEGTYPE(:,NVT_C3 ) ) &! C3 crops 00212 + MIN(1. - EXP( -0.5 * ZLAI(:) ),0.95) & 00213 *(PVEGTYPE(:,NVT_TREE) + &! broadleaf forest 00214 PVEGTYPE(:,NVT_CONI) ) &! coniferous forest 00215 + 0.99 * PVEGTYPE(:,NVT_EVER) &! equatorial forest 00216 + MIN(1. - EXP( -0.6 * ZLAI(:) ),0.95) & 00217 *(PVEGTYPE(:,NVT_GRAS) + &! grassland 00218 PVEGTYPE(:,NVT_TROG) + &! torp. grass 00219 PVEGTYPE(:,NVT_PARK) ) &! irr. parks 00220 + 0. * PVEGTYPE(:,NVT_NO ) &! no vegetation (smooth) 00221 + 0. * PVEGTYPE(:,NVT_SNOW) &! no vegetation (snow) 00222 + 0. * PVEGTYPE(:,NVT_ROCK) ! no vegetation (rocks) 00223 IF (LHOOK) CALL DR_HOOK('MODI_GREEN_FROM_LAI:GREEN_FROM_LAI_1D',1,ZHOOK_HANDLE) 00224 ! 00225 !----------------------------------------------------------------- 00226 ! 00227 END FUNCTION GREEN_FROM_LAI_1D 00228 ! 00229 ! #################################################### 00230 FUNCTION GREEN_FROM_LAI_2D(PLAI,PVEGTYPE) RESULT(PGREEN) 00231 ! #################################################### 00232 !! 00233 !! PURPOSE 00234 !! ------- 00235 ! 00236 ! Calculates coverage of soil by vegetation from leaf 00237 ! area index and type of vegetation 00238 ! (most of types; forest and vineyards; grassland) 00239 ! 00240 !!** METHOD 00241 !! ------ 00242 !! 00243 !! EXTERNAL 00244 !! -------- 00245 !! none 00246 !! 00247 !! IMPLICIT ARGUMENTS 00248 !! ------------------ 00249 !! 00250 !! none 00251 !! 00252 !! REFERENCE 00253 !! --------- 00254 !! 00255 !! 00256 !! AUTHOR 00257 !! ------ 00258 !! 00259 !! V. Masson and A. Boone * Meteo-France * 00260 !! 00261 !! MODIFICATIONS 00262 !! ------------- 00263 !! Original 25/03/99 00264 !! 00265 !------------------------------------------------------------------------------- 00266 ! 00267 !* 0. DECLARATIONS 00268 ! ------------ 00269 ! 00270 USE MODD_DATA_COVER_PAR, ONLY : NVT_NO, NVT_ROCK, NVT_SNOW, & 00271 NVT_C3, NVT_C4, NVT_IRR, & 00272 NVT_CONI, NVT_TREE, NVT_EVER, & 00273 NVT_TROG, NVT_PARK, NVT_GRAS 00274 USE MODD_SURF_PAR, ONLY : XUNDEF 00275 ! 00276 ! 00277 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00278 USE PARKIND1 ,ONLY : JPRB 00279 ! 00280 IMPLICIT NONE 00281 ! 00282 !* 0.1 declarations of arguments 00283 ! 00284 REAL, DIMENSION(:,:), INTENT(IN) :: PLAI ! Leaf area Index 00285 REAL, DIMENSION(:,:,:), INTENT(IN) :: PVEGTYPE ! type of vegetation 00286 ! 00287 REAL, DIMENSION(SIZE(PLAI,1),SIZE(PLAI,2))::PGREEN ! greeness fraction 00288 ! 00289 !* 0.2 declarations of local variables 00290 ! 00291 REAL, DIMENSION(SIZE(PLAI,1),SIZE(PLAI,2)) :: ZLAI 00292 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00293 !----------------------------------------------------------------- 00294 IF (LHOOK) CALL DR_HOOK('MODI_GREEN_FROM_LAI:GREEN_FROM_LAI_2D',0,ZHOOK_HANDLE) 00295 ZLAI(:,:) = PLAI(:,:) 00296 WHERE ( PVEGTYPE(:,:,NVT_NO ) + PVEGTYPE(:,:,NVT_ROCK) + PVEGTYPE(:,:,NVT_SNOW) < 1.) 00297 ZLAI(:,:) = PLAI(:,:) / (1.-PVEGTYPE(:,:,NVT_NO)-PVEGTYPE(:,:,NVT_ROCK)-PVEGTYPE(:,:,NVT_SNOW)) 00298 END WHERE 00299 ! 00300 PGREEN(:,:) = XUNDEF 00301 ! 00302 WHERE (PLAI(:,:) /= XUNDEF) 00303 PGREEN(:,:)=(1. - EXP( -0.6 * ZLAI(:,:) ))*(PVEGTYPE(:,:,NVT_C4 ) + &! C4 crops 00304 PVEGTYPE(:,:,NVT_IRR ) + &! irrigated crops 00305 PVEGTYPE(:,:,NVT_C3 ) ) &! C3 crops 00306 + MIN((1. - EXP( -0.5 * ZLAI(:,:) )),0.95) & 00307 *(PVEGTYPE(:,:,NVT_TREE) + &! broadleaf forest 00308 PVEGTYPE(:,:,NVT_CONI) ) &! coniferous forest 00309 + 0.99 * PVEGTYPE(:,:,NVT_EVER) &! equatorial forest 00310 + MIN((1. - EXP( -0.6 * ZLAI(:,:) )),0.95) & 00311 *(PVEGTYPE(:,:,NVT_GRAS) + &! grassland 00312 PVEGTYPE(:,:,NVT_TROG) + &! trop grassland 00313 PVEGTYPE(:,:,NVT_PARK) ) &! irr. parks 00314 + 0. * PVEGTYPE(:,:,NVT_NO ) &! no vegetation (smooth) 00315 + 0. * PVEGTYPE(:,:,NVT_SNOW) &! no vegetation (snow) 00316 + 0. * PVEGTYPE(:,:,NVT_ROCK) ! no vegetation (rocks) 00317 END WHERE 00318 IF (LHOOK) CALL DR_HOOK('MODI_GREEN_FROM_LAI:GREEN_FROM_LAI_2D',1,ZHOOK_HANDLE) 00319 ! 00320 !----------------------------------------------------------------- 00321 ! 00322 END FUNCTION GREEN_FROM_LAI_2D 00323 ! 00324 ! 00325 ! 00326 ! #################################################### 00327 FUNCTION GREEN_FROM_LAI_PATCH_1D(PLAI,PVEGTYPE) RESULT(PGREEN) 00328 ! #################################################### 00329 !! 00330 !! PURPOSE 00331 !! ------- 00332 ! 00333 ! Calculates coverage of soil by vegetation from leaf 00334 ! area index and type of vegetation for each vegetation patch 00335 ! (most of types; forest and vineyards; grassland) 00336 ! 00337 !!** METHOD 00338 !! ------ 00339 !! 00340 !! EXTERNAL 00341 !! -------- 00342 !! none 00343 !! 00344 !! IMPLICIT ARGUMENTS 00345 !! ------------------ 00346 !! 00347 !! none 00348 !! 00349 !! REFERENCE 00350 !! --------- 00351 !! 00352 !! 00353 !! AUTHOR 00354 !! ------ 00355 !! 00356 !! F.Solmon/V.Masson 00357 !! 00358 !! MODIFICATIONS 00359 !! ------------- 00360 !! Original 25/03/99 00361 !! 00362 !------------------------------------------------------------------------------- 00363 ! 00364 !* 0. DECLARATIONS 00365 ! ------------ 00366 ! 00367 USE MODD_DATA_COVER_PAR, ONLY : NVT_NO, NVT_ROCK, NVT_SNOW, & 00368 NVT_C3, NVT_C4, NVT_IRR, & 00369 NVT_CONI, NVT_TREE, NVT_EVER, & 00370 NVT_TROG, NVT_PARK, NVT_GRAS 00371 USE MODD_SURF_PAR, ONLY : XUNDEF 00372 ! 00373 ! 00374 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00375 USE PARKIND1 ,ONLY : JPRB 00376 ! 00377 IMPLICIT NONE 00378 ! 00379 !* 0.1 declarations of arguments 00380 ! 00381 REAL, DIMENSION(:), INTENT(IN) :: PLAI ! Leaf area Index 00382 REAL, DIMENSION(:), INTENT(IN) :: PVEGTYPE ! type of vegetation 00383 ! 00384 REAL, DIMENSION(SIZE(PLAI)) :: PGREEN ! greeness fraction 00385 ! 00386 !* 0.2 declarations of local variables 00387 ! 00388 REAL, DIMENSION(SIZE(PLAI)) :: ZLAI 00389 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00390 !----------------------------------------------------------------- 00391 IF (LHOOK) CALL DR_HOOK('MODI_GREEN_FROM_LAI:GREEN_FROM_LAI_PATCH_1D',0,ZHOOK_HANDLE) 00392 ZLAI(:) = PLAI(:) 00393 PGREEN(:) = XUNDEF 00394 ! 00395 IF (PVEGTYPE(NVT_C4 )>0.) PGREEN(NVT_C4 )= 1. - EXP( -0.6 * ZLAI(NVT_C4 ) ) 00396 IF (PVEGTYPE(NVT_IRR )>0.) PGREEN(NVT_IRR )= 1. - EXP( -0.6 * ZLAI(NVT_IRR ) ) 00397 IF (PVEGTYPE(NVT_C3 )>0.) PGREEN(NVT_C3 )= 1. - EXP( -0.6 * ZLAI(NVT_C3 ) ) 00398 ! 00399 IF (PVEGTYPE(NVT_TREE)>0.) PGREEN(NVT_TREE)= MIN(1. - EXP( -0.5 * ZLAI(NVT_TREE) ),0.95) 00400 IF (PVEGTYPE(NVT_CONI)>0.) PGREEN(NVT_CONI)= MIN(1. - EXP( -0.5 * ZLAI(NVT_CONI) ),0.95) 00401 IF (PVEGTYPE(NVT_EVER)>0.) PGREEN(NVT_EVER)= 0.99 00402 ! 00403 IF (PVEGTYPE(NVT_GRAS)>0.) PGREEN(NVT_GRAS)= MIN(1. - EXP( -0.6 * ZLAI(NVT_GRAS) ),0.95) 00404 IF (PVEGTYPE(NVT_TROG)>0.) PGREEN(NVT_TROG)= MIN(1. - EXP( -0.6 * ZLAI(NVT_TROG) ),0.95) 00405 IF (PVEGTYPE(NVT_PARK)>0.) PGREEN(NVT_PARK)= MIN(1. - EXP( -0.6 * ZLAI(NVT_PARK) ),0.95) 00406 ! 00407 IF (PVEGTYPE(NVT_NO )>0.) PGREEN(NVT_NO )= 0. 00408 IF (PVEGTYPE(NVT_SNOW)>0.) PGREEN(NVT_SNOW)= 0. 00409 IF (PVEGTYPE(NVT_ROCK)>0.) PGREEN(NVT_ROCK)= 0. 00410 IF (LHOOK) CALL DR_HOOK('MODI_GREEN_FROM_LAI:GREEN_FROM_LAI_PATCH_1D',1,ZHOOK_HANDLE) 00411 00412 ! 00413 END FUNCTION GREEN_FROM_LAI_PATCH_1D 00414 ! 00415 !-------------------------------------------- 00416 !