SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/avg_albedo_emis_greenroof.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE AVG_ALBEDO_EMIS_GREENROOF(HALBEDO,         &
00003                                  PVEG,PZ0,PLAI,PTG1,        &
00004                                  PSW_BANDS,                 &
00005                                  PALBNIR_VEG,PALBVIS_VEG,   &
00006                                  PALBUV_VEG,                &
00007                                  PALBNIR_SOIL,PALBVIS_SOIL, &
00008                                  PALBUV_SOIL,               &
00009                                  PEMIS_ECO,                 &
00010                                  TPSNOW,                    &
00011                                  PALBNIR_ECO,PALBVIS_ECO,   &
00012                                  PALBUV_ECO,                &
00013                                  PDIR_ALB,PSCA_ALB,         &
00014                                  PEMIS,PTSRAD               )  
00015 !     ###################################################
00016 !
00017 !!**** ** computes radiative fields used in GREENROOF
00018 !!
00019 !!    PURPOSE
00020 !!    -------
00021 !!
00022 !!    METHOD
00023 !!    ------
00024 !!    Based on avg_albedo_emis_garden
00025 !!
00026 !!    EXTERNAL
00027 !!    --------
00028 !!
00029 !!    IMPLICIT ARGUMENTS
00030 !!    ------------------
00031 !!
00032 !!    REFERENCE
00033 !!    ---------
00034 !!
00035 !!    AUTHOR
00036 !!    ------
00037 !!
00038 !!    V. Masson        Meteo-France
00039 !!
00040 !!    MODIFICATION
00041 !!    ------------
00042 !!
00043 !!    Original                    01/2004
00044 !!     A. Bogatchev               09/2005   EBA snow option
00045 !!     B. Decharme                2008      The fraction of vegetation covered by snow must be
00046 !!                                          <= to XPSNG
00047 !      C. de Munck & A. Lemonsu   09/2011   Greenroofs
00048 !----------------------------------------------------------------------------
00049 !
00050 !*    0.     DECLARATION
00051 !            -----------
00052 !
00053 USE MODD_SURF_PAR,  ONLY : XUNDEF
00054 !
00055 USE MODD_TYPE_SNOW
00056 !
00057 USE MODD_SNOW_PAR,   ONLY : XEMISSN
00058 USE MODD_SURF_PAR,   ONLY : XUNDEF
00059 !
00060 USE MODD_TEB_GREENROOF_n,    ONLY : TSNOW, XPSN, XPSNV_A, XPSNG, XPSNV
00061 !
00062 USE MODI_ALBEDO
00063 USE MODI_ALBEDO_FROM_NIR_VIS
00064 USE MODI_ISBA_SNOW_FRAC
00065 !
00066 !
00067 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00068 USE PARKIND1  ,ONLY : JPRB
00069 !
00070 IMPLICIT NONE
00071 !
00072 !*    0.1    Declaration of arguments
00073 !            ------------------------
00074 !
00075  CHARACTER(LEN=4),       INTENT(IN)   :: HALBEDO     ! albedo type
00076 ! Albedo dependance with surface soil water content
00077 !   "EVOL" = albedo evolves with soil wetness
00078 !   "DRY " = constant albedo value for dry soil
00079 !   "WET " = constant albedo value for wet soil
00080 !   "MEAN" = constant albedo value for medium soil wetness
00081 !
00082 REAL, DIMENSION(:),   INTENT(IN)   :: PVEG        ! vegetation fraction
00083 REAL, DIMENSION(:),   INTENT(IN)   :: PZ0         ! roughness length
00084 REAL, DIMENSION(:),   INTENT(IN)   :: PLAI        ! leaf area index
00085 REAL, DIMENSION(:),   INTENT(IN)   :: PTG1        ! soil surface temperature
00086 REAL, DIMENSION(:),   INTENT(IN)   :: PSW_BANDS   ! middle wavelength of each band 
00087 
00088 REAL, DIMENSION(:),   INTENT(IN)   :: PALBNIR_VEG ! near-infra-red albedo of vegetation
00089 REAL, DIMENSION(:),   INTENT(IN)   :: PALBVIS_VEG ! visible albedo of vegetation
00090 REAL, DIMENSION(:),   INTENT(IN)   :: PALBUV_VEG  ! UV albedo of vegetation
00091 REAL, DIMENSION(:),   INTENT(IN)   :: PALBNIR_SOIL! near-infra-red albedo of soil
00092 REAL, DIMENSION(:),   INTENT(IN)   :: PALBVIS_SOIL! visible albedo of soil
00093 REAL, DIMENSION(:),   INTENT(IN)   :: PALBUV_SOIL ! UV albedo of soil
00094 REAL, DIMENSION(:),   INTENT(IN)   :: PEMIS_ECO   ! emissivity (soil+vegetation)
00095 TYPE(SURF_SNOW),      INTENT(IN)   :: TPSNOW      ! prognostic snow cover
00096 !
00097 REAL, DIMENSION(:),   INTENT(OUT)  :: PALBNIR_ECO ! near-infra-red albedo (soil+vegetation)
00098 REAL, DIMENSION(:),   INTENT(OUT)  :: PALBVIS_ECO ! visible albedo (soil+vegetation)
00099 REAL, DIMENSION(:),   INTENT(OUT)  :: PALBUV_ECO  ! UV albedo (soil+vegetation)
00100 !
00101 REAL, DIMENSION(:,:), INTENT(OUT)  :: PDIR_ALB    ! averaged direct albedo  (per wavelength)
00102 REAL, DIMENSION(:,:), INTENT(OUT)  :: PSCA_ALB    ! averaged diffuse albedo (per wavelength)
00103 REAL, DIMENSION(:),   INTENT(OUT)  :: PEMIS       ! averaged emissivity
00104 REAL, DIMENSION(:),   INTENT(OUT)  :: PTSRAD      ! averaged radiaitve temp.
00105 !
00106 !
00107 !*    0.2    Declaration of local variables
00108 !            ------------------------------
00109 !
00110 !
00111 REAL, DIMENSION(SIZE(PALBNIR_VEG)) :: ZALBNIR ! near-infra-red albedo with snow
00112 REAL, DIMENSION(SIZE(PALBVIS_VEG)) :: ZALBVIS ! visible albedo with snow
00113 REAL, DIMENSION(SIZE(PALBUV_VEG )) :: ZALBUV  ! UV albedo with snow
00114 !
00115 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00116 !-------------------------------------------------------------------------------
00117 !
00118 !
00119 !*    1.      averaged albedo on natural continental surfaces (except prognostic snow)
00120 !             -----------------------------------------------
00121 !
00122 IF (LHOOK) CALL DR_HOOK('AVG_ALBEDO_EMIS_GREENROOF',0,ZHOOK_HANDLE)
00123  CALL ALBEDO(HALBEDO,                                  &
00124             PALBVIS_VEG,PALBNIR_VEG,PALBUV_VEG,PVEG,  &
00125             PALBVIS_SOIL,PALBNIR_SOIL,PALBUV_SOIL,    &
00126             PALBVIS_ECO,PALBNIR_ECO,PALBUV_ECO        )  
00127 
00128 !
00129 !*    2.      averaged albedo and emis. on natural continental surfaces (with prognostic snow)
00130 !             ---------------------------------------------------------
00131 !
00132 ZALBNIR(:)    = 0.
00133 ZALBVIS(:)    = 0.
00134 ZALBUV (:)    = 0.
00135 !
00136 PDIR_ALB(:,:) = 0.
00137 PSCA_ALB(:,:) = 0.
00138 PEMIS   (:)   = 0.
00139 PTSRAD  (:)   = 0.
00140 !   
00141 !
00142  CALL ISBA_SNOW_FRAC(TSNOW%SCHEME,                          &
00143                     TSNOW%WSNOW(:,:,1), TSNOW%RHO(:,:,1),  &
00144                     TSNOW%ALB  (:,1),                      &
00145                     PVEG(:), PLAI(:), PZ0(:),              &
00146                     XPSN(:), XPSNV_A(:),                   &
00147                     XPSNG(:), XPSNV(:) )  
00148 !
00149  WHERE (PVEG(:)/=XUNDEF)
00150 !
00151 ! albedo on this tile
00152 !
00153     ZALBNIR(:) = (1.-XPSN(:))*PALBNIR_ECO(:) + XPSN(:) *TPSNOW%ALB(:,1)
00154       
00155     ZALBVIS(:) = (1.-XPSN(:))*PALBVIS_ECO(:) + XPSN(:) *TPSNOW%ALB(:,1)
00156  
00157     ZALBUV(:)  = (1.-XPSN(:))*PALBUV_ECO (:) + XPSN(:) *TPSNOW%ALB(:,1)
00158   END WHERE
00159 !
00160 !* albedo for each wavelength
00161 !
00162   CALL ALBEDO_FROM_NIR_VIS(PSW_BANDS,ZALBNIR, ZALBVIS, ZALBUV,  &
00163                            PDIR_ALB(:,:), PSCA_ALB(:,:) )  
00164 !
00165 ! emissivity
00166 !
00167   WHERE (PEMIS_ECO(:)/=XUNDEF)
00168     PEMIS(:) = (1.-XPSN(:))*PEMIS_ECO(:) + XPSN(:) * XEMISSN  
00169   END WHERE
00170 !
00171 !* radiative surface temperature
00172 !
00173   IF (TPSNOW%SCHEME=='D95' .OR. TPSNOW%SCHEME=='EBA') THEN
00174     PTSRAD(:) = PTG1(:)
00175   ELSE IF (TPSNOW%SCHEME=='3-L' .OR. TPSNOW%SCHEME=='CRO') THEN
00176     WHERE (PEMIS_ECO(:)/=XUNDEF)
00177       PTSRAD(:) = ( ( (1.-XPSN(:))*PEMIS(:)*PTG1(:)**4                           &
00178                    +      XPSN(:) *TPSNOW%EMIS(:,1)*TPSNOW%TS(:,1)**4 ) )**0.25  &
00179                          / PEMIS(:)**0.25  
00180     END WHERE
00181   END IF
00182 !
00183 IF (LHOOK) CALL DR_HOOK('AVG_ALBEDO_EMIS_GREENROOF',1,ZHOOK_HANDLE)
00184 !
00185 !-------------------------------------------------------------------------------
00186 !
00187 END SUBROUTINE AVG_ALBEDO_EMIS_GREENROOF