!-------------------------------------- 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 URBAN_LW_COEF(PEMIS_ROAD, PSVF_ROAD, PEMIS_WALL, PSVF_WALL,   & 1,1
                             PDN, PDF, PESNOW_ROAD,                          &
                             PLW_W_TO_W, PLW_R_TO_W, PLW_W_TO_R, PLW_R_TO_R, &
                             PLW_S_TO_W, PLW_S_TO_R, PLW_N_TO_W, PLW_N_TO_R  )
!   ##########################################################################
!
!!****  *URBAN_LW_COEF*  
!!
!!    PURPOSE
!!    -------
!
!     Computes the coefficients before each of the temperatures in the
!     radiative budgets
!         
!     
!!**  METHOD
!     ------
!
! without snow, the radiative budgets read:
!
!   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)
!
!
!
!
!
!!    EXTERNAL
!!    --------
!!
!!
!!    IMPLICIT ARGUMENTS
!!    ------------------
!!
!!    MODD_CST
!!
!!      
!!    REFERENCE
!!    ---------
!!
!!      
!!    AUTHOR
!!    ------
!!
!!	V. Masson           * Meteo-France *
!!
!!    MODIFICATIONS
!!    -------------
!!      Original    08/09/98 
!-------------------------------------------------------------------------------
!
!*       0.     DECLARATIONS
!               ------------
!
USE MODD_CSTS, ONLY : XSTEFAN
!
IMPLICIT NONE
!
!*      0.1    declarations of arguments
!
!
REAL, DIMENSION(:), INTENT(IN)  :: PEMIS_ROAD  ! road emissivity
REAL, DIMENSION(:), INTENT(IN)  :: PSVF_ROAD   ! road sky view factor
REAL, DIMENSION(:), INTENT(IN)  :: PEMIS_WALL  ! wall emissivity
REAL, DIMENSION(:), INTENT(IN)  :: PSVF_WALL   ! wall sky view factor
REAL, DIMENSION(:), INTENT(IN)  :: PDN         ! snow-covered surface fraction
REAL, DIMENSION(:), INTENT(IN)  :: PDF         ! snow-free surface fraction
REAL, DIMENSION(:), INTENT(IN)  :: PESNOW_ROAD ! road snow emissivity
REAL, DIMENSION(:), INTENT(OUT) :: PLW_W_TO_W  ! L.W. interactions
REAL, DIMENSION(:), INTENT(OUT) :: PLW_R_TO_W  ! from first Temp.
REAL, DIMENSION(:), INTENT(OUT) :: PLW_W_TO_R  ! on second Temp.
REAL, DIMENSION(:), INTENT(OUT) :: PLW_R_TO_R  !
REAL, DIMENSION(:), INTENT(OUT) :: PLW_S_TO_W  ! idem. but from
REAL, DIMENSION(:), INTENT(OUT) :: PLW_S_TO_R  ! sky rad.
REAL, DIMENSION(:), INTENT(OUT) :: PLW_N_TO_W  ! idem. but from
REAL, DIMENSION(:), INTENT(OUT) :: PLW_N_TO_R  ! snow rad.
!
!*      0.2    declarations of local variables
!
REAL, DIMENSION(SIZE(PDN)) :: ZAVEMIS_R   ! averaged road emissivity
!-------------------------------------------------------------------------------
!
!
ZAVEMIS_R(:) =     PDF(:)  * PEMIS_ROAD (:) &
              +    PDN(:)  * PESNOW_ROAD(:)
!
!
PLW_W_TO_W(:) =     XSTEFAN * PEMIS_WALL(:)                      &
               * ( -   1.                                        &
                   +       PEMIS_WALL(:)  * (1.-2.*PSVF_WALL(:)) &
                   +       PEMIS_WALL(:)  * (1.-   PSVF_ROAD(:)) &
                     * (1.-ZAVEMIS_R (:)) *        PSVF_WALL(:)  &
                   +       PEMIS_WALL(:)  * (1.-2.*PSVF_WALL(:)) &
                     * (1.-PEMIS_WALL(:)) * (1.-2.*PSVF_WALL(:)) &
                 )
!
PLW_R_TO_W(:) =   XSTEFAN * PEMIS_ROAD(:)                          &
                          * PEMIS_WALL(:)                          &
                          * PSVF_WALL(:)                           &
              * ( 1. + (1.-PEMIS_WALL(:)) * (1.-2.*PSVF_WALL(:)))  &
                          * PDF(:)
!
PLW_S_TO_W(:) =  PEMIS_WALL(:) * PSVF_WALL(:)                    &
               * (    1.                                         &
                   + (1.-ZAVEMIS_R (:)) *        PSVF_ROAD(:)    &
                   + (1.-PEMIS_WALL(:)) * (1.-2.*PSVF_WALL(:))   &
                 )
!
PLW_N_TO_W(:) =   XSTEFAN * PESNOW_ROAD(:)                         &
                          * PEMIS_WALL(:)                          &
                          * PSVF_WALL(:)                           &
              * ( 1. + (1.-PEMIS_WALL(:)) * (1.-2.*PSVF_WALL(:)))  &
                          * PDN(:)
!
PLW_R_TO_R(:) =            XSTEFAN * PEMIS_ROAD(:)                  &
               * (  -   1.                                          &
                    + PDF(:) * PEMIS_ROAD(:) * (1.-PEMIS_WALL(:))   &
                               * (1.-PSVF_ROAD(:)) * PSVF_WALL(:)   &
                 )
!
PLW_W_TO_R(:) =   XSTEFAN * PEMIS_ROAD(:)                           &
                          * PEMIS_WALL(:)                           &
                          * (1. -  PSVF_ROAD(:))                    &
              * ( 1. + (1.-PEMIS_WALL(:)) * (1.-2.*PSVF_WALL(:)) )
!
PLW_S_TO_R(:) =  PEMIS_ROAD(:)* PSVF_ROAD(:)                      &
               + PEMIS_ROAD(:)*(1.-PEMIS_WALL(:))                 &
                                *(1.-PSVF_ROAD(:))*PSVF_WALL(:)
!
PLW_N_TO_R(:) = XSTEFAN * PEMIS_ROAD(:)     * (1.-PEMIS_WALL(:)) &
                        * (1.-PSVF_ROAD(:)) * PSVF_WALL(:)       &
                        * PESNOW_ROAD(:)    * PDN(:)
!
!-------------------------------------------------------------------------------
!
END SUBROUTINE URBAN_LW_COEF