SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/averaged_albedo_emis_isba.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE AVERAGED_ALBEDO_EMIS_ISBA(OFLOOD, HALBEDO, &
00003                                  PZENITH,PVEG,PZ0,PLAI,PTG1,&
00004                                  PPATCH,                    &
00005                                  PSW_BANDS,                 &
00006                                  PALBNIR_VEG,PALBVIS_VEG,   &
00007                                  PALBUV_VEG,                &
00008                                  PALBNIR_SOIL,PALBVIS_SOIL, &
00009                                  PALBUV_SOIL,               &
00010                                  PEMIS_ECO,                 &
00011                                  TPSNOW,                    &
00012                                  PALBNIR_ECO,PALBVIS_ECO,   &
00013                                  PALBUV_ECO,                &
00014                                  PDIR_ALB,PSCA_ALB,         &
00015                                  PEMIS,PTSRAD               )  
00016 !     ###################################################
00017 !
00018 !!**** ** computes radiative fields used in ISBA
00019 !!
00020 !!    PURPOSE
00021 !!    -------
00022 !!
00023 !!    METHOD
00024 !!    ------
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 ZSNG
00047 !----------------------------------------------------------------------------
00048 !
00049 !*    0.     DECLARATION
00050 !            -----------
00051 !
00052 USE MODD_SURF_PAR,  ONLY : XUNDEF
00053 !
00054 USE MODD_TYPE_SNOW
00055 !
00056 USE MODD_ISBA_n,    ONLY : XPSN,XFF,XEMISF
00057 !
00058 USE MODI_ALBEDO
00059 USE MODI_AVERAGE_RAD
00060 USE MODI_UPDATE_RAD_ISBA_n
00061 !
00062 !
00063 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00064 USE PARKIND1  ,ONLY : JPRB
00065 !
00066 IMPLICIT NONE
00067 !
00068 !*    0.1    Declaration of arguments
00069 !            ------------------------
00070 !
00071 LOGICAL,                INTENT(IN)   :: OFLOOD
00072  CHARACTER(LEN=4),       INTENT(IN)   :: HALBEDO     ! albedo type
00073 ! Albedo dependance with surface soil water content
00074 !   "EVOL" = albedo evolves with soil wetness
00075 !   "DRY " = constant albedo value for dry soil
00076 !   "WET " = constant albedo value for wet soil
00077 !   "MEAN" = constant albedo value for medium soil wetness
00078 !
00079 REAL, DIMENSION(:,:),   INTENT(IN)   :: PVEG        ! vegetation fraction
00080 REAL, DIMENSION(:,:),   INTENT(IN)   :: PZ0         ! roughness length
00081 REAL, DIMENSION(:,:),   INTENT(IN)   :: PLAI        ! leaf area index
00082 REAL, DIMENSION(:,:),   INTENT(IN)   :: PTG1        ! soil surface temperature
00083 REAL, DIMENSION(:,:),   INTENT(IN)   :: PPATCH      ! tile fraction
00084 REAL, DIMENSION(:),     INTENT(IN)   :: PSW_BANDS   ! middle wavelength of each band
00085 REAL, DIMENSION(:),     INTENT(IN)   :: PZENITH     
00086 
00087 REAL, DIMENSION(:,:),   INTENT(IN)   :: PALBNIR_VEG ! near-infra-red albedo of vegetation
00088 REAL, DIMENSION(:,:),   INTENT(IN)   :: PALBVIS_VEG ! visible albedo of vegetation
00089 REAL, DIMENSION(:,:),   INTENT(IN)   :: PALBUV_VEG  ! UV albedo of vegetation
00090 REAL, DIMENSION(:,:),   INTENT(IN)   :: PALBNIR_SOIL! near-infra-red albedo of soil
00091 REAL, DIMENSION(:,:),   INTENT(IN)   :: PALBVIS_SOIL! visible albedo of soil
00092 REAL, DIMENSION(:,:),   INTENT(IN)   :: PALBUV_SOIL ! UV albedo of soil
00093 REAL, DIMENSION(:,:),   INTENT(IN)   :: PEMIS_ECO   ! emissivity (soil+vegetation)
00094 TYPE(SURF_SNOW),        INTENT(IN)   :: TPSNOW      ! prognostic snow cover
00095 !
00096 REAL, DIMENSION(:,:),   INTENT(OUT)  :: PALBNIR_ECO ! near-infra-red albedo (soil+vegetation)
00097 REAL, DIMENSION(:,:),   INTENT(OUT)  :: PALBVIS_ECO ! visible albedo (soil+vegetation)
00098 REAL, DIMENSION(:,:),   INTENT(OUT)  :: PALBUV_ECO  ! UV albedo (soil+vegetation)
00099 !
00100 REAL, DIMENSION(:,:),   INTENT(OUT)  :: PDIR_ALB    ! averaged direct albedo  (per wavelength)
00101 REAL, DIMENSION(:,:),   INTENT(OUT)  :: PSCA_ALB    ! averaged diffuse albedo (per wavelength)
00102 REAL, DIMENSION(:),     INTENT(OUT)  :: PEMIS       ! averaged emissivity
00103 REAL, DIMENSION(:),     INTENT(OUT)  :: PTSRAD      ! averaged radiaitve temp.
00104 !
00105 !
00106 !*    0.2    Declaration of local variables
00107 !            ------------------------------
00108 !
00109 !
00110 REAL, DIMENSION(SIZE(PALBNIR_VEG,1),SIZE(PSW_BANDS),SIZE(PALBVIS_VEG,2)) :: ZDIR_ALB_PATCH 
00111 !                                                     ! direct albedo
00112 REAL, DIMENSION(SIZE(PALBNIR_VEG,1),SIZE(PSW_BANDS),SIZE(PALBVIS_VEG,2)) :: ZSCA_ALB_PATCH 
00113 !                                                     ! diffuse albedo
00114 REAL, DIMENSION(SIZE(PEMIS_ECO,  1),SIZE(PALBVIS_VEG,2)) :: ZEMIS_PATCH   ! emissivity with snow-flood
00115 REAL, DIMENSION(SIZE(PEMIS_ECO,  1),SIZE(PALBVIS_VEG,2)) :: ZTRAD_PATCH   ! Tsrad
00116 REAL, DIMENSION(SIZE(PEMIS_ECO,  1)) :: ZEMIS         ! emissivity with flood
00117 !
00118 INTEGER :: JPATCH ! loop on patches
00119 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00120 !-------------------------------------------------------------------------------
00121 !
00122 !
00123 !*    1.      averaged albedo on natural continental surfaces (except prognostic snow)
00124 !             -----------------------------------------------
00125 !
00126 IF (LHOOK) CALL DR_HOOK('AVERAGED_ALBEDO_EMIS_ISBA',0,ZHOOK_HANDLE)
00127  CALL ALBEDO(HALBEDO,                                    &
00128               PALBVIS_VEG,PALBNIR_VEG,PALBUV_VEG,PVEG,    &
00129               PALBVIS_SOIL,PALBNIR_SOIL,PALBUV_SOIL,      &
00130               PALBVIS_ECO,PALBNIR_ECO,PALBUV_ECO          )  
00131 
00132 !
00133 !*    2.      averaged albedo and emis. on natural continental surfaces (with prognostic snow)
00134 !             ---------------------------------------------------------
00135 !
00136 ZDIR_ALB_PATCH(:,:,:)=0.
00137 ZSCA_ALB_PATCH(:,:,:)=0.
00138 ZEMIS_PATCH   (:,:)=0.
00139 ZTRAD_PATCH   (:,:)=0.
00140 !
00141 PDIR_ALB(:,:)=0.
00142 PSCA_ALB(:,:)=0.
00143 PEMIS   (:)  =0.
00144 PTSRAD  (:)  =0.
00145 !    
00146 !* Initialization of albedo for each wavelength, emissivity and snow/flood fractions
00147 !
00148  CALL UPDATE_RAD_ISBA_n(OFLOOD, TPSNOW%SCHEME,PZENITH,PSW_BANDS,PVEG,PLAI, &
00149                          PZ0,PALBNIR_ECO,PALBVIS_ECO,PALBUV_ECO,PEMIS_ECO,&
00150                          ZDIR_ALB_PATCH,ZSCA_ALB_PATCH,ZEMIS_PATCH        )  
00151 !
00152 !* radiative surface temperature
00153 !
00154 DO JPATCH=1,SIZE(PALBVIS_VEG,2)
00155 !
00156   ZEMIS(:) = PEMIS_ECO(:,JPATCH)
00157 !   
00158   IF(OFLOOD.AND.(TPSNOW%SCHEME=='3-L' .OR. TPSNOW%SCHEME=='CRO'))THEN
00159     WHERE(XPSN(:,JPATCH)<1.0.AND.PEMIS_ECO(:,JPATCH)/=XUNDEF)          
00160       ZEMIS(:) = ((1.-XFF(:,JPATCH)-XPSN(:,JPATCH))*PEMIS_ECO(:,JPATCH) + XFF(:,JPATCH)*XEMISF(:,JPATCH))/(1.-XPSN(:,JPATCH))
00161     ENDWHERE   
00162   ENDIF
00163 !
00164   IF (TPSNOW%SCHEME=='D95' .OR. TPSNOW%SCHEME=='EBA') THEN
00165     ZTRAD_PATCH(:,JPATCH) = PTG1(:,JPATCH)
00166   ELSE IF (TPSNOW%SCHEME=='3-L' .OR. TPSNOW%SCHEME=='CRO') THEN
00167     WHERE (PEMIS_ECO(:,JPATCH)/=XUNDEF .AND. ZEMIS_PATCH(:,JPATCH)/=0.)
00168       ZTRAD_PATCH(:,JPATCH) =( ( (1.-XPSN(:,JPATCH))*ZEMIS      (:)       *PTG1     (:,JPATCH)**4            &
00169                                   +    XPSN(:,JPATCH) *TPSNOW%EMIS(:,JPATCH)*TPSNOW%TS(:,JPATCH)**4 ) )**0.25  &
00170                                / ZEMIS_PATCH(:,JPATCH)**0.25  
00171     END WHERE
00172   END IF
00173 END DO
00174 !
00175 !* averaged fields
00176 !
00177  CALL AVERAGE_RAD(PPATCH,                                                   &
00178                    ZDIR_ALB_PATCH, ZSCA_ALB_PATCH, ZEMIS_PATCH, ZTRAD_PATCH, &
00179                    PDIR_ALB,       PSCA_ALB,       PEMIS,       PTSRAD       )  
00180 IF (LHOOK) CALL DR_HOOK('AVERAGED_ALBEDO_EMIS_ISBA',1,ZHOOK_HANDLE)
00181 !
00182 !-------------------------------------------------------------------------------
00183 !
00184 END SUBROUTINE AVERAGED_ALBEDO_EMIS_ISBA