SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/emis_from_veg.F90
Go to the documentation of this file.
00001 !#######################
00002 MODULE MODI_EMIS_FROM_VEG
00003 !#######################
00004 !
00005 INTERFACE EMIS_FROM_VEG
00006 !
00007     FUNCTION EMIS_FROM_VEG_0D(PVEG,PVEGTYPE) RESULT(PEMIS)
00008 !
00009 REAL,                 INTENT(IN) :: PVEG         ! vegetatino fraction
00010 REAL,   DIMENSION(:), INTENT(IN) :: PVEGTYPE     ! type of vegetation
00011 !
00012 REAL                             :: PEMIS        ! emissivity
00013 !
00014 END FUNCTION EMIS_FROM_VEG_0D
00015 !
00016 !
00017     FUNCTION EMIS_FROM_VEG_1D(PVEG,PVEGTYPE) RESULT(PEMIS)
00018 !
00019 REAL,   DIMENSION(:),   INTENT(IN) :: PVEG         ! vegetation fraction
00020 REAL,   DIMENSION(:,:), INTENT(IN) :: PVEGTYPE     ! type of vegetation
00021 !
00022 REAL,   DIMENSION(SIZE(PVEG))      :: PEMIS        ! emissivity
00023 !
00024 END FUNCTION EMIS_FROM_VEG_1D
00025 !
00026 !
00027     FUNCTION EMIS_FROM_VEG_2D(PVEG,PVEGTYPE) RESULT(PEMIS)
00028 !
00029 REAL,   DIMENSION(:,:),   INTENT(IN) :: PVEG         ! vegetation fraction
00030 REAL,   DIMENSION(:,:,:), INTENT(IN) :: PVEGTYPE     ! type of vegetation
00031 !
00032 REAL,   DIMENSION(SIZE(PVEG,1),SIZE(PVEG,2)) :: PEMIS! emissivity
00033 !
00034 END FUNCTION EMIS_FROM_VEG_2D
00035 !
00036    FUNCTION EMIS_FROM_VEG_PATCH(PVEG,PVEGTYPE) RESULT(PEMIS)
00037 !
00038 REAL, DIMENSION(:), INTENT (IN)     :: PVEG
00039 REAL, DIMENSION(:), INTENT (IN)     :: PVEGTYPE  
00040 !
00041 REAL, DIMENSION(SIZE(PVEG))         :: PEMIS
00042 
00043 END FUNCTION EMIS_FROM_VEG_PATCH
00044 !
00045 END INTERFACE
00046 !
00047 END MODULE MODI_EMIS_FROM_VEG
00048 !
00049 !   ####################################################
00050     FUNCTION EMIS_FROM_VEG_0D(PVEG,PVEGTYPE) RESULT(PEMIS)
00051 !   ####################################################
00052 !!
00053 !!    PURPOSE
00054 !!    -------
00055 !
00056 !     Calculates averaged emissivity on natural surfaces
00057 !              
00058 !!**  METHOD
00059 !!    ------
00060 !!
00061 !!    EXTERNAL
00062 !!    --------
00063 !!    none
00064 !!
00065 !!    IMPLICIT ARGUMENTS
00066 !!    ------------------
00067 !!      
00068 !!    none
00069 !!
00070 !!    REFERENCE
00071 !!    ---------
00072 !!
00073 !!      
00074 !!    AUTHOR
00075 !!    ------
00076 !!
00077 !!      V. Masson and A. Boone          * Meteo-France *
00078 !!
00079 !!    MODIFICATIONS
00080 !!    -------------
00081 !!      Original    25/03/99
00082 !!
00083 !-------------------------------------------------------------------------------
00084 !
00085 !*       0.     DECLARATIONS
00086 !               ------------
00087 !
00088 USE MODD_DATA_COVER_PAR, ONLY : NVT_SNOW
00089 USE MODD_ISBA_PAR,       ONLY : XEMISSOIL, XEMISVEG
00090 USE MODD_SNOW_PAR,       ONLY : XEMISSN
00091 !
00092 !
00093 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00094 USE PARKIND1  ,ONLY : JPRB
00095 !
00096 IMPLICIT NONE
00097 !
00098 !*      0.1    declarations of arguments
00099 !
00100 REAL,                 INTENT(IN) :: PVEG         ! vegetation fraction
00101 REAL,   DIMENSION(:), INTENT(IN) :: PVEGTYPE     ! type of vegetation
00102 !
00103 REAL                             :: PEMIS        ! emissivity
00104 !
00105 !*      0.2    declarations of local variables
00106 !
00107 REAL :: ZEMISSOIL                  ! soil emissivity
00108 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00109 !
00110 !-----------------------------------------------------------------
00111 !
00112 IF (LHOOK) CALL DR_HOOK('MODI_EMIS_FROM_VEG:EMIS_FROM_VEG_0D',0,ZHOOK_HANDLE)
00113 ZEMISSOIL =   XEMISSN   *     PVEGTYPE(NVT_SNOW) &
00114               + XEMISSOIL * (1.-PVEGTYPE(NVT_SNOW))  
00115 !
00116 PEMIS   =   XEMISVEG  *     PVEG     &
00117             + ZEMISSOIL * (1.-PVEG)  
00118 IF (LHOOK) CALL DR_HOOK('MODI_EMIS_FROM_VEG:EMIS_FROM_VEG_0D',1,ZHOOK_HANDLE)
00119 !
00120 !-----------------------------------------------------------------
00121 !
00122 END FUNCTION EMIS_FROM_VEG_0D
00123 !
00124 !   ####################################################
00125     FUNCTION EMIS_FROM_VEG_1D(PVEG,PVEGTYPE) RESULT(PEMIS)
00126 !   ####################################################
00127 !!
00128 !!    PURPOSE
00129 !!    -------
00130 !
00131 !     Calculates averaged emissivity on natural surfaces
00132 !              
00133 !!**  METHOD
00134 !!    ------
00135 !!
00136 !!    EXTERNAL
00137 !!    --------
00138 !!    none
00139 !!
00140 !!    IMPLICIT ARGUMENTS
00141 !!    ------------------
00142 !!      
00143 !!    none
00144 !!
00145 !!    REFERENCE
00146 !!    ---------
00147 !!
00148 !!      
00149 !!    AUTHOR
00150 !!    ------
00151 !!
00152 !!      V. Masson and A. Boone          * Meteo-France *
00153 !!
00154 !!    MODIFICATIONS
00155 !!    -------------
00156 !!      Original    25/03/99
00157 !!
00158 !-------------------------------------------------------------------------------
00159 !
00160 !*       0.     DECLARATIONS
00161 !               ------------
00162 !
00163 USE MODD_DATA_COVER_PAR, ONLY : NVT_SNOW
00164 USE MODD_ISBA_PAR,       ONLY : XEMISSOIL, XEMISVEG
00165 USE MODD_SNOW_PAR,       ONLY : XEMISSN
00166 !
00167 !
00168 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00169 USE PARKIND1  ,ONLY : JPRB
00170 !
00171 IMPLICIT NONE
00172 !
00173 !*      0.1    declarations of arguments
00174 !
00175 REAL,   DIMENSION(:),   INTENT(IN) :: PVEG         ! vegetation fraction
00176 REAL,   DIMENSION(:,:), INTENT(IN) :: PVEGTYPE     ! type of vegetation
00177 !
00178 REAL,   DIMENSION(SIZE(PVEG))      :: PEMIS        ! emissivity
00179 !
00180 !*      0.2    declarations of local variables
00181 !
00182 REAL,   DIMENSION(SIZE(PVEG))      :: ZEMISSOIL    ! soil emissivity
00183 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00184 !
00185 !-----------------------------------------------------------------
00186 !
00187 IF (LHOOK) CALL DR_HOOK('MODI_EMIS_FROM_VEG:EMIS_FROM_VEG_1D',0,ZHOOK_HANDLE)
00188 ZEMISSOIL(:) =   XEMISSN   *     PVEGTYPE(:,NVT_SNOW) &
00189                 + XEMISSOIL * (1.-PVEGTYPE(:,NVT_SNOW))  
00190 !
00191 PEMIS(:)   =   XEMISVEG  *     PVEG(:)     &
00192                + ZEMISSOIL * (1.-PVEG(:))  
00193 IF (LHOOK) CALL DR_HOOK('MODI_EMIS_FROM_VEG:EMIS_FROM_VEG_1D',1,ZHOOK_HANDLE)
00194 !
00195 !-----------------------------------------------------------------
00196 !
00197 END FUNCTION EMIS_FROM_VEG_1D
00198 !
00199 !   ####################################################
00200     FUNCTION EMIS_FROM_VEG_2D(PVEG,PVEGTYPE) RESULT(PEMIS)
00201 !   ####################################################
00202 !!
00203 !!    PURPOSE
00204 !!    -------
00205 !
00206 !     Calculates averaged emissivity on natural surfaces
00207 !              
00208 !!**  METHOD
00209 !!    ------
00210 !!
00211 !!    EXTERNAL
00212 !!    --------
00213 !!    none
00214 !!
00215 !!    IMPLICIT ARGUMENTS
00216 !!    ------------------
00217 !!      
00218 !!    none
00219 !!
00220 !!    REFERENCE
00221 !!    ---------
00222 !!
00223 !!      
00224 !!    AUTHOR
00225 !!    ------
00226 !!
00227 !!      V. Masson and A. Boone          * Meteo-France *
00228 !!
00229 !!    MODIFICATIONS
00230 !!    -------------
00231 !!      Original    25/03/99
00232 !!
00233 !-------------------------------------------------------------------------------
00234 !
00235 !*       0.     DECLARATIONS
00236 !               ------------
00237 !
00238 USE MODD_SURF_PAR,       ONLY : XUNDEF
00239 USE MODD_DATA_COVER_PAR, ONLY : NVT_SNOW
00240 USE MODD_ISBA_PAR,       ONLY : XEMISSOIL, XEMISVEG
00241 USE MODD_SNOW_PAR,       ONLY : XEMISSN
00242 !
00243 !
00244 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00245 USE PARKIND1  ,ONLY : JPRB
00246 !
00247 IMPLICIT NONE
00248 !
00249 !*      0.1    declarations of arguments
00250 !
00251 REAL,   DIMENSION(:,:),   INTENT(IN) :: PVEG         ! vegetation fraction
00252 REAL,   DIMENSION(:,:,:), INTENT(IN) :: PVEGTYPE     ! type of vegetation
00253 !
00254 REAL,   DIMENSION(SIZE(PVEG,1),SIZE(PVEG,2)) :: PEMIS! emissivity
00255 !
00256 !*      0.2    declarations of local variables
00257 !
00258 REAL,   DIMENSION(SIZE(PVEG,1),SIZE(PVEG,2)) :: ZEMISSOIL ! soil emissivity
00259 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00260 !
00261 !-----------------------------------------------------------------
00262 !
00263 IF (LHOOK) CALL DR_HOOK('MODI_EMIS_FROM_VEG:EMIS_FROM_VEG_2D',0,ZHOOK_HANDLE)
00264 ZEMISSOIL(:,:) =   XEMISSN   *     PVEGTYPE(:,:,NVT_SNOW) &
00265                    + XEMISSOIL * (1.-PVEGTYPE(:,:,NVT_SNOW))  
00266 !
00267 PEMIS(:,:)   =   XEMISVEG  *     PVEG(:,:)     &
00268                  + ZEMISSOIL * (1.-PVEG(:,:))  
00269 !
00270 WHERE (PVEG(:,:) == XUNDEF)
00271   PEMIS(:,:) = XUNDEF
00272 END WHERE
00273 IF (LHOOK) CALL DR_HOOK('MODI_EMIS_FROM_VEG:EMIS_FROM_VEG_2D',1,ZHOOK_HANDLE)
00274 !-----------------------------------------------------------------
00275 !
00276 END FUNCTION EMIS_FROM_VEG_2D
00277 !
00278 !   ####################################################
00279     FUNCTION EMIS_FROM_VEG_PATCH(PVEG,PVEGTYPE) RESULT(PEMIS)
00280 !   ####################################################
00281 !!
00282 !!    PURPOSE
00283 !!    -------
00284 !
00285 !     Calculates averaged emissivity on natural surfaces
00286 !              
00287 !!**  METHOD
00288 !!    ------
00289 !!
00290 !!    EXTERNAL
00291 !!    --------
00292 !!    none
00293 !!
00294 !!    IMPLICIT ARGUMENTS
00295 !!    ------------------
00296 !!      
00297 !!    none
00298 !!
00299 !!    REFERENCE
00300 !!    ---------
00301 !!
00302 !!      
00303 !!    AUTHOR
00304 !!    ------
00305 !!
00306 !!      V. Masson and A. Boone          * Meteo-France *
00307 !!
00308 !!    MODIFICATIONS
00309 !!    -------------
00310 !!      Original    25/03/99
00311 !!
00312 !-------------------------------------------------------------------------------
00313 !
00314 !*       0.     DECLARATIONS
00315 !               ------------
00316 !
00317 USE MODD_SURF_PAR,       ONLY : XUNDEF
00318 USE MODD_DATA_COVER_PAR, ONLY : NVT_SNOW
00319 USE MODD_ISBA_PAR,       ONLY : XEMISSOIL, XEMISVEG
00320 USE MODD_SNOW_PAR,       ONLY : XEMISSN
00321 !
00322 !
00323 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00324 USE PARKIND1  ,ONLY : JPRB
00325 !
00326 IMPLICIT NONE
00327 !
00328 !*      0.1    declarations of arguments
00329 !
00330 REAL,   DIMENSION(:),   INTENT(IN) :: PVEG         ! vegetation fraction
00331 REAL,   DIMENSION(:),   INTENT(IN) :: PVEGTYPE     ! type of vegetation
00332 !
00333 REAL,   DIMENSION(SIZE(PVEG))      :: PEMIS        ! emissivity
00334 !
00335 !*      0.2    declarations of local variables
00336 !
00337 REAL,   DIMENSION(SIZE(PVEG))      :: ZEMISSOIL    ! soil emissivity
00338 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00339 !
00340 !-----------------------------------------------------------------
00341 !
00342 IF (LHOOK) CALL DR_HOOK('MODI_EMIS_FROM_VEG:EMIS_FROM_VEG_PATCH',0,ZHOOK_HANDLE)
00343 ZEMISSOIL(:) =   XEMISSN   *     PVEGTYPE(NVT_SNOW) &
00344                  + XEMISSOIL * (1.-PVEGTYPE(NVT_SNOW))  
00345 !
00346 PEMIS(:)   =   XEMISVEG  *     PVEG(:)     &
00347                + ZEMISSOIL * (1.-PVEG(:))  
00348 !
00349 WHERE (PVEG(:) == XUNDEF)
00350   PEMIS(:) = XUNDEF
00351 END WHERE
00352 !
00353 IF (LHOOK) CALL DR_HOOK('MODI_EMIS_FROM_VEG:EMIS_FROM_VEG_PATCH',1,ZHOOK_HANDLE)
00354 !
00355 !-----------------------------------------------------------------
00356 !
00357 END FUNCTION EMIS_FROM_VEG_PATCH