!-------------------------------------- LICENCE BEGIN ------------------------------------
!Environment Canada - Atmospheric Science and Technology License/Disclaimer,
! version 3; Last Modified: May 7, 2008.
!This is free but copyrighted software; you can use/redistribute/modify it under the terms
!of the Environment Canada - Atmospheric Science and Technology License/Disclaimer
!version 3 or (at your option) any later version that should be found at:
!http://collaboration.cmc.ec.gc.ca/science/rpn.comm/license.html
!
!This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
!without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
!See the above mentioned License/Disclaimer for more details.
!You should have received a copy of the License/Disclaimer along with this software;
!if not, you can write to: EC-RPN COMM Group, 2121 TransCanada, suite 500, Dorval (Quebec),
!CANADA, H9P 1J3; or send e-mail to service.rpn@ec.gc.ca
!-------------------------------------- LICENCE END --------------------------------------
! ##########################################################################
SUBROUTINE ROAD_WALL_LAYER_E_BUDGET(PT_ROAD, PT_WALL, PQSAT_ROAD, &,4
PT_CANYON, PQ_CANYON, &
PTA, PQA, PPS, &
PLW_RAD, PTSTEP, &
PH_TRAFFIC, PLE_TRAFFIC, &
PBLD, PWALL_O_ROAD, &
PEMIS_ROAD, PSVF_ROAD, &
PHC_ROAD,PTC_ROAD,PD_ROAD, &
PEMIS_WALL, PSVF_WALL, &
PHC_WALL,PTC_WALL,PD_WALL, &
PTI_BLD, PAC_BLD, &
PDELT_ROAD, PDN_ROAD, &
PTSNOW_ROAD, PESNOW_ROAD, &
PGSNOW_ROAD, PHSNOW_ROAD, PLESNOW_ROAD, &
PRHOA, PAC_WALL, &
PAC_ROAD, PAC_ROAD_WAT, PAC_TOP, &
PABS_SW_ROAD, PABS_SW_WALL, &
PABS_LW_ROAD, PABS_LW_WALL, &
PLW_S_TO_R, PLW_S_TO_W )
! ##########################################################################
!
!!**** *ROAD_WALL_LAYER_E_BUDGET*
!!
!! PURPOSE
!! -------
!
! Computes the evoultion of roads and walls surface temperatures
!
!
!!** METHOD
! ------
!
! 6 : equations for evolution of Ts_road and Ts_wall simultaneously
! *************************************************************
!
! dTw_k(t) / dt = 1/(dw_k*Cw_k) * (- 2*Kw_k-1*(Tw_k-Tw_k-1)/(dw_k-1 +dw_k)
! - 2*Kw_k *(Tw_k-Tw_k+1)/(dw_k+1 +dw_k) )
!
! dTw_1(t) / dt = 1/(dw_1*Cw_1) * ( Rn_w - H_w - LE_w
! - 2*Kw_1*(Tw_1-Tw_2)/(dw_1 +dw_2) )
!
! dTr_1(t) / dt = 1/(dr_1*Cr_1) * ( Rn_r - H_r - LE_r
! - 2*Kr_1*(Tr_1-Tr_2)/(dr_1 +dr_2) )
!
! dTr_k(t) / dt = 1/(dr_k*Cr_k) * (- 2*Kr_k-1*(Tr_k-Tr_k-1)/(dr_k-1 +dr_k)
! - 2*Kr_k *(Tr_k-Tr_k+1)/(dr_k+1 +dr_k) )
!
! with
!
! K*_k = (d*_k+ d*_k+1)/(d*_k/k*_k+ d*_k+1/k*_k+1)
!
! Rn_w = abs_Rg_w
! - sigma * emis_w * Ts_w**4 (t+dt)
! + emis_w * SVF_w * LWR
! + sigma * emis_w * emis_r * SVF_w * Ts_r**4 (t+dt)
! + sigma * emis_w * emis_w * (1-2*SVF_w) * Ts_w**4 (t+dt)
! + emis_w (1-emis_r) * SVF_r * SVF_w * LWR
! + emis_w (1-emis_w) * SVF_w * (1-2*SVF_w) * LWR
! + sigma * emis_w * emis_w * (1-emis_r) * SVF_w * (1- SVF_r) * Ts_w**4 (t+dt)
! + sigma * emis_w * emis_w * (1-emis_w) * (1-2*SVF_w) * (1-2*SVF_w) * Ts_w**4 (t+dt)
! + sigma * emis_w * emis_r * (1-emis_w) * SVF_w * (1-2*SVF_w) * Ts_r**4 (t+dt)
!
! Rn_r = abs_Rg_r
! - sigma * emis_r * Ts_r**4 (t+dt)
! + emis_r * SVF_r * LWR
! + sigma * emis_r * emis_w * (1-SVF_r) * Ts_w**4 (t+dt)
! + emis_r (1-emis_w) * (1-SVF_r) * SVF_w * LWR
! + sigma * emis_r * emis_w * (1-emis_w) * (1-SVF_r) * (1-2*SVF_w) * Ts_w**4 (t+dt)
! + sigma * emis_r * emis_r * (1-emis_w) * (1-SVF_r) * SVF_w * Ts_r**4 (t+dt)
!
! H_w = rho Cp CH V ( Ts_w (t+dt) - Ta_canyon )
!
! LE_w = rho Lv CH V ( qs_w (t+dt) - qa_canyon )
!
! H_r = rho Cp CH V ( Ts_r (t+dt) - Ta_canyon )
!
! LE_r = rho Lv CH V ( qs_r (t+dt) - qa_canyon )
!
! with again
! AC_can * Swall/Sroad * Twall + AC_can * Troad + AC_top * Ta + H_traffic/rho/Cp/Sroad
! Ta_canyon = -------------------------------------------------------------------------------------
! AC_can * Swall/Sroad + AC_can + AC_top
!
!
! AC_can * delt_road * qsat(Troad) + AC_top * qa + LE_traffic/rho/Lv/Sroad
! qa_canyon = --------------------------------------------------------------------------
! AC_can * delt_road + AC_top
!
!
! where H_traffic and LE_traffic are scaled to road area.
!
!
! The system is implicited (or semi-implicited).
!
! ZIMPL=1 ---> implicit system
! ZIMPL=0.5 ---> semi-implicit system
! ZIMPL=0 ---> explicit system
!
!
!
!
!! EXTERNAL
!! --------
!!
!!
!! IMPLICIT ARGUMENTS
!! ------------------
!!
!! MODD_CST
!!
!!
!! REFERENCE
!! ---------
!!
!!
!! AUTHOR
!! ------
!!
!! V. Masson * Meteo-France *
!!
!! MODIFICATIONS
!! -------------
!! Original 23/01/98
!! 21/11/01 (V. Masson and A. Lemonsu) bug of latent flux
!! for very strong evaporation (all reservoir emptied
!! in one time-step)
!-------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!
USE MODD_CSTS
,ONLY : XCPD, XLVTT
!
USE MODE_THERMOS
!
USE MODI_URBAN_LW_COEF
USE MODI_TRIDIAG_GROUND
!
IMPLICIT NONE
!
!* 0.1 declarations of arguments
!
!
REAL, DIMENSION(:,:), INTENT(INOUT) :: PT_ROAD ! road layers temperatures
REAL, DIMENSION(:,:), INTENT(INOUT) :: PT_WALL ! wall layers temperatures
REAL, DIMENSION(:), INTENT(INOUT) :: PQSAT_ROAD ! q_sat(Ts)
REAL, DIMENSION(:), INTENT(OUT) :: PT_CANYON ! air canyon temperature
REAL, DIMENSION(:), INTENT(OUT) :: PQ_CANYON ! and specific humidity
REAL, DIMENSION(:), INTENT(IN) :: PTA ! atmospheric air temperature
REAL, DIMENSION(:), INTENT(IN) :: PQA ! and specific humidity at roof level
REAL, DIMENSION(:), INTENT(IN) :: PPS ! pressure at the surface
REAL, DIMENSION(:), INTENT(IN) :: PLW_RAD ! atmospheric infrared radiation
REAL, INTENT(IN) :: PTSTEP ! time step
REAL, DIMENSION(:), INTENT(IN) :: PH_TRAFFIC ! anthropogenic sensible
! ! heat fluxes due to traffic
REAL, DIMENSION(:), INTENT(IN) :: PLE_TRAFFIC ! anthropogenic latent
! ! heat fluxes due to traffic
REAL, DIMENSION(:), INTENT(IN) :: PBLD ! fraction of buildings
REAL, DIMENSION(:), INTENT(IN) :: PWALL_O_ROAD ! wall Surf. / road Surf.
REAL, DIMENSION(:), INTENT(IN) :: PEMIS_ROAD ! road emissivity
REAL, DIMENSION(:,:), INTENT(IN) :: PHC_ROAD ! heat capacity for road layers
REAL, DIMENSION(:,:), INTENT(IN) :: PTC_ROAD ! thermal conductivity for road layers
REAL, DIMENSION(:,:), INTENT(IN) :: PD_ROAD ! depth of road layers
REAL, DIMENSION(:), INTENT(IN) :: PSVF_ROAD ! road sky view factor
REAL, DIMENSION(:), INTENT(IN) :: PEMIS_WALL ! road emissivity
REAL, DIMENSION(:,:), INTENT(IN) :: PHC_WALL ! heat capacity for wall layers
REAL, DIMENSION(:,:), INTENT(IN) :: PTC_WALL ! thermal conductivity for wall layers
REAL, DIMENSION(:,:), INTENT(IN) :: PD_WALL ! depth of wall layers
REAL, DIMENSION(:), INTENT(IN) :: PSVF_WALL ! road sky view factor
REAL, DIMENSION(:), INTENT(IN) :: PTI_BLD ! inside building temperature
REAL, DIMENSION(:), INTENT(IN) :: PAC_BLD ! aerodynamical conductance
! inside the building itself
REAL, DIMENSION(:), INTENT(IN) :: PDELT_ROAD ! fraction of water
REAL, DIMENSION(:), INTENT(IN) :: PDN_ROAD ! road snow fraction
REAL, DIMENSION(:), INTENT(IN) :: PTSNOW_ROAD ! road snow temperature
REAL, DIMENSION(:), INTENT(IN) :: PESNOW_ROAD ! road snow emissivity
REAL, DIMENSION(:), INTENT(IN) :: PGSNOW_ROAD ! road snow conduction
! ! heat fluxes at mantel
! ! base
REAL, DIMENSION(:), INTENT(IN) :: PHSNOW_ROAD ! snow sensible heat
! ! fluxes at mantel top
REAL, DIMENSION(:), INTENT(IN) :: PLESNOW_ROAD ! snow latent heat
! ! fluxes at mantel top
REAL, DIMENSION(:), INTENT(IN) :: PRHOA ! rho
REAL, DIMENSION(:), INTENT(IN) :: PAC_WALL ! aerodynamical conductance
! ! between wall and canyon
REAL, DIMENSION(:), INTENT(IN) :: PAC_ROAD ! aerodynamical conductance
! ! between road and canyon
REAL, DIMENSION(:), INTENT(IN) :: PAC_ROAD_WAT ! aerodynamical conductance
! ! between road and canyon
! ! (for water)
REAL, DIMENSION(:), INTENT(IN) :: PAC_TOP ! aerodynamical conductance
! ! between atmosphere and
! ! canyon top
REAL, DIMENSION(:), INTENT(IN) :: PABS_SW_ROAD ! absorbed solar radiation
REAL, DIMENSION(:), INTENT(IN) :: PABS_SW_WALL ! absorbed solar radiation
REAL, DIMENSION(:), INTENT(OUT) :: PABS_LW_ROAD ! absorbed infrared rad.
REAL, DIMENSION(:), INTENT(OUT) :: PABS_LW_WALL ! absorbed infrared rad.
!
REAL, DIMENSION(:), INTENT(OUT) :: PLW_S_TO_R ! LW contribution from
REAL, DIMENSION(:), INTENT(OUT) :: PLW_S_TO_W ! sky to road and wall
!
!* 0.2 declarations of local variables
!
!
REAL :: ZIMPL=0.5 ! implicit coefficient
REAL :: ZEXPL=0.5 ! explicit coefficient
!
REAL, DIMENSION(SIZE(PTA),SIZE(PT_ROAD,2)+SIZE(PT_WALL,2)) :: ZA,& ! lower diag.
ZB,& ! main diag.
ZC,& ! upper diag.
ZY,& ! r.h.s.
ZX ! solution
!
REAL, DIMENSION(SIZE(PTA)) :: ZDN ! snow-covered surface fraction
REAL, DIMENSION(SIZE(PTA)) :: ZDF ! snow-free surface fraction
REAL, DIMENSION(SIZE(PTA)) :: ZLW_W_TO_W ! L.W. interactions
REAL, DIMENSION(SIZE(PTA)) :: ZLW_R_TO_W ! from first Temp.
REAL, DIMENSION(SIZE(PTA)) :: ZLW_W_TO_R ! on second Temp.
REAL, DIMENSION(SIZE(PTA)) :: ZLW_R_TO_R !
REAL, DIMENSION(SIZE(PTA)) :: ZLW_N_TO_W ! idem. but from
REAL, DIMENSION(SIZE(PTA)) :: ZLW_N_TO_R ! snow rad.
REAL, DIMENSION(SIZE(PTA)) :: ZDQSAT_ROAD ! dq_sat/dTs
REAL, DIMENSION(SIZE(PTA)) :: ZRHO_AC_W ! rho * conductance (for walls)
REAL, DIMENSION(SIZE(PTA)) :: ZRHO_ACF_R ! rho * conductance
! ! * snow-free f.
REAL, DIMENSION(SIZE(PTA)) :: ZRHO_ACF_R_WAT ! rho * conductance for water
! ! * snow-free f.
REAL, DIMENSION(SIZE(PTA)) :: ZSAC_T ! weighted sum
! ! of conductances
! ! for PT_CANYON
REAL, DIMENSION(SIZE(PTA)) :: ZSAC_Q ! weighted sum
! ! of conductances
! ! for PQ_CANYON
REAL, DIMENSION(SIZE(PTA),SIZE(PT_ROAD,2)) :: ZMTC_O_D_ROAD
! mean thermal conductivity over distance between 2 layers
REAL, DIMENSION(SIZE(PTA),SIZE(PT_WALL,2)) :: ZMTC_O_D_WALL
! mean thermal conductivity over distance between 2 layers
REAL, DIMENSION(SIZE(PTA),SIZE(PT_ROAD,2)) :: ZHC_D_ROAD
! thermal capacity times layer depth
REAL, DIMENSION(SIZE(PTA),SIZE(PT_WALL,2)) :: ZHC_D_WALL
! thermal capacity times layer depth
REAL, DIMENSION(SIZE(PTA)) :: ZTS_ROAD
! road surface temperature
REAL, DIMENSION(SIZE(PTA)) :: ZTS_WALL
! wall surface temperature
!
INTEGER :: IROAD_LAYER ! number of road layers
INTEGER :: IWALL_LAYER ! number of wall layers
INTEGER :: ILAYER ! current layer
INTEGER :: JLAYER ! loop counter
!-------------------------------------------------------------------------------
!
!
!* 1. Layer thermal properties
! ------------------------
!
!* 1.1 Roads
! -----
!
IROAD_LAYER = SIZE(PT_ROAD,2)
ZMTC_O_D_ROAD(:,:) = 0.
!
DO JLAYER=1,IROAD_LAYER-1
ZMTC_O_D_ROAD(:,JLAYER) = 2./( PD_ROAD(:,JLAYER )/PTC_ROAD(:,JLAYER ) &
+ PD_ROAD(:,JLAYER+1)/PTC_ROAD(:,JLAYER+1) )
ZHC_D_ROAD (:,JLAYER) = PHC_ROAD(:,JLAYER) * PD_ROAD (:,JLAYER)
END DO
!
ZMTC_O_D_ROAD(:,IROAD_LAYER) = 2. * PTC_ROAD(:,IROAD_LAYER) &
/ PD_ROAD (:,IROAD_LAYER)
ZHC_D_ROAD (:,IROAD_LAYER) = PHC_ROAD(:,IROAD_LAYER) &
* PD_ROAD (:,IROAD_LAYER)
!
!* 1.2 Walls
! -----
!
IWALL_LAYER = SIZE(PT_WALL,2)
ZMTC_O_D_WALL(:,:) = 0.
!
DO JLAYER=1,IWALL_LAYER-1
ZMTC_O_D_WALL(:,JLAYER) = 2./( PD_WALL(:,JLAYER )/PTC_WALL(:,JLAYER ) &
+ PD_WALL(:,JLAYER+1)/PTC_WALL(:,JLAYER+1) )
ZHC_D_WALL (:,JLAYER) = PHC_WALL(:,JLAYER) * PD_WALL (:,JLAYER)
END DO
!
ZMTC_O_D_WALL(:,IWALL_LAYER) = 2. * PTC_WALL(:,IWALL_LAYER) &
/ PD_WALL (:,IWALL_LAYER)
ZMTC_O_D_WALL(:,IWALL_LAYER) = 1./( 1./ZMTC_O_D_WALL(:,IWALL_LAYER) &
+ 1./(XCPD*PRHOA(:)*PAC_BLD(:)) )
!
ZHC_D_WALL (:,IWALL_LAYER) = PHC_WALL(:,IWALL_LAYER) &
* PD_WALL (:,IWALL_LAYER)
!
!-------------------------------------------------------------------------------
!
!* 2. Preliminaries
! -------------
!
!* 2.1 snow-free surface fraction
! --------------------------
!
ZDN=PDN_ROAD(:)
ZDF(:)=1.-ZDN
!
!* 2.2 flux properties
! ---------------
!
ZSAC_T (:) = ZDF(:) * PAC_ROAD(:) &
+ PWALL_O_ROAD(:) * PAC_WALL(:) &
+ PAC_TOP (:)
ZSAC_Q (:) = ZDF(:) * PDELT_ROAD(:) * PAC_ROAD_WAT(:) &
+ PAC_TOP(:)
ZRHO_AC_W (:) = PRHOA(:) * PAC_WALL(:)
ZRHO_ACF_R(:) = PRHOA(:) * PAC_ROAD(:) * ZDF(:)
ZRHO_ACF_R_WAT(:) = PRHOA(:) * PAC_ROAD_WAT(:) * ZDF(:)
!
!* 2.3 Surface temperatures
! --------------------
!
ZTS_ROAD(:) = PT_ROAD(:,1)
ZTS_WALL(:) = PT_WALL(:,1)
!
!
!* 2.4 qsat, dqsat/dTs, and humidity for roads
! ---------------------------------------
!
ZDQSAT_ROAD(:) = DQSAT(ZTS_ROAD(:),PPS(:),PQSAT_ROAD(:))
!
!
!-------------------------------------------------------------------------------
!
!* 3. LW properties
! -------------
!
CALL URBAN_LW_COEF(PEMIS_ROAD, PSVF_ROAD, PEMIS_WALL, PSVF_WALL, &
ZDN, ZDF, PESNOW_ROAD, &
ZLW_W_TO_W, ZLW_R_TO_W, ZLW_W_TO_R, ZLW_R_TO_R, &
PLW_S_TO_W, PLW_S_TO_R, ZLW_N_TO_W, ZLW_N_TO_R )
!
!-------------------------------------------------------------------------------
!
!* 4. Inside wall layer coefficients
! ------------------------------
!
ILAYER=1
!
ZA(:,ILAYER) = 0.
ZB(:,ILAYER) = ZHC_D_WALL(:,IWALL_LAYER) / PTSTEP &
+ ZIMPL * ( ZMTC_O_D_WALL(:,IWALL_LAYER ) &
+ ZMTC_O_D_WALL(:,IWALL_LAYER-1) &
)
ZC(:,ILAYER) = &
+ ZIMPL * ( - ZMTC_O_D_WALL(:,IWALL_LAYER-1) &
)
!
ZY(:,ILAYER) = ZHC_D_WALL(:,IWALL_LAYER) / PTSTEP &
* PT_WALL(:,IWALL_LAYER) &
+ ZMTC_O_D_WALL(:,IWALL_LAYER) * PTI_BLD(:) &
+ ZEXPL * ( - ZMTC_O_D_WALL(:,IWALL_LAYER ) &
* PT_WALL(:,IWALL_LAYER ) &
- ZMTC_O_D_WALL(:,IWALL_LAYER-1) &
* PT_WALL(:,IWALL_LAYER ) &
+ ZMTC_O_D_WALL(:,IWALL_LAYER-1) &
* PT_WALL(:,IWALL_LAYER-1) &
)
!
!-------------------------------------------------------------------------------
!
!* 5. Other wall layers coefficients
! ------------------------------
!
DO JLAYER=2,IWALL_LAYER-1
ILAYER=IWALL_LAYER-JLAYER+1
ZA(:,ILAYER) = &
ZIMPL * ( - ZMTC_O_D_WALL(:,JLAYER ) &
)
ZB(:,ILAYER) = ZHC_D_WALL(:,JLAYER)/PTSTEP &
+ ZIMPL * ( ZMTC_O_D_WALL(:,JLAYER ) &
+ ZMTC_O_D_WALL(:,JLAYER-1) &
)
ZC(:,ILAYER) = &
ZIMPL * ( - ZMTC_O_D_WALL(:,JLAYER-1) &
)
!
ZY(:,ILAYER) = ZHC_D_WALL(:,JLAYER)/PTSTEP * PT_WALL(:,JLAYER) &
+ ZEXPL * ( ZMTC_O_D_WALL(:,JLAYER ) * PT_WALL(:,JLAYER+1) &
- ZMTC_O_D_WALL(:,JLAYER ) * PT_WALL(:,JLAYER ) &
- ZMTC_O_D_WALL(:,JLAYER-1) * PT_WALL(:,JLAYER ) &
+ ZMTC_O_D_WALL(:,JLAYER-1) * PT_WALL(:,JLAYER-1) &
)
END DO
!
!-------------------------------------------------------------------------------
!
!* 6. Surface wall layer coefficients
! -------------------------------
!
ILAYER=IWALL_LAYER
!
!
ZA(:,ILAYER) = &
ZIMPL * ( - ZMTC_O_D_WALL(:,1) &
)
ZB(:,ILAYER) = ZHC_D_WALL(:,1)/PTSTEP &
+ ZIMPL * ( - 4. *ZTS_WALL(:)**3 * ZLW_W_TO_W(:) &
+ ZRHO_AC_W(:) * XCPD &
* (1.-PAC_WALL(:)*PWALL_O_ROAD(:)/ZSAC_T (:)) &
+ ZMTC_O_D_WALL(:,1) &
)
ZC(:,ILAYER) = &
ZIMPL * ( - 4.*ZTS_ROAD(:)**3 * ZLW_R_TO_W(:) &
- ZRHO_AC_W(:) * XCPD * PAC_ROAD(:)*ZDF(:)/ZSAC_T (:) &
)
ZY(:,ILAYER) = ZHC_D_WALL(:,1)/PTSTEP*ZTS_WALL(:) &
+ PABS_SW_WALL(:) &
+ PLW_RAD (:) * PLW_S_TO_W(:) &
+ ZTS_WALL (:)**4 * ZLW_W_TO_W(:) &
+ ZTS_ROAD (:)**4 * ZLW_R_TO_W(:) &
+ PTSNOW_ROAD(:)**4 * ZLW_N_TO_W(:) &
+ ZRHO_AC_W(:) * XCPD * PTA(:) &
* PAC_TOP(:) / ZSAC_T (:) &
+ PAC_WALL(:) / ZSAC_T (:) &
* ( PH_TRAFFIC (:) / (1.-PBLD(:)) &
+ PHSNOW_ROAD(:) * ZDN(:) ) &
+ ZIMPL * ( &
- 4.*ZTS_WALL(:)**4 * ZLW_W_TO_W(:) &
- 4.*ZTS_ROAD(:)**4 * ZLW_R_TO_W(:) &
) &
+ ZEXPL * ( ZMTC_O_D_WALL(:,1) * PT_WALL(:,2) &
- ZMTC_O_D_WALL(:,1) * PT_WALL(:,1) &
- ZRHO_AC_W(:) * XCPD * (1.-PAC_WALL(:)*PWALL_O_ROAD(:) &
/ZSAC_T (:) ) &
* ZTS_WALL(:) &
+ ZRHO_AC_W(:) * XCPD * PAC_ROAD(:)*ZDF(:)/ZSAC_T(:) &
* ZTS_ROAD(:) &
)
!
!-------------------------------------------------------------------------------
!
!* 7. Surface road layer coefficients
! -------------------------------
!
ILAYER=IWALL_LAYER+1
!
!
ZA(:,ILAYER) = &
ZIMPL * ( - ZDF(:) * 4.*ZTS_WALL(:)**3 * ZLW_W_TO_R(:) &
- ZRHO_ACF_R(:) * XCPD * PAC_WALL(:) &
* PWALL_O_ROAD(:) / ZSAC_T (:) &
)
ZB(:,ILAYER) = ZHC_D_ROAD(:,1)/PTSTEP &
+ ZIMPL * ( - ZDF(:) * 4.*ZTS_ROAD(:)**3 * ZLW_R_TO_R(:) &
+ ZRHO_ACF_R(:) * XCPD * (1.-ZDF(:)*PAC_ROAD(:)/ZSAC_T(:)) &
+ ZRHO_ACF_R_WAT(:) * XLVTT * PDELT_ROAD(:) * ZDQSAT_ROAD(:) &
* (1.-ZDF(:)*PAC_ROAD_WAT(:)*PDELT_ROAD(:)/ZSAC_Q(:)) &
+ ZMTC_O_D_ROAD(:,1) &
)
ZC(:,ILAYER) = &
ZIMPL * ( - ZMTC_O_D_ROAD(:,1) &
)
ZY(:,ILAYER) = ZHC_D_ROAD(:,1)/PTSTEP*PT_ROAD(:,1) &
+ ZDF(:) * PABS_SW_ROAD(:) &
+ ZDF(:) * PLW_RAD (:) * PLW_S_TO_R(:) &
+ ZDF(:) * ZTS_WALL (:)**4 * ZLW_W_TO_R(:) &
+ ZDF(:) * ZTS_ROAD (:)**4 * ZLW_R_TO_R(:) &
+ ZDF(:) * PTSNOW_ROAD(:)**4 * ZLW_N_TO_R(:) &
+ ZRHO_ACF_R(:) * XCPD * PTA(:) &
* PAC_TOP(:) / ZSAC_T (:) &
+ ZDF(:) * PAC_ROAD(:) / ZSAC_T (:) &
* ( PH_TRAFFIC (:) / (1.-PBLD(:)) &
+ PHSNOW_ROAD(:) * ZDN(:) ) &
- ZRHO_ACF_R_WAT(:) * XLVTT * PDELT_ROAD(:) &
* ( PQSAT_ROAD(:) &
-( PQSAT_ROAD (:) *PDELT_ROAD(:) &
*ZDF(:)*PAC_ROAD_WAT(:)&
+ PQA (:) * PAC_TOP(:) &
) / ZSAC_Q(:) &
) &
+ ZDF(:) * PAC_ROAD_WAT(:) * PDELT_ROAD(:) / ZSAC_Q (:) &
* ( PLE_TRAFFIC (:) / (1.-PBLD(:)) &
+ PLESNOW_ROAD(:) * ZDN(:) ) &
+ ZDN(:) * PGSNOW_ROAD(:) &
+ ZIMPL * ( - ZDF(:) * 4.*ZTS_WALL(:)**4 * ZLW_W_TO_R(:) &
- ZDF(:) * 4.*ZTS_ROAD(:)**4 * ZLW_R_TO_R(:) &
+ ZRHO_ACF_R_WAT(:) * XLVTT * PDELT_ROAD(:) &
* (1.-PDELT_ROAD(:)*PAC_ROAD_WAT(:)*ZDF(:)&
/ZSAC_Q (:) ) &
* ZDQSAT_ROAD(:) * ZTS_ROAD(:) &
) &
+ ZEXPL * ( ZRHO_ACF_R(:) * XCPD * PAC_WALL(:) * PWALL_O_ROAD(:) &
* ZTS_WALL(:) / ZSAC_T (:) &
- ZRHO_ACF_R(:) * XCPD * ZTS_ROAD(:) &
* ( 1. - PAC_ROAD(:)*ZDF(:)/ZSAC_T(:) ) &
- ZMTC_O_D_ROAD(:,1) * PT_ROAD(:,1) &
+ ZMTC_O_D_ROAD(:,1) * PT_ROAD(:,2) &
)
!
!-------------------------------------------------------------------------------
!
!* 8. Other road layers coefficients
! ------------------------------
!
DO JLAYER=2,IROAD_LAYER-1
ILAYER=IWALL_LAYER+JLAYER
ZA(:,ILAYER) = &
ZIMPL * ( - ZMTC_O_D_ROAD(:,JLAYER-1) &
)
ZB(:,ILAYER) = ZHC_D_ROAD(:,JLAYER)/PTSTEP &
+ ZIMPL * ( ZMTC_O_D_ROAD(:,JLAYER-1) &
+ ZMTC_O_D_ROAD(:,JLAYER ) &
)
ZC(:,ILAYER) = &
ZIMPL * ( - ZMTC_O_D_ROAD(:,JLAYER ) &
)
!
ZY(:,ILAYER) = ZHC_D_ROAD(:,JLAYER)/PTSTEP*PT_ROAD(:,JLAYER) &
+ ZEXPL * ( ZMTC_O_D_ROAD(:,JLAYER-1) * PT_ROAD(:,JLAYER-1) &
- ZMTC_O_D_ROAD(:,JLAYER-1) * PT_ROAD(:,JLAYER ) &
- ZMTC_O_D_ROAD(:,JLAYER ) * PT_ROAD(:,JLAYER ) &
+ ZMTC_O_D_ROAD(:,JLAYER ) * PT_ROAD(:,JLAYER+1) &
)
END DO
!
!-------------------------------------------------------------------------------
!
!* 9. Inside road layer coefficients
! ------------------------------
!
ILAYER=IWALL_LAYER+IROAD_LAYER
!
ZA(:,ILAYER) = &
ZIMPL * ( - ZMTC_O_D_ROAD(:,IROAD_LAYER-1) &
)
ZB(:,ILAYER) = ZHC_D_ROAD(:,IROAD_LAYER) / PTSTEP &
+ ZIMPL * ( ZMTC_O_D_ROAD(:,IROAD_LAYER-1) &
)
ZC(:,ILAYER) = 0.
!
ZY(:,ILAYER) = ZHC_D_ROAD(:,IROAD_LAYER) / PTSTEP &
* PT_ROAD(:,IROAD_LAYER) &
+ ZEXPL * ( ZMTC_O_D_ROAD(:,IROAD_LAYER-1) &
* PT_ROAD(:,IROAD_LAYER-1) &
- ZMTC_O_D_ROAD(:,IROAD_LAYER-1) &
* PT_ROAD(:,IROAD_LAYER ) &
)
!
!-------------------------------------------------------------------------------
!
!* 10. Tri-diagonal system resolution
! ------------------------------
!
CALL TRIDIAG_GROUND(ZA,ZB,ZC,ZY,ZX)
!
DO JLAYER=1,IWALL_LAYER
ILAYER=IWALL_LAYER-JLAYER+1
PT_WALL(:,JLAYER) = ZX(:,ILAYER)
END DO
!
DO JLAYER=1,IROAD_LAYER
ILAYER=IWALL_LAYER+JLAYER
PT_ROAD(:,JLAYER) = ZX(:,ILAYER)
END DO
!
!-------------------------------------------------------------------------------
!
!* 12. Road and wall absorbed infra-red radiation on snow-free surfaces
! ----------------------------------------------------------------
!
PABS_LW_ROAD(:) = PLW_S_TO_R(:)*PLW_RAD (:) &
+ ZLW_R_TO_R(:)*PT_ROAD (:,1)**4 &
+ ZLW_W_TO_R(:)*PT_WALL (:,1)**4 &
+ ZLW_N_TO_R(:)*PTSNOW_ROAD(:)**4
!
PABS_LW_WALL(:) = PLW_S_TO_W(:)*PLW_RAD (:) &
+ ZLW_W_TO_W(:)*PT_WALL (:,1)**4 &
+ ZLW_R_TO_W(:)*PT_ROAD (:,1)**4 &
+ ZLW_N_TO_W(:)*PTSNOW_ROAD(:)**4
!
!-------------------------------------------------------------------------------
!
!* 13. Air canyon temperature at time t+dt
! -----------------------------------
!
PT_CANYON(:) = ( PT_ROAD (:,1) * PAC_ROAD(:) * ZDF(:) &
+ PT_WALL (:,1) * PAC_WALL(:) * PWALL_O_ROAD(:) &
+ PTA (:) * PAC_TOP (:) &
+ PH_TRAFFIC (:) / (1.-PBLD(:)) / PRHOA(:) / XCPD &
+ PHSNOW_ROAD(:) * ZDN(:) / PRHOA(:) / XCPD )&
/ ZSAC_T(:)
!
!-------------------------------------------------------------------------------
!
!* 14. canyon air specific humidities
! ------------------------------
!
!* 14.1 New saturated specified humidity near the road surface
! ------------------------------------------------------
!
!
PQSAT_ROAD(:) = QSAT(PT_ROAD(:,1),PPS(:))
!
!* 14.2 Canyon air specific humidity
! ----------------------------
!
PQ_CANYON(:) = ( PQSAT_ROAD (:) * PAC_ROAD_WAT(:) * ZDF(:) &
* PDELT_ROAD(:) &
+ PQA (:) * PAC_TOP(:) &
+ PLE_TRAFFIC (:) / (1.-PBLD(:)) / PRHOA(:) / XLVTT &
+ PLESNOW_ROAD(:) * ZDN(:) / PRHOA(:) / XLVTT )&
/ ZSAC_Q(:)
!
!-------------------------------------------------------------------------------
!
END SUBROUTINE ROAD_WALL_LAYER_E_BUDGET