SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/green_from_lai.F90
Go to the documentation of this file.
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 !