SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/urban_lw_coef.F90
Go to the documentation of this file.
00001 !   ##########################################################################
00002     SUBROUTINE URBAN_LW_COEF(PGR, PBLD, PLW_RAD,                                 &
00003                              PEMIS_R, PSVF_R, PEMIS_W, PSVF_W, PEMIS_G,          &
00004                              PROAD, PGARDEN, PESNOW_R,                           &
00005                              PTS_SR, PTS_W_A, PTS_W_B, PTS_R, PTS_G, PTS_WIN,    &  
00006                              PLW_WA_TO_WB, PLW_WA_TO_R, PLW_WB_TO_R,             &
00007                              PLW_WA_TO_NR,PLW_WB_TO_NR,                          &
00008                              PLW_WA_TO_G, PLW_WB_TO_G,                           &
00009                              PLW_WA_TO_WIN, PLW_WB_TO_WIN,                       &
00010                              PLW_R_TO_WA, PLW_R_TO_WB, PLW_R_TO_WIN,             &
00011                              PLW_G_TO_WA, PLW_G_TO_WB, PLW_G_TO_WIN,             &
00012                              PLW_S_TO_WA, PLW_S_TO_WB, PLW_S_TO_R,               &
00013                              PLW_S_TO_NR, PLW_S_TO_G, PLW_S_TO_WIN,              &
00014                              PLW_WIN_TO_WA, PLW_WIN_TO_WB, PLW_WIN_TO_R,         &
00015                              PLW_WIN_TO_NR, PLW_WIN_TO_G,                        &
00016                              PLW_NR_TO_WA, PLW_NR_TO_WB, PLW_NR_TO_WIN           )
00017 !   ##########################################################################
00018 !
00019 !!****  *URBAN_LW_COEF*  
00020 !!
00021 !!    PURPOSE
00022 !!    -------
00023 !
00024 !     Computes the coefficients before each of the temperatures in the
00025 !     radiative budgets
00026 !         
00027 !     
00028 !!**  METHOD
00029 !     ------
00030 !
00031 !
00032 !
00033 !
00034 !
00035 !!    EXTERNAL
00036 !!    --------
00037 !!
00038 !!
00039 !!    IMPLICIT ARGUMENTS
00040 !!    ------------------
00041 !!
00042 !!    MODD_CST
00043 !!
00044 !!      
00045 !!    REFERENCE
00046 !!    ---------
00047 !!
00048 !!      
00049 !!    AUTHOR
00050 !!    ------
00051 !!
00052 !!      V. Masson           * Meteo-France *
00053 !!
00054 !!    MODIFICATIONS
00055 !!    -------------
00056 !!      Original    08/09/98 
00057 !-------------------------------------------------------------------------------
00058 !
00059 !*       0.     DECLARATIONS
00060 !               ------------
00061 !
00062 USE MODD_CSTS,ONLY : XSTEFAN
00063 USE MODD_SURF_PAR,ONLY : XUNDEF
00064 !
00065 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00066 USE PARKIND1  ,ONLY : JPRB
00067 !
00068 IMPLICIT NONE
00069 !
00070 !*      0.1    declarations of arguments
00071 !
00072 !
00073 !
00074 REAL, DIMENSION(:), INTENT(IN)  :: PGR      ! glazing ratio
00075 REAL, DIMENSION(:), INTENT(IN)  :: PBLD     ! building density
00076 REAL, DIMENSION(:), INTENT(IN)  :: PLW_RAD  ! incoming LW radiation
00077 REAL, DIMENSION(:), INTENT(IN)  :: PEMIS_R  ! road emissivity
00078 REAL, DIMENSION(:), INTENT(IN)  :: PSVF_R   ! road sky view factor
00079 REAL, DIMENSION(:), INTENT(IN)  :: PEMIS_W  ! wall emissivity
00080 REAL, DIMENSION(:), INTENT(IN)  :: PSVF_W   ! wall sky view factor
00081 REAL, DIMENSION(:), INTENT(IN)  :: PEMIS_G  ! GARDEN area emissivity
00082 REAL, DIMENSION(:), INTENT(IN)  :: PROAD    ! road fraction
00083 REAL, DIMENSION(:), INTENT(IN)  :: PGARDEN  ! GARDEN area fraction
00084 REAL, DIMENSION(:), INTENT(IN)  :: PESNOW_R ! road snow emissivity
00085 !
00086 REAL, DIMENSION(:), INTENT(IN)  :: PTS_W_A  ! wall A surface temperature
00087 REAL, DIMENSION(:), INTENT(IN)  :: PTS_W_B  ! wall B surface temperature
00088 REAL, DIMENSION(:), INTENT(IN)  :: PTS_R    ! road surface tempeature
00089 REAL, DIMENSION(:), INTENT(IN)  :: PTS_G    ! garden surface temperature
00090 REAL, DIMENSION(:), INTENT(IN)  :: PTS_WIN  ! window surface temperature
00091 REAL, DIMENSION(:), INTENT(IN)  :: PTS_SR   ! snow surface temperature
00092 !
00093 REAL, DIMENSION(:), INTENT(OUT) :: PLW_WA_TO_WB! L.W. interactions wall->opposite wall
00094 REAL, DIMENSION(:), INTENT(OUT) :: PLW_WA_TO_R  ! L.W. interactions wall->road for road balance 
00095 REAL, DIMENSION(:), INTENT(OUT) :: PLW_WB_TO_R  ! L.W. interactions wall->road for road balance 
00096 REAL, DIMENSION(:), INTENT(OUT) :: PLW_WA_TO_NR ! L.W. interactions wall->snow for snow balance
00097 REAL, DIMENSION(:), INTENT(OUT) :: PLW_WB_TO_NR ! L.W. interactions wall->snow for snow balance
00098 REAL, DIMENSION(:), INTENT(OUT) :: PLW_WA_TO_G  ! L.W. interactions wall->GARDEN areas for garden balance
00099 REAL, DIMENSION(:), INTENT(OUT) :: PLW_WB_TO_G  ! L.W. interactions wall->GARDEN areas for garden balance
00100 REAL, DIMENSION(:), INTENT(OUT) :: PLW_WA_TO_WIN! L.W. interactions wall->win for window balance
00101 REAL, DIMENSION(:), INTENT(OUT) :: PLW_WB_TO_WIN! L.W. interactions wall->win for window balance
00102 !
00103 REAL, DIMENSION(:), INTENT(OUT) :: PLW_R_TO_WA ! L.W. interactions road->wall for wall balance
00104 REAL, DIMENSION(:), INTENT(OUT) :: PLW_R_TO_WB ! L.W. interactions road->wall for wall balance
00105 REAL, DIMENSION(:), INTENT(OUT) :: PLW_R_TO_WIN  ! L.W. interactions road->win for win balance
00106 !
00107 REAL, DIMENSION(:), INTENT(OUT) :: PLW_G_TO_WA ! L.W. interactions GARDEN areas->wall for wall balance
00108 REAL, DIMENSION(:), INTENT(OUT) :: PLW_G_TO_WB ! L.W. interactions GARDEN areas->wall for wall balance
00109 REAL, DIMENSION(:), INTENT(OUT) :: PLW_G_TO_WIN  ! L.W. interactions GARDEN areas->road for window balance
00110 !
00111 REAL, DIMENSION(:), INTENT(OUT) :: PLW_S_TO_WA ! L.W. interactions sky->wall for wall balance
00112 REAL, DIMENSION(:), INTENT(OUT) :: PLW_S_TO_WB ! L.W. interactions sky->wall for wall balance
00113 REAL, DIMENSION(:), INTENT(OUT) :: PLW_S_TO_R  ! L.W. interactions sky->road for raod balance
00114 REAL, DIMENSION(:), INTENT(OUT) :: PLW_S_TO_NR ! L.W. interactions sky->snow for snow balance 
00115 REAL, DIMENSION(:), INTENT(OUT) :: PLW_S_TO_G  ! L.W. interactions sky->GARDEN areas for garden balance
00116 REAL, DIMENSION(:), INTENT(OUT) :: PLW_S_TO_WIN ! L.W. interactions sky->win for window balance
00117 !
00118 REAL, DIMENSION(:), INTENT(OUT) :: PLW_WIN_TO_WA ! L.W. interactions win->wall for wall balance
00119 REAL, DIMENSION(:), INTENT(OUT) :: PLW_WIN_TO_WB ! L.W. interactions win->wall for wall balance
00120 REAL, DIMENSION(:), INTENT(OUT) :: PLW_WIN_TO_R  ! L.W. interactions win->road for road balance
00121 REAL, DIMENSION(:), INTENT(OUT) :: PLW_WIN_TO_NR ! L.W. interactions win->GARDEN areas for snow balance
00122 REAL, DIMENSION(:), INTENT(OUT) :: PLW_WIN_TO_G  ! L.W. interactions win->GARDEN areas for garden balance
00123 !
00124 REAL, DIMENSION(:), INTENT(OUT) :: PLW_NR_TO_WA! L.W. interactions snow(road)->wall for wall balance
00125 REAL, DIMENSION(:), INTENT(OUT) :: PLW_NR_TO_WB! L.W. interactions snow(road)->wall for wall balance
00126 REAL, DIMENSION(:), INTENT(OUT) :: PLW_NR_TO_WIN ! L.W. interactions snow(road)->WIN areas for window balance
00127 !
00128 !*      0.2    declarations of local variables
00129 !
00130 REAL, DIMENSION(SIZE(PBLD))  :: ZT_S        ! sky temperature
00131 !
00132 REAL, DIMENSION(SIZE(PBLD))  :: ZEMIS_WIN
00133 REAL, DIMENSION(SIZE(PBLD))  :: ZF_W_W
00134 REAL, DIMENSION(SIZE(PBLD))  :: ZF_R_W
00135 REAL, DIMENSION(SIZE(PBLD))  :: ZF_R_WIN
00136 REAL, DIMENSION(SIZE(PBLD))  :: ZF_W_R
00137 REAL, DIMENSION(SIZE(PBLD))  :: ZF_W_G
00138 REAL, DIMENSION(SIZE(PBLD))  :: ZF_W_WIN
00139 REAL, DIMENSION(SIZE(PBLD))  :: ZF_W_NR
00140 REAL, DIMENSION(SIZE(PBLD))  :: ZF_WIN_W
00141 REAL, DIMENSION(SIZE(PBLD))  :: ZF_WIN_R
00142 REAL, DIMENSION(SIZE(PBLD))  :: ZF_WIN_G
00143 REAL, DIMENSION(SIZE(PBLD))  :: ZF_WIN_NR
00144 REAL, DIMENSION(SIZE(PBLD))  :: ZF_G_W
00145 REAL, DIMENSION(SIZE(PBLD))  :: ZF_G_WIN
00146 !
00147 REAL :: ZE1, ZE2, ZF, ZT1, ZT2, ZLW
00148 ZLW(ZE1,ZE2,ZF,ZT1,ZT2) = 4.*XSTEFAN*ZE1*ZE2*ZF*((ZT1+ZT2)/2.)**3
00149 !
00150 INTEGER :: JJ
00151 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00152 !-------------------------------------------------------------------------------
00153 IF (LHOOK) CALL DR_HOOK('URBAN_LW_COEF',0,ZHOOK_HANDLE)
00154 !
00155 ZT_S(:) = (PLW_RAD(:)/XSTEFAN)**0.25
00156 !
00157 DO JJ=1,SIZE(PROAD)
00158   !
00159   ZEMIS_WIN(JJ) = 0.84 !from Energy Plus Engineering Reference, p219
00160     ! see http://apps1.eere.energy.gov/buildings/energyplus/
00161   !
00162   ZF_W_R(JJ)     = PSVF_W(JJ) * (PROAD(JJ)  /(1.-PBLD(JJ)))
00163   ZF_W_G(JJ)     = PSVF_W(JJ) * (PGARDEN(JJ)/(1.-PBLD(JJ)))
00164   ZF_W_NR(JJ)    = PSVF_W(JJ)    
00165   !  
00166   ZF_WIN_R(JJ)   = ZF_W_R(JJ)
00167   ZF_WIN_G(JJ)   = ZF_W_G(JJ)
00168   ZF_WIN_NR(JJ)  = ZF_W_NR(JJ)
00169   !
00170   ZF_R_W(JJ)     = (1 - PSVF_R(JJ))*(1.-PGR(JJ)) * 0.5
00171   ZF_R_WIN(JJ)   = (1 - PSVF_R(JJ))*PGR(JJ)
00172   !
00173   ZF_G_W(JJ)     = ZF_R_W(JJ) 
00174   ZF_G_WIN(JJ)   = ZF_R_WIN(JJ)    
00175   !
00176   ZF_WIN_W(JJ)   = (1.-2.*PSVF_W(JJ))*(1.-PGR(JJ))
00177   ZF_W_W  (JJ)   = (1.-2.*PSVF_W(JJ))*(1.-PGR(JJ))
00178   ZF_W_WIN(JJ)   = (1.-2.*PSVF_W(JJ))*PGR(JJ)
00179   !
00180   !
00181   PLW_WA_TO_WB(JJ)=ZLW(PEMIS_W(JJ),PEMIS_W(JJ),ZF_W_W(JJ),PTS_W_A(JJ),PTS_W_B(JJ))
00182   !
00183   PLW_WA_TO_R(JJ) = ZLW(PEMIS_W(JJ),PEMIS_R(JJ),ZF_R_W(JJ),PTS_W_A(JJ),PTS_R(JJ))
00184   PLW_WB_TO_R(JJ) = ZLW(PEMIS_W(JJ),PEMIS_R(JJ),ZF_R_W(JJ),PTS_W_B(JJ),PTS_R(JJ))
00185   PLW_R_TO_WA(JJ) = ZLW(PEMIS_R(JJ),PEMIS_W(JJ),ZF_W_R(JJ),PTS_R(JJ),PTS_W_A(JJ))
00186   PLW_R_TO_WB(JJ) = ZLW(PEMIS_R(JJ),PEMIS_W(JJ),ZF_W_R(JJ),PTS_R(JJ),PTS_W_B(JJ))
00187   !
00188   PLW_WA_TO_G(JJ) = ZLW(PEMIS_W(JJ),PEMIS_G(JJ),ZF_G_W(JJ),PTS_W_A(JJ),PTS_G(JJ))
00189   PLW_WB_TO_G(JJ) = ZLW(PEMIS_W(JJ),PEMIS_G(JJ),ZF_G_W(JJ),PTS_W_B(JJ),PTS_G(JJ))
00190   PLW_G_TO_WA(JJ) = ZLW(PEMIS_G(JJ),PEMIS_W(JJ),ZF_W_G(JJ),PTS_G(JJ),PTS_W_A(JJ))
00191   PLW_G_TO_WB(JJ) = ZLW(PEMIS_G(JJ),PEMIS_W(JJ),ZF_W_G(JJ),PTS_G(JJ),PTS_W_B(JJ))
00192   !
00193   !
00194   IF (PTS_SR(JJ) .EQ. XUNDEF) THEN
00195     PLW_WA_TO_NR (JJ) = 0.
00196     PLW_WB_TO_NR (JJ) = 0.
00197     PLW_NR_TO_WA (JJ) = 0.
00198     PLW_NR_TO_WB (JJ) = 0.
00199     !
00200     PLW_WIN_TO_NR(JJ) = 0.
00201     PLW_NR_TO_WIN(JJ) = 0
00202     !     
00203     PLW_S_TO_NR  (JJ) = 0.
00204   ELSE
00205     PLW_WA_TO_NR(JJ) = ZLW(PEMIS_W(JJ),PESNOW_R(JJ),ZF_R_W(JJ),PTS_W_A(JJ),PTS_SR(JJ))
00206     PLW_WB_TO_NR(JJ) = ZLW(PEMIS_W(JJ),PESNOW_R(JJ),ZF_R_W(JJ),PTS_W_B(JJ),PTS_SR(JJ))
00207     PLW_NR_TO_WA(JJ) = ZLW(PESNOW_R(JJ),PEMIS_W(JJ),ZF_W_NR(JJ),PTS_SR(JJ),PTS_W_A(JJ))    
00208     PLW_NR_TO_WB(JJ) = ZLW(PESNOW_R(JJ),PEMIS_W(JJ),ZF_W_NR(JJ),PTS_SR(JJ),PTS_W_B(JJ))    
00209     !
00210     PLW_WIN_TO_NR(JJ)= ZLW(ZEMIS_WIN(JJ),PESNOW_R(JJ),ZF_R_WIN(JJ),PTS_WIN(JJ),PTS_SR(JJ))
00211     PLW_NR_TO_WIN(JJ)= ZLW(PESNOW_R(JJ),ZEMIS_WIN(JJ),ZF_WIN_NR(JJ),PTS_SR(JJ),PTS_WIN(JJ))
00212     !
00213     PLW_S_TO_NR(JJ) = ZLW(1.,PESNOW_R(JJ),PSVF_R(JJ),ZT_S(JJ),PTS_SR(JJ))
00214   ENDIF
00215   !
00216   PLW_WIN_TO_R(JJ)= ZLW(ZEMIS_WIN(JJ),PEMIS_R(JJ),ZF_R_WIN(JJ),PTS_WIN(JJ),PTS_R(JJ))
00217   PLW_R_TO_WIN(JJ)= ZLW(PEMIS_R(JJ),ZEMIS_WIN(JJ),ZF_WIN_R(JJ),PTS_R(JJ),PTS_WIN(JJ))
00218   !  
00219   PLW_WIN_TO_G(JJ)= ZLW(ZEMIS_WIN(JJ),PEMIS_G(JJ),ZF_G_WIN(JJ),PTS_WIN(JJ),PTS_G(JJ))
00220   PLW_G_TO_WIN(JJ)= ZLW(PEMIS_G(JJ),ZEMIS_WIN(JJ),ZF_WIN_G(JJ),PTS_G(JJ),PTS_WIN(JJ))
00221   !  
00222   PLW_WIN_TO_WA(JJ) = ZLW(ZEMIS_WIN(JJ),PEMIS_W(JJ),ZF_W_WIN(JJ),PTS_WIN(JJ),PTS_W_A(JJ))
00223   PLW_WIN_TO_WB(JJ) = ZLW(ZEMIS_WIN(JJ),PEMIS_W(JJ),ZF_W_WIN(JJ),PTS_WIN(JJ),PTS_W_B(JJ))
00224   PLW_WA_TO_WIN(JJ) = ZLW(PEMIS_W(JJ),ZEMIS_WIN(JJ),ZF_WIN_W(JJ),PTS_W_A(JJ),PTS_WIN(JJ))
00225   PLW_WB_TO_WIN(JJ) = ZLW(PEMIS_W(JJ),ZEMIS_WIN(JJ),ZF_WIN_W(JJ),PTS_W_B(JJ),PTS_WIN(JJ))
00226   !
00227   PLW_S_TO_WIN(JJ) = ZLW(1.,ZEMIS_WIN(JJ),PSVF_W(JJ),ZT_S(JJ),PTS_WIN(JJ))
00228   !
00229   PLW_S_TO_WA(JJ)  = ZLW(1.,PEMIS_W(JJ),PSVF_W(JJ),ZT_S(JJ),PTS_W_A(JJ))
00230   PLW_S_TO_WB(JJ)  = ZLW(1.,PEMIS_W(JJ),PSVF_W(JJ),ZT_S(JJ),PTS_W_B(JJ))
00231   !
00232   PLW_S_TO_G(JJ)  = ZLW(1.,PEMIS_G(JJ),PSVF_R(JJ),ZT_S(JJ),PTS_G(JJ))
00233   PLW_S_TO_R(JJ)  = ZLW(1.,PEMIS_R(JJ),PSVF_R(JJ),ZT_S(JJ),PTS_R(JJ))  
00234   PLW_S_TO_NR(JJ) = ZLW(1.,PESNOW_R(JJ),PSVF_R(JJ),ZT_S(JJ),PTS_SR(JJ))
00235   !
00236 ENDDO
00237 !-------------------------------------------------------------------------------
00238 IF (LHOOK) CALL DR_HOOK('URBAN_LW_COEF',1,ZHOOK_HANDLE)
00239 !
00240 END SUBROUTINE URBAN_LW_COEF
00241