SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/averaged_tsrad_teb.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE AVERAGED_TSRAD_TEB(PEMIS_ROOF, PTS_ROOF,           &
00003                                     PEMIS_ROAD, PTS_ROAD,           &
00004                                     PEMIS_WALL, PTS_WALL_A,         &
00005                                     PTS_WALL_B,                     &
00006                                     PEMIS_GARDEN, PTS_GARDEN,       &
00007                                     PEMIS_GREENROOF, PTS_GREENROOF, &
00008                                     TSNOW_ROOF, TSNOW_ROAD,         &
00009                                     PROAD, PFRAC_GR, PGARDEN, PBLD, &
00010                                     PWALL_O_HOR, PSVF_ROAD,         &
00011                                     PSVF_WALL, PSVF_GARDEN,         &
00012                                     PEMIS, PTSRAD, PT_WIN1,         &
00013                                     PGR                             ) 
00014 !     ###################################################
00015 !
00016 !!**** *AVERAGED_TSRAD_TEB* computes averaged emissivity and radiative surface
00017 !!                          temperature for TEB scheme
00018 !!
00019 !!    PURPOSE
00020 !!    -------
00021 !!
00022 !!    METHOD
00023 !!    ------
00024 !!   
00025 !!    EXTERNAL
00026 !!    --------
00027 !!
00028 !!    IMPLICIT ARGUMENTS
00029 !!    ------------------
00030 !!
00031 !!    REFERENCE
00032 !!    ---------
00033 !!
00034 !!    AUTHOR
00035 !!    ------
00036 !!
00037 !!    V. Masson        Meteo-France
00038 !!
00039 !!    MODIFICATION
00040 !!    ------------
00041 !!    09/2012     C. de Munck, A. Lemonsu : add green roofs
00042 !!
00043 !!    Original    01/2004
00044 !----------------------------------------------------------------------------
00045 !
00046 !*    0.     DECLARATION
00047 !            -----------
00048 !
00049 USE MODD_TYPE_SNOW
00050 !
00051 USE MODD_SURF_PAR, ONLY : XUNDEF
00052 USE MODD_CSTS,     ONLY : XSTEFAN
00053 !
00054 USE MODI_URBAN_LW_COEF
00055 !
00056 USE MODE_SURF_SNOW_FRAC
00057 !
00058 !
00059 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00060 USE PARKIND1  ,ONLY : JPRB
00061 !
00062 IMPLICIT NONE
00063 !
00064 !*    0.1    Declaration of arguments
00065 !            ------------------------
00066 !
00067 REAL, DIMENSION(:), INTENT(IN) :: PEMIS_ROOF     ! roof emissivity
00068 REAL, DIMENSION(:), INTENT(IN) :: PTS_ROOF       ! roof surface temperature
00069 REAL, DIMENSION(:), INTENT(IN) :: PEMIS_ROAD     ! road emissivity
00070 REAL, DIMENSION(:), INTENT(IN) :: PTS_ROAD       ! road surface temperature
00071 REAL, DIMENSION(:), INTENT(IN) :: PEMIS_WALL     ! wall emissivity
00072 REAL, DIMENSION(:), INTENT(IN) :: PTS_WALL_A     ! wall surface temperature
00073 REAL, DIMENSION(:), INTENT(IN) :: PTS_WALL_B     ! wall surface temperature
00074 REAL, DIMENSION(:), INTENT(IN) :: PEMIS_GARDEN   ! green area emissivity (snowfree)
00075 REAL, DIMENSION(:), INTENT(IN) :: PTS_GREENROOF  ! green roof surf. temp.
00076 REAL, DIMENSION(:), INTENT(IN) :: PEMIS_GREENROOF! green roof emissivity (snowfree)
00077 REAL, DIMENSION(:), INTENT(IN) :: PTS_GARDEN     ! green area surf. temp.
00078 TYPE(SURF_SNOW),    INTENT(IN) :: TSNOW_ROOF     ! snow on roofs
00079 TYPE(SURF_SNOW),    INTENT(IN) :: TSNOW_ROAD     ! snow on roads
00080 REAL, DIMENSION(:), INTENT(IN) :: PROAD          ! road fraction
00081 REAL, DIMENSION(:), INTENT(IN) :: PFRAC_GR       ! green roof fraction
00082 REAL, DIMENSION(:), INTENT(IN) :: PGARDEN        ! green area fraction
00083 REAL, DIMENSION(:), INTENT(IN) :: PBLD           ! building fraction
00084 REAL, DIMENSION(:), INTENT(IN) :: PWALL_O_HOR    ! vertical surf. / horizontal surf.
00085 REAL, DIMENSION(:), INTENT(IN) :: PSVF_ROAD      ! sky-view-factor from roads
00086 REAL, DIMENSION(:), INTENT(IN) :: PSVF_WALL      ! sky-view-factor from walls
00087 REAL, DIMENSION(:), INTENT(IN) :: PSVF_GARDEN    ! sky-view-factor from green areas
00088 REAL, DIMENSION(:), INTENT(OUT):: PEMIS          ! averaged emissivity (all tiles)
00089 REAL, DIMENSION(:), INTENT(OUT):: PTSRAD         ! averaged radiaitve temp. (all tiles)
00090 REAL, DIMENSION(:), INTENT(IN) :: PT_WIN1        !
00091 REAL, DIMENSION(:), INTENT(IN) :: PGR            !
00092 !
00093 !
00094 !*    0.2    Declaration of local variables
00095 !            ------------------------------
00096 !
00097 REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZDN_ROOF       ! snow fraction 
00098 REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZDN_ROAD       ! on the surface
00099 REAL, DIMENSION(SIZE(PBLD)) :: ZDF_ROOF       ! free-snow fraction 
00100 REAL, DIMENSION(SIZE(PBLD)) :: ZDF_ROAD       ! on the surface
00101 LOGICAL, DIMENSION(SIZE(PBLD)) :: GMASK       ! .false. (= no snow precip.)
00102 !
00103 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WA_TO_WB   ! longwave exchange coefficients
00104 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WA_TO_R
00105 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WB_TO_R
00106 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WA_TO_NR
00107 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WB_TO_NR
00108 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WA_TO_G
00109 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WB_TO_G
00110 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WA_TO_WIN
00111 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WB_TO_WIN
00112 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_R_TO_WA
00113 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_R_TO_WB
00114 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_R_TO_WIN
00115 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_G_TO_WA
00116 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_G_TO_WB
00117 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_G_TO_WIN
00118 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_S_TO_WA
00119 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_S_TO_WB
00120 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_S_TO_R
00121 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_S_TO_NR
00122 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_S_TO_G
00123 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_S_TO_WIN
00124 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WIN_TO_WA
00125 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WIN_TO_WB
00126 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WIN_TO_R
00127 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WIN_TO_NR
00128 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WIN_TO_G
00129 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_NR_TO_WA
00130 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_NR_TO_WB
00131 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_NR_TO_WIN
00132 !
00133 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_RAD          ! incoming LW to mimic
00134 !                                               ! radiation behaviour of town
00135 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_LW_WALL     ! longwave absorbed by walls
00136 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_LW_ROAD     ! longwave absorbed by roads
00137 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_LW_ROOF     ! longwave absorbed by roofs
00138 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_LW_SNOW_ROAD! longwave absorbed by snow
00139 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_LW_SNOW_ROOF! on roads and roofs
00140 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_LW_GARDEN   ! longwave absorbed by gardens
00141 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_LW_GREENROOF! longwave absorbed by green roofs
00142 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_UP           ! outgoing longwave
00143 !
00144 REAL, DIMENSION(SIZE(PBLD)) :: ZT_SKY
00145 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00146 !
00147 !-------------------------------------------------------------------------------
00148 !
00149 !* snow fractions
00150 !  --------------
00151 !
00152 IF (LHOOK) CALL DR_HOOK('AVERAGED_TSRAD_TEB',0,ZHOOK_HANDLE)
00153 GMASK(:) = .FALSE.
00154  CALL SNOW_FRAC_ROAD(TSNOW_ROAD%WSNOW(:,1,1),GMASK,ZDN_ROAD,ZDF_ROAD)
00155  CALL SNOW_FRAC_ROOF(TSNOW_ROOF%WSNOW(:,1,1),GMASK,ZDN_ROOF,ZDF_ROOF)
00156 !
00157 ! fixed incoming LW (W/m2)
00158 ZLW_RAD(:)= XSTEFAN * (PTS_ROAD(:) ** 4)
00159 !
00160 ! LW absorbed by roofs
00161 ZABS_LW_ROOF(:) = PEMIS_ROOF(:) * (ZLW_RAD(:) - XSTEFAN * PTS_ROOF(:)**4)
00162 !
00163 !* LW absorbed by snow on roof
00164 ZABS_LW_SNOW_ROOF(:) = TSNOW_ROOF%EMIS(:,1) * (ZLW_RAD(:) - XSTEFAN * TSNOW_ROOF%TS(:,1)**4)
00165 !
00166 !* town averaged emissivity
00167 PEMIS(:) = PBLD(:) * (1.-PFRAC_GR(:)) * (ZDF_ROOF(:)*PEMIS_ROOF     (:)    &
00168                                        + ZDN_ROOF(:)*TSNOW_ROOF%EMIS(:,1)) &
00169          + PBLD(:) *     PFRAC_GR(:)  *              PEMIS_GREENROOF(:)
00170 
00171 !
00172 !* long-wave trapping coefficients
00173 !  -------------------------------
00174 !
00175    ZT_SKY(:) = (ZLW_RAD(:)/XSTEFAN)**0.25
00176    !
00177    CALL URBAN_LW_COEF(PGR, PBLD, ZLW_RAD,                                &
00178                       PEMIS_ROAD, PSVF_ROAD, PEMIS_WALL, PSVF_WALL,      &
00179                       PEMIS_GARDEN, PROAD, PGARDEN,                      &
00180                       TSNOW_ROAD%EMIS(:,1),                              &
00181                       PTS_ROAD, PTS_WALL_A, PTS_WALL_B,                  &
00182                       PTS_ROAD, PTS_GARDEN, PT_WIN1,                     &  
00183                       ZLW_WA_TO_WB, ZLW_WA_TO_R, ZLW_WB_TO_R,            &
00184                       ZLW_WA_TO_NR,ZLW_WB_TO_NR,                         &
00185                       ZLW_WA_TO_G, ZLW_WB_TO_G,                          &
00186                       ZLW_WA_TO_WIN, ZLW_WB_TO_WIN,                      &
00187                       ZLW_R_TO_WA, ZLW_R_TO_WB, ZLW_R_TO_WIN,            &
00188                       ZLW_G_TO_WA, ZLW_G_TO_WB, ZLW_G_TO_WIN,            &
00189                       ZLW_S_TO_WA, ZLW_S_TO_WB, ZLW_S_TO_R,              &
00190                       ZLW_S_TO_NR, ZLW_S_TO_G, ZLW_S_TO_WIN,             &
00191                       ZLW_WIN_TO_WA, ZLW_WIN_TO_WB, ZLW_WIN_TO_R,        &
00192                       ZLW_WIN_TO_NR, ZLW_WIN_TO_G,                       &
00193                       ZLW_NR_TO_WA, ZLW_NR_TO_WB, ZLW_NR_TO_WIN          )
00194    !
00195    !
00196    !* town averaged emissivity
00197    !  ------------------------
00198    !
00199    PEMIS(:) =  PEMIS(:)                                                    &
00200               + PROAD(:)*PSVF_ROAD(:)* (ZDF_ROAD(:)* PEMIS_ROAD(:)         &
00201                                       + ZDN_ROAD(:)* TSNOW_ROAD%EMIS(:,1)) &
00202               + PWALL_O_HOR(:)       * PSVF_WALL(:)   * PEMIS_WALL(:)      &
00203               + PGARDEN(:)           * PSVF_GARDEN(:) * PEMIS_GARDEN(:)
00204    
00205    !
00206    ! LW absorbed by roads
00207    ZABS_LW_ROAD(:) =  ZLW_S_TO_R  (:) * (ZT_SKY    (:) - PTS_ROAD(:)) &
00208                     + ZLW_WA_TO_R (:) * (PTS_WALL_A(:) - PTS_ROAD(:)) &
00209                     + ZLW_WB_TO_R (:) * (PTS_WALL_B(:) - PTS_ROAD(:)) &
00210                     + ZLW_WIN_TO_R(:) * (PT_WIN1   (:) - PTS_ROAD(:))
00211    
00212    !
00213    ! LW absorbed by walls
00214    ZABS_LW_WALL(:) =( ZLW_S_TO_WA(:)  * (ZT_SKY(:)    - PTS_WALL_A(:)) &
00215                     + ZLW_R_TO_WA(:)  * (PTS_ROAD(:)  - PTS_WALL_A(:)) &
00216                     + ZLW_G_TO_WA(:)  * (PTS_GARDEN(:)- PTS_WALL_A(:)) &
00217                     + ZLW_WIN_TO_WA(:)* (PT_WIN1(:)   - PTS_WALL_A(:)) &
00218                     + ZLW_S_TO_WB(:)  * (ZT_SKY(:)    - PTS_WALL_B(:)) &
00219                     + ZLW_R_TO_WB(:)  * (PTS_ROAD(:)  - PTS_WALL_B(:)) &
00220                     + ZLW_G_TO_WB(:)  * (PTS_GARDEN(:)- PTS_WALL_B(:)) &
00221                     + ZLW_WIN_TO_WB(:)* (PT_WIN1(:)   - PTS_WALL_B(:)))&
00222                    * 0.5
00223    
00224    !
00225    !* LW absorbed by snow on road
00226    ZABS_LW_SNOW_ROAD(:) =  ZLW_S_TO_R   (:) * (ZT_SKY(:)     - TSNOW_ROAD%TS(:,1)) &
00227                          + ZLW_WA_TO_NR (:) * (PTS_WALL_A(:) - TSNOW_ROAD%TS(:,1)) &
00228                          + ZLW_WB_TO_NR (:) * (PTS_WALL_B(:) - TSNOW_ROAD%TS(:,1)) &
00229                          + ZLW_WIN_TO_NR(:) * (PT_WIN1(:)    - TSNOW_ROAD%TS(:,1))
00230    !
00231    !* LW absorbed by gardens
00232    ZABS_LW_GARDEN(:) =  ZLW_S_TO_G  (:)*(ZT_SKY    (:)-PTS_GARDEN(:)) &
00233                       + ZLW_WA_TO_G (:)*(PTS_WALL_A(:)-PTS_GARDEN(:)) &
00234                       + ZLW_WB_TO_G (:)*(PTS_WALL_B(:)-PTS_GARDEN(:)) &
00235                       + ZLW_WIN_TO_G(:)*(PT_WIN1   (:)-PTS_GARDEN(:))
00236    !
00237    !* LW absorbed by green roofs
00238 ZABS_LW_GREENROOF(:) = PEMIS_GREENROOF(:) * (ZLW_RAD(:) - XSTEFAN * PTS_GREENROOF(:)** 4)
00239    
00240 !
00241 !* outgoing longwave radiation
00242 ZLW_UP(:) = ZLW_RAD(:)                                                     &
00243           - ( PBLD(:) *(1.-PFRAC_GR(:))*ZDF_ROOF(:)*ZABS_LW_ROOF     (:)   &
00244              +PBLD(:) *(1.-PFRAC_GR(:))*ZDN_ROOF(:)*ZABS_LW_SNOW_ROOF(:)   &
00245              +PBLD(:) *    PFRAC_GR(:)             *ZABS_LW_GREENROOF(:)   &
00246              +PROAD(:)                 *ZDF_ROAD(:)*ZABS_LW_ROAD     (:)   &
00247              +PROAD(:)                 *ZDN_ROAD(:)*ZABS_LW_SNOW_ROAD(:)   &
00248              +PWALL_O_HOR(:)                       *ZABS_LW_WALL     (:)   &
00249              +PGARDEN(:)                           *ZABS_LW_GARDEN   (:))
00250 !
00251 !* town radiative surface temperature
00252 PTSRAD(:)   = ((ZLW_UP(:) - ZLW_RAD(:)*(1.-PEMIS(:))) /PEMIS(:)/XSTEFAN)**0.25
00253 !
00254 IF (LHOOK) CALL DR_HOOK('AVERAGED_TSRAD_TEB',1,ZHOOK_HANDLE)
00255 !-------------------------------------------------------------------------------
00256 !
00257 END SUBROUTINE AVERAGED_TSRAD_TEB