SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/veg_from_lai.F90
Go to the documentation of this file.
00001 !#######################
00002 MODULE MODI_VEG_FROM_LAI
00003 !#######################
00004 !
00005 INTERFACE VEG_FROM_LAI
00006 !
00007     FUNCTION VEG_FROM_LAI_0D(PLAI,PVEGTYPE) RESULT(PVEG)
00008 !
00009 REAL,                 INTENT(IN) :: PLAI         ! Leaf area Index
00010 REAL,   DIMENSION(:), INTENT(IN) :: PVEGTYPE     ! type of vegetation
00011 !
00012 REAL                             :: PVEG         ! vegetation fraction
00013 !
00014 END FUNCTION VEG_FROM_LAI_0D
00015 !
00016 !
00017     FUNCTION VEG_FROM_LAI_1D(PLAI,PVEGTYPE) RESULT(PVEG)
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))      :: PVEG         ! vegetation fraction
00023 !
00024 END FUNCTION VEG_FROM_LAI_1D
00025 !
00026 !
00027     FUNCTION VEG_FROM_LAI_2D(PLAI,PVEGTYPE) RESULT(PVEG)
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)) :: PVEG ! vegetation fraction
00033 !
00034 END FUNCTION VEG_FROM_LAI_2D
00035 !
00036 
00037     FUNCTION VEG_FROM_LAI_PATCH_1D(PLAI,PVEGTYPE) RESULT(PVEG)
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)) :: PVEG ! vegetation fraction
00043 !
00044 END FUNCTION VEG_FROM_LAI_PATCH_1D
00045 !
00046 END INTERFACE
00047 !
00048 END MODULE MODI_VEG_FROM_LAI
00049 !
00050 !   ####################################################
00051     FUNCTION VEG_FROM_LAI_0D(PLAI,PVEGTYPE) RESULT(PVEG)
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                             :: PVEG         ! vegetation 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_VEG_FROM_LAI:VEG_FROM_LAI_0D',0,ZHOOK_HANDLE)
00115 ZLAI = PLAI
00116 IF ( PVEGTYPE(NVT_NO  ) + PVEGTYPE(NVT_ROCK) + PVEGTYPE(NVT_SNOW)< 1.) THEN
00117   ZLAI = PLAI / (1.-PVEGTYPE(NVT_NO)-PVEGTYPE(NVT_ROCK)-PVEGTYPE(NVT_SNOW))
00118 END IF
00119 !
00120 PVEG = (1. - EXP( -0.6 * ZLAI ))*(PVEGTYPE(NVT_C4  ) +   &! C4 crops
00121                                     PVEGTYPE(NVT_IRR ) +   &! irrigated crops
00122                                     PVEGTYPE(NVT_C3  )  )  &! C3 crops
00123        + 0.95                     *(PVEGTYPE(NVT_TREE) +   &! brodleaf forest
00124                                     PVEGTYPE(NVT_CONI)  )  &! coniferous forest
00125        + 0.99                     * PVEGTYPE(NVT_EVER)     &! equatorial forest
00126        + 0.95                     *(PVEGTYPE(NVT_GRAS) +   &! grassland
00127                                     PVEGTYPE(NVT_TROG) +   &! tropical grass
00128                                     PVEGTYPE(NVT_PARK)  )  &! irr. parks
00129        + 0.                       * PVEGTYPE(NVT_NO  )     &! no vegetation (smooth)
00130        + 0.                       * PVEGTYPE(NVT_SNOW)     &! no vegetation (snow)
00131        + 0.                       * PVEGTYPE(NVT_ROCK)      ! no vegetation (rocks)  
00132 IF (LHOOK) CALL DR_HOOK('MODI_VEG_FROM_LAI:VEG_FROM_LAI_0D',1,ZHOOK_HANDLE)
00133 !-----------------------------------------------------------------
00134 !
00135 END FUNCTION VEG_FROM_LAI_0D
00136 !
00137 !   ####################################################
00138     FUNCTION VEG_FROM_LAI_1D(PLAI,PVEGTYPE) RESULT(PVEG)
00139 !   ####################################################
00140 !!
00141 !!    PURPOSE
00142 !!    -------
00143 !
00144 !     Calculates coverage of soil by vegetation from leaf
00145 !    area index and type of vegetation
00146 !    (most of types; forest and vineyards; grassland)
00147 !              
00148 !!**  METHOD
00149 !!    ------
00150 !!
00151 !!    EXTERNAL
00152 !!    --------
00153 !!    none
00154 !!
00155 !!    IMPLICIT ARGUMENTS
00156 !!    ------------------
00157 !!      
00158 !!    none
00159 !!
00160 !!    REFERENCE
00161 !!    ---------
00162 !!
00163 !!      
00164 !!    AUTHOR
00165 !!    ------
00166 !!
00167 !!      V. Masson and A. Boone          * Meteo-France *
00168 !!
00169 !!    MODIFICATIONS
00170 !!    -------------
00171 !!      Original    25/03/99
00172 !!
00173 !-------------------------------------------------------------------------------
00174 !
00175 !*       0.     DECLARATIONS
00176 !               ------------
00177 !
00178 USE MODD_DATA_COVER_PAR, ONLY : NVT_NO, NVT_ROCK, NVT_SNOW,   &
00179                                   NVT_C3, NVT_C4, NVT_IRR,      &
00180                                   NVT_CONI, NVT_TREE, NVT_EVER, &
00181                                   NVT_TROG, NVT_PARK, NVT_GRAS  
00182 !
00183 !
00184 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00185 USE PARKIND1  ,ONLY : JPRB
00186 !
00187 IMPLICIT NONE
00188 !
00189 !*      0.1    declarations of arguments
00190 !
00191 REAL,   DIMENSION(:),   INTENT(IN) :: PLAI         ! Leaf area Index
00192 REAL,   DIMENSION(:,:), INTENT(IN) :: PVEGTYPE     ! type of vegetation
00193 !
00194 REAL,   DIMENSION(SIZE(PLAI))      :: PVEG         ! vegetation fraction
00195 !
00196 !*      0.2    declarations of local variables
00197 !
00198 REAL,   DIMENSION(SIZE(PLAI))      :: ZLAI
00199 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00200 !-----------------------------------------------------------------
00201 IF (LHOOK) CALL DR_HOOK('MODI_VEG_FROM_LAI:VEG_FROM_LAI_1D',0,ZHOOK_HANDLE)
00202 ZLAI(:) = PLAI(:)
00203 WHERE ( PVEGTYPE(:,NVT_NO  ) + PVEGTYPE(:,NVT_ROCK) + PVEGTYPE(:,NVT_SNOW) < 1.) 
00204   ZLAI(:) = PLAI(:) / (1.-PVEGTYPE(:,NVT_NO)-PVEGTYPE(:,NVT_ROCK)-PVEGTYPE(:,NVT_SNOW))
00205 END WHERE
00206 !
00207 PVEG(:) = (1. - EXP( -0.6 * ZLAI(:) ))*(PVEGTYPE(:,NVT_C4  ) +   &! C4 crops
00208                                           PVEGTYPE(:,NVT_IRR ) +   &! irrigated crops
00209                                           PVEGTYPE(:,NVT_C3  )  )  &! C3 crops
00210           + 0.95                        *(PVEGTYPE(:,NVT_TREE) +   &! broadleaf forest
00211                                           PVEGTYPE(:,NVT_CONI)  )  &! coniferous forest
00212           + 0.99                        * PVEGTYPE(:,NVT_EVER)     &! equatorial forest
00213           + 0.95                        *(PVEGTYPE(:,NVT_GRAS) +   &! grassland
00214                                           PVEGTYPE(:,NVT_TROG) +   &! trop. grass
00215                                           PVEGTYPE(:,NVT_PARK)  )  &! irr. parks
00216           + 0.                          * PVEGTYPE(:,NVT_NO  )     &! no vegetation (smooth)
00217           + 0.                          * PVEGTYPE(:,NVT_SNOW)     &! no vegetation (snow)
00218           + 0.                          * PVEGTYPE(:,NVT_ROCK)      ! no vegetation (rocks)  
00219 IF (LHOOK) CALL DR_HOOK('MODI_VEG_FROM_LAI:VEG_FROM_LAI_1D',1,ZHOOK_HANDLE)
00220 !
00221 !-----------------------------------------------------------------
00222 !
00223 END FUNCTION VEG_FROM_LAI_1D
00224 !
00225 !   ####################################################
00226     FUNCTION VEG_FROM_LAI_2D(PLAI,PVEGTYPE) RESULT(PVEG)
00227 !   ####################################################
00228 !!
00229 !!    PURPOSE
00230 !!    -------
00231 !
00232 !     Calculates coverage of soil by vegetation from leaf
00233 !    area index and type of vegetation
00234 !    (most of types; forest and vineyards; grassland)
00235 !              
00236 !!**  METHOD
00237 !!    ------
00238 !!
00239 !!    EXTERNAL
00240 !!    --------
00241 !!    none
00242 !!
00243 !!    IMPLICIT ARGUMENTS
00244 !!    ------------------
00245 !!      
00246 !!    none
00247 !!
00248 !!    REFERENCE
00249 !!    ---------
00250 !!
00251 !!      
00252 !!    AUTHOR
00253 !!    ------
00254 !!
00255 !!      V. Masson and A. Boone          * Meteo-France *
00256 !!
00257 !!    MODIFICATIONS
00258 !!    -------------
00259 !!      Original    25/03/99
00260 !!
00261 !-------------------------------------------------------------------------------
00262 !
00263 !*       0.     DECLARATIONS
00264 !               ------------
00265 !
00266 USE MODD_DATA_COVER_PAR, ONLY : NVT_NO, NVT_ROCK, NVT_SNOW,   &
00267                                   NVT_C3, NVT_C4, NVT_IRR,      &
00268                                   NVT_CONI, NVT_TREE, NVT_EVER, &
00269                                   NVT_TROG, NVT_PARK, NVT_GRAS  
00270 USE MODD_SURF_PAR,       ONLY : XUNDEF
00271 !
00272 !
00273 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00274 USE PARKIND1  ,ONLY : JPRB
00275 !
00276 IMPLICIT NONE
00277 !
00278 !*      0.1    declarations of arguments
00279 !
00280 REAL,   DIMENSION(:,:),   INTENT(IN) :: PLAI         ! Leaf area Index
00281 REAL,   DIMENSION(:,:,:), INTENT(IN) :: PVEGTYPE     ! type of vegetation
00282 !
00283 REAL,   DIMENSION(SIZE(PLAI,1),SIZE(PLAI,2)) :: PVEG ! vegetation fraction
00284 !
00285 !*      0.2    declarations of local variables
00286 !
00287 REAL,   DIMENSION(SIZE(PLAI,1),SIZE(PLAI,2)) :: ZLAI
00288 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00289 !-----------------------------------------------------------------
00290 IF (LHOOK) CALL DR_HOOK('MODI_VEG_FROM_LAI:VEG_FROM_LAI_2D',0,ZHOOK_HANDLE)
00291 ZLAI(:,:) = PLAI(:,:)
00292 WHERE ( PVEGTYPE(:,:,NVT_NO  ) + PVEGTYPE(:,:,NVT_ROCK) + PVEGTYPE(:,:,NVT_SNOW) < 1.) 
00293   ZLAI(:,:) = PLAI(:,:) / (1.-PVEGTYPE(:,:,NVT_NO)-PVEGTYPE(:,:,NVT_ROCK)-PVEGTYPE(:,:,NVT_SNOW))
00294 END WHERE
00295 !
00296 PVEG(:,:) = XUNDEF
00297 !
00298 WHERE (PLAI(:,:) /= XUNDEF)
00299 PVEG(:,:) = (1. - EXP( -0.6 * ZLAI(:,:) ))*(PVEGTYPE(:,:,NVT_C4  ) +   &! C4 crops
00300                                               PVEGTYPE(:,:,NVT_IRR ) +   &! irrigated crops
00301                                               PVEGTYPE(:,:,NVT_C3  )  )  &! C3 crops
00302             + 0.95                          *(PVEGTYPE(:,:,NVT_TREE) +   &! broadleaf forest
00303                                               PVEGTYPE(:,:,NVT_CONI)  )  &! coniferous forest
00304             + 0.99                          * PVEGTYPE(:,:,NVT_EVER)     &! equatorial forest
00305             + 0.95                          *(PVEGTYPE(:,:,NVT_GRAS) +   &! grassland
00306                                               PVEGTYPE(:,:,NVT_TROG) +   &! tropical grass
00307                                               PVEGTYPE(:,:,NVT_PARK)  )  &! irr. parks
00308             + 0.                            * PVEGTYPE(:,:,NVT_NO  )     &! no vegetation (smooth)
00309             + 0.                            * PVEGTYPE(:,:,NVT_SNOW)     &! no vegetation (snow)
00310             + 0.                            * PVEGTYPE(:,:,NVT_ROCK)      ! no vegetation (rocks)  
00311 END WHERE
00312 IF (LHOOK) CALL DR_HOOK('MODI_VEG_FROM_LAI:VEG_FROM_LAI_2D',1,ZHOOK_HANDLE)
00313 !
00314 !-----------------------------------------------------------------
00315 !
00316 END FUNCTION VEG_FROM_LAI_2D
00317 !
00318 !
00319 !
00320 !   ####################################################
00321     FUNCTION VEG_FROM_LAI_PATCH_1D(PLAI,PVEGTYPE) RESULT(PVEG)
00322 !   ####################################################
00323 !!
00324 !!    PURPOSE
00325 !!    -------
00326 !
00327 !     Calculates coverage of soil by vegetation from leaf
00328 !    area index and type of vegetation for each vegetation patch
00329 !    (most of types; forest and vineyards; grassland)
00330 !              
00331 !!**  METHOD
00332 !!    ------
00333 !!
00334 !!    EXTERNAL
00335 !!    --------
00336 !!    none
00337 !!
00338 !!    IMPLICIT ARGUMENTS
00339 !!    ------------------
00340 !!      
00341 !!    none
00342 !!
00343 !!    REFERENCE
00344 !!    ---------
00345 !!
00346 !!      
00347 !!    AUTHOR
00348 !!    ------
00349 !!
00350 !!    F.Solmon/V.Masson
00351 !!
00352 !!    MODIFICATIONS
00353 !!    -------------
00354 !!      Original    25/03/99
00355 !!
00356 !-------------------------------------------------------------------------------
00357 !
00358 !*       0.     DECLARATIONS
00359 !               ------------
00360 !
00361 USE MODD_DATA_COVER_PAR, ONLY : NVT_NO, NVT_ROCK, NVT_SNOW,   &
00362                                   NVT_C3, NVT_C4, NVT_IRR,      &
00363                                   NVT_CONI, NVT_TREE, NVT_EVER, &
00364                                   NVT_TROG, NVT_PARK, NVT_GRAS  
00365 USE MODD_SURF_PAR,       ONLY : XUNDEF
00366 !
00367 !
00368 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00369 USE PARKIND1  ,ONLY : JPRB
00370 !
00371 IMPLICIT NONE
00372 !
00373 !*      0.1    declarations of arguments
00374 !
00375 REAL,   DIMENSION(:),   INTENT(IN) :: PLAI         ! Leaf area Index
00376 REAL,   DIMENSION(:), INTENT(IN) :: PVEGTYPE     ! type of vegetation
00377 !
00378 REAL,   DIMENSION(SIZE(PLAI)) :: PVEG ! vegetation fraction
00379 !
00380 !*      0.2    declarations of local variables
00381 !
00382 REAL,   DIMENSION(SIZE(PLAI)) :: ZLAI
00383 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00384 !-----------------------------------------------------------------
00385 IF (LHOOK) CALL DR_HOOK('MODI_VEG_FROM_LAI:VEG_FROM_LAI_PATCH_1D',0,ZHOOK_HANDLE)
00386 ZLAI(:) = PLAI(:)
00387 PVEG(:) = XUNDEF
00388 !
00389 IF (PVEGTYPE(NVT_C4  )>0.) PVEG(NVT_C4  )=  1. - EXP( -0.6 * ZLAI(NVT_C4  ) )
00390 IF (PVEGTYPE(NVT_IRR )>0.) PVEG(NVT_IRR )=  1. - EXP( -0.6 * ZLAI(NVT_IRR ) )
00391 IF (PVEGTYPE(NVT_C3  )>0.) PVEG(NVT_C3  )=  1. - EXP( -0.6 * ZLAI(NVT_C3  ) )
00392 !
00393 IF (PVEGTYPE(NVT_TREE)>0.) PVEG(NVT_TREE)=  0.95
00394 IF (PVEGTYPE(NVT_CONI)>0.) PVEG(NVT_CONI)=  0.95
00395 IF (PVEGTYPE(NVT_EVER)>0.) PVEG(NVT_EVER)=  0.99
00396 !
00397 IF (PVEGTYPE(NVT_GRAS)>0.) PVEG(NVT_GRAS)=  0.95
00398 IF (PVEGTYPE(NVT_TROG)>0.) PVEG(NVT_TROG)=  0.95
00399 IF (PVEGTYPE(NVT_PARK)>0.) PVEG(NVT_PARK)=  0.95
00400 !
00401 IF (PVEGTYPE(NVT_NO  )>0.) PVEG(NVT_NO  )= 0.
00402 IF (PVEGTYPE(NVT_SNOW)>0.) PVEG(NVT_SNOW)= 0.
00403 IF (PVEGTYPE(NVT_ROCK)>0.) PVEG(NVT_ROCK)= 0.  
00404 IF (LHOOK) CALL DR_HOOK('MODI_VEG_FROM_LAI:VEG_FROM_LAI_PATCH_1D',1,ZHOOK_HANDLE)
00405 
00406 !
00407 END FUNCTION VEG_FROM_LAI_PATCH_1D
00408 !
00409 !--------------------------------------------
00410 !