SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/averaged_albedo_teb.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE AVERAGED_ALBEDO_TEB(HBEM, HROAD_DIR, HWALL_OPT,     &
00003                        PZENITH, PAZIM,                               &
00004                        PBLD, PGARDEN, PROAD_DIR, PROAD, PFRAC_GR,    &
00005                        PWALL_O_HOR, PCAN_HW_RATIO,                   &
00006                        PALB_ROOF,                                    &
00007                        PALB_ROAD, PSVF_ROAD,                         &
00008                        PALB_WALL, PSVF_WALL,                         &
00009                        PALB_GARDEN, PSVF_GARDEN,                     &
00010                        PALB_GREENROOF,                               &
00011                        TSNOW_ROOF, TSNOW_ROAD,                       &
00012                        PGR, PSHGC, PSHGC_SH, PABS_WIN, PALB_WIN,     &
00013                        OSHAD_DAY,                                    &
00014                        PDIR_ALB_TOWN, PSCA_ALB_TOWN, PTRAN_WIN       )  
00015 !     ###################################################
00016 !
00017 !!**** *AVERAGED_ALBEDO_TEB* computes averaged albedo 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 !!
00042 !!    Original    01/2004
00043 !     C. de Munck & A. Lemonsu   09/2011 Greenroofs
00044 !!    G. Pigeon                  09/2012 PTRAN_WIN as arguments
00045 !----------------------------------------------------------------------------
00046 !
00047 !*    0.     DECLARATION
00048 !            -----------
00049 !
00050 USE MODD_SURF_PAR, ONLY : XUNDEF
00051 USE MODD_TYPE_SNOW
00052 !
00053 USE MODI_URBAN_SOLAR_ABS
00054 USE MODE_SURF_SNOW_FRAC
00055 !
00056 !
00057 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00058 USE PARKIND1  ,ONLY : JPRB
00059 !
00060 IMPLICIT NONE
00061 !
00062 !*    0.1    Declaration of arguments
00063 !            ------------------------
00064 !
00065  CHARACTER(LEN=3),   INTENT(IN) :: HBEM          ! Building Energy model 'DEF' or 'BEM'
00066  CHARACTER(LEN=4),   INTENT(IN) :: HROAD_DIR     ! road direction options
00067               ! 'UNIF' : classical TEB version, all roads uniformely present
00068               ! 'ORIE' : specified road ORIEntation 
00069               !          (in fact many roads  direction
00070               !          possible because there can be many TEB patches)
00071  CHARACTER(LEN=4),   INTENT(IN) :: HWALL_OPT     ! wall options
00072               ! 'UNIF' : classical TEB version, all walls are uniform
00073               ! 'TWO ' : the two opposite walls receive different solar energy
00074 REAL, DIMENSION(:), INTENT(IN) :: PZENITH       ! zenithal solar angle
00075 REAL, DIMENSION(:), INTENT(IN) :: PAZIM         ! solar azimuthal angle
00076 !                                               ! (radian from N, clockwise)
00077 !
00078 REAL, DIMENSION(:), INTENT(IN) :: PBLD          ! building fraction
00079 REAL, DIMENSION(:), INTENT(IN) :: PGARDEN       ! green area fraction
00080 REAL, DIMENSION(:), INTENT(IN) :: PROAD_DIR     ! Road direction
00081                                                 ! (° from N, clockwise)
00082 REAL, DIMENSION(:), INTENT(IN) :: PROAD         ! road fraction
00083 REAL, DIMENSION(:), INTENT(IN) :: PFRAC_GR      ! fraction of greenroof
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(IN) :: PCAN_HW_RATIO ! canyon height/width ratio
00089 !
00090 REAL, DIMENSION(:), INTENT(IN) :: PALB_ROOF     ! roof albedo
00091 REAL, DIMENSION(:), INTENT(IN) :: PALB_ROAD     ! road albedo
00092 REAL, DIMENSION(:), INTENT(IN) :: PALB_WALL     ! wall albedo
00093 REAL, DIMENSION(:), INTENT(IN) :: PALB_GARDEN   ! green areas albedo
00094 REAL, DIMENSION(:), INTENT(IN) :: PALB_GREENROOF! green roof albedo
00095 TYPE(SURF_SNOW),    INTENT(IN) :: TSNOW_ROOF    ! snow on roofs
00096 TYPE(SURF_SNOW),    INTENT(IN) :: TSNOW_ROAD    ! snow on roads
00097 !
00098 REAL, DIMENSION(:), INTENT(IN) :: PGR           ! Glazing ratio
00099 REAL, DIMENSION(:), INTENT(IN) :: PSHGC         ! Window solar transmittance
00100 REAL, DIMENSION(:), INTENT(IN) :: PSHGC_SH      ! Window + shading solar heat gain coef.
00101 !
00102 REAL, DIMENSION(:), INTENT(IN) :: PABS_WIN      ! Window solar absortance
00103 REAL, DIMENSION(:), INTENT(OUT):: PALB_WIN      ! Window solar reflectance
00104 LOGICAL, DIMENSION(:),INTENT(IN) :: OSHAD_DAY   ! has shading been necessary this day ?
00105 !
00106 REAL, DIMENSION(:), INTENT(OUT):: PDIR_ALB_TOWN ! direct albedo
00107 REAL, DIMENSION(:), INTENT(OUT):: PSCA_ALB_TOWN ! diffuse albedo
00108 REAL, DIMENSION(:), INTENT(IN) :: PTRAN_WIN     ! window transmittance
00109 !
00110 !
00111 !*    0.2    Declaration of local variables
00112 !            ------------------------------
00113 !
00114 REAL, DIMENSION(SIZE(PBLD)) :: ZDN_ROOF       ! snow fraction 
00115 REAL, DIMENSION(SIZE(PBLD)) :: ZDN_ROAD       ! on the surface
00116 REAL, DIMENSION(SIZE(PBLD)) :: ZDF_ROOF       ! free-snow fraction 
00117 REAL, DIMENSION(SIZE(PBLD)) :: ZDF_ROAD       ! on the surface
00118 LOGICAL, DIMENSION(SIZE(PBLD)) :: GMASK       ! .false. (= no snow precip.)
00119 !
00120 !
00121 REAL, DIMENSION(SIZE(PBLD)) :: ZDIR_SW        ! direct and diffuse shortwave radiation
00122 REAL, DIMENSION(SIZE(PBLD)) :: ZSCA_SW        ! to mimic radiation behaviour of town
00123 !
00124 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_SW_WALL_A     ! shortwave absorbed by walls
00125 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_SW_WALL_B     ! shortwave absorbed by walls
00126 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_SW_ROAD       ! shortwave absorbed by roads
00127 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_SW_ROOF       ! shortwave absorbed by roofs
00128 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_SW_GARDEN     ! shortwave absorbed by green areas
00129 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_SW_GREENROOF  ! shortwave absorbed by green roofs
00130 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_SW_SNOW_ROAD  ! shortwave absorbed by snow
00131 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_SW_SNOW_ROOF  ! on roads, roofs,
00132 !
00133 REAL, DIMENSION(SIZE(PBLD)) :: ZREC_SW_ROAD       ! shortwave received by roads
00134 REAL, DIMENSION(SIZE(PBLD)) :: ZREC_SW_WALL_A     ! shortwave received by walls
00135 REAL, DIMENSION(SIZE(PBLD)) :: ZREC_SW_WALL_B     ! shortwave received by walls
00136 REAL, DIMENSION(SIZE(PBLD)) :: ZREC_SW_GARDEN     ! shortwave received by green areas
00137 REAL, DIMENSION(SIZE(PBLD)) :: ZREC_SW_SNOW_ROAD  ! shortwave received by snow on roads
00138 !
00139 REAL, DIMENSION(SIZE(PBLD)) :: ZSW_RAD_GARDEN ! total solar radiation reaching green areas
00140 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_SW_WIN       ! shortwave absorbed by walls
00141 REAL, DIMENSION(SIZE(PBLD)) :: ZREC_SW_WIN       ! shortwave received by walls
00142 REAL, DIMENSION(SIZE(PBLD)) :: ZREF_SW_GRND      !
00143 REAL, DIMENSION(SIZE(PBLD)) :: ZREF_SW_FAC       !
00144 REAL, DIMENSION(SIZE(PBLD)) :: ZTR_SW_WIN        !
00145 REAL, DIMENSION(SIZE(PBLD)) :: ZE_SHADING        !
00146 LOGICAL, DIMENSION(SIZE(PBLD)) :: GSHAD_DAY
00147 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00148 !-------------------------------------------------------------------------------
00149 !
00150 !* snow fractions
00151 !  --------------
00152 !
00153 IF (LHOOK) CALL DR_HOOK('AVERAGED_ALBEDO_TEB',0,ZHOOK_HANDLE)
00154 GMASK(:) = .FALSE.
00155  CALL SNOW_FRAC_ROAD(TSNOW_ROAD%WSNOW(:,1,1),GMASK,ZDN_ROAD,ZDF_ROAD)
00156  CALL SNOW_FRAC_ROOF(TSNOW_ROOF%WSNOW(:,1,1),GMASK,ZDN_ROOF,ZDF_ROOF)
00157 !
00158 !
00159 !* town  direct and diffuse albedo
00160 !  -------------------------------
00161 !
00162 ZDIR_SW=1.
00163 ZSCA_SW=1.
00164 GSHAD_DAY=.FALSE.
00165 IF (SIZE(OSHAD_DAY)>0) GSHAD_DAY=OSHAD_DAY
00166 !
00167  CALL URBAN_SOLAR_ABS(HBEM, HROAD_DIR, HWALL_OPT,                   &
00168                      ZDIR_SW, ZSCA_SW, PZENITH, PAZIM,             &
00169                      PBLD, PGARDEN, PROAD_DIR, PROAD, PFRAC_GR,    &
00170                      PWALL_O_HOR, PCAN_HW_RATIO,                   &
00171                      PALB_ROOF,                                    &
00172                      PALB_ROAD, PSVF_ROAD, PALB_WALL, PSVF_WALL,   &
00173                      PALB_GARDEN, PSVF_GARDEN,                     &
00174                      PALB_GREENROOF,                               &
00175                      TSNOW_ROOF%ALB(:,1), TSNOW_ROAD%ALB(:,1),     &
00176                      ZDN_ROOF, ZDF_ROOF, ZDN_ROAD, ZDF_ROAD,       &
00177                      PGR, PABS_WIN, PSHGC, PSHGC_SH, PALB_WIN,     &
00178                      ZABS_SW_ROOF, ZABS_SW_ROAD,                   &
00179                      ZABS_SW_WALL_A, ZABS_SW_WALL_B,               &
00180                      ZABS_SW_GARDEN, ZABS_SW_GREENROOF,            &
00181                      ZABS_SW_SNOW_ROOF, ZABS_SW_SNOW_ROAD,         &
00182                      ZREC_SW_ROAD,  ZREC_SW_SNOW_ROAD,             &
00183                      ZREC_SW_WALL_A, ZREC_SW_WALL_B,               &
00184                      ZREC_SW_GARDEN,                               &
00185                      PDIR_ALB_TOWN, PSCA_ALB_TOWN,                 &
00186                      ZSW_RAD_GARDEN, ZABS_SW_WIN, ZREC_SW_WIN,     &
00187                      PTRAN_WIN,                                    &
00188                      ZREF_SW_GRND, ZREF_SW_FAC, ZTR_SW_WIN,        &
00189                      ZE_SHADING, GSHAD_DAY, GMASK                  )
00190 IF (LHOOK) CALL DR_HOOK('AVERAGED_ALBEDO_TEB',1,ZHOOK_HANDLE)
00191 !
00192 !-------------------------------------------------------------------------------
00193 !
00194 END SUBROUTINE AVERAGED_ALBEDO_TEB