SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/urban_hydro.F90
Go to the documentation of this file.
00001 !     #########
00002     SUBROUTINE URBAN_HYDRO(PWS_ROOF_MAX,PWS_ROAD_MAX, PWS_ROOF, PWS_ROAD,  &
00003                              PRR, PTSTEP, PBLD, PLE_ROOF, PLE_ROAD,          &
00004                              PRUNOFF_ROOF,                                   &
00005                              PRUNOFF_ROAD,                                   &
00006                              PRUNOFF_TOWN                                    )  
00007 !   ##########################################################################
00008 !
00009 !!****  *URBAN_HYDRO*  
00010 !!
00011 !!    PURPOSE
00012 !!    -------
00013 !
00014 !     Computes the evolution of prognostic water reservoirs
00015 !     of urbanized areas.
00016 !         
00017 !     
00018 !!**  METHOD
00019 !     ------
00020 !
00021 !
00022 !   The roof reservoir runoff goes directly into the road reservoir.
00023 !
00024 !   Runoff occurs for road reservoir (too much water), as well as drainage
00025 !   (evacuation system, typical time scale: 1 day)
00026 !
00027 !
00028 !
00029 !
00030 !!    EXTERNAL
00031 !!    --------
00032 !!
00033 !!
00034 !!    IMPLICIT ARGUMENTS
00035 !!    ------------------
00036 !!
00037 !!    MODD_CST
00038 !!
00039 !!      
00040 !!    REFERENCE
00041 !!    ---------
00042 !!
00043 !!      
00044 !!    AUTHOR
00045 !!    ------
00046 !!
00047 !!      V. Masson           * Meteo-France *
00048 !!
00049 !!    MODIFICATIONS
00050 !!    -------------
00051 !!      Original    23/01/98 
00052 !-------------------------------------------------------------------------------
00053 !
00054 !*       0.     DECLARATIONS
00055 !               ------------
00056 !
00057 USE MODD_CSTS,ONLY : XLVTT
00058 !
00059 !
00060 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00061 USE PARKIND1  ,ONLY : JPRB
00062 !
00063 IMPLICIT NONE
00064 !
00065 !*      0.1    declarations of arguments
00066 !
00067 !
00068 REAL, DIMENSION(:), INTENT(IN) :: PWS_ROOF_MAX    ! maximum deepness of roof water reservoir
00069 REAL, DIMENSION(:), INTENT(IN) :: PWS_ROAD_MAX    ! maximum deepness of road water reservoir
00070 
00071 REAL, DIMENSION(:), INTENT(INOUT) :: PWS_ROOF     ! roof water reservoir
00072 REAL, DIMENSION(:), INTENT(INOUT) :: PWS_ROAD     ! road water reservoir
00073 REAL, DIMENSION(:), INTENT(IN)    :: PRR          ! rain rate
00074 REAL,               INTENT(IN)    :: PTSTEP       ! time step
00075 REAL, DIMENSION(:), INTENT(IN)    :: PBLD         ! fraction of buildings
00076 REAL, DIMENSION(:), INTENT(IN)    :: PLE_ROOF     ! latent heat flux over roof
00077 REAL, DIMENSION(:), INTENT(IN)    :: PLE_ROAD     ! latent heat flux over road
00078 !
00079 REAL, DIMENSION(:), INTENT(OUT)   :: PRUNOFF_ROOF ! runoff (kg/m2/s)
00080 REAL, DIMENSION(:), INTENT(OUT)   :: PRUNOFF_ROAD ! runoff (kg/m2/s)
00081 REAL, DIMENSION(:), INTENT(OUT)   :: PRUNOFF_TOWN ! runoff (kg/m2/s)
00082 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00083 !
00084 !*      0.2    declarations of local variables
00085 !
00086 !
00087 !-------------------------------------------------------------------------------
00088 !
00089 !*      1.     Roof reservoir evolution
00090 !              ------------------------
00091 !
00092 !
00093 !                                           evolution of the water reservoir
00094 !                                           (if we don't consider the runoff)
00095 !                                           PRR in kg/m2/s therefore PWS in mm
00096 !
00097 IF (LHOOK) CALL DR_HOOK('URBAN_HYDRO',0,ZHOOK_HANDLE)
00098 PWS_ROOF(:) =  PWS_ROOF(:)                                   &
00099                - PTSTEP * ( PLE_ROOF(:) / XLVTT - PRR(:) )  
00100 !
00101 !                                           Ws_town must be positive
00102 !
00103 PWS_ROOF(:) = MAX(0., PWS_ROOF(:))
00104 !
00105 !                                           if Ws_town > Ws_town_max,
00106 !                                           there is runoff
00107 !
00108 PRUNOFF_ROOF(:) = MAX(0., (PWS_ROOF(:) - PWS_ROOF_MAX(:)) / PTSTEP )
00109 !
00110 PWS_ROOF(:) = MIN(PWS_ROOF(:), PWS_ROOF_MAX(:))
00111 !
00112 !-------------------------------------------------------------------------------
00113 !
00114 !*      2.     Road reservoir evolution
00115 !              ------------------------
00116 !
00117 !
00118 !                                           evolution of the water reservoir
00119 !                                           (if we don't consider the runoff)
00120 !                                           PRR in kg/m2/s therefore PWS in mm
00121 !
00122 PWS_ROAD(:) =  PWS_ROAD(:)                                 &
00123                - PTSTEP * ( PLE_ROAD(:) / XLVTT -  PRR(:) )  
00124 !
00125 !                                           Ws_town must be positive
00126 !
00127 PWS_ROAD(:) = MAX(0., PWS_ROAD(:))
00128 !
00129 !                                           if Ws_town > Ws_town_max,
00130 !                                           there is runoff
00131 !
00132 PRUNOFF_ROAD(:) = MAX(0., (PWS_ROAD(:) - PWS_ROAD_MAX(:)) / PTSTEP )
00133 !
00134 PWS_ROAD(:) = MIN(PWS_ROAD(:), PWS_ROAD_MAX(:))
00135 !
00136 !-------------------------------------------------------------------------------
00137 !
00138 !*      3.     Area-averaged runoff
00139 !              --------------------
00140 !
00141 PRUNOFF_TOWN(:) = PRUNOFF_ROAD(:) * (1.-PBLD(:)) + PRUNOFF_ROOF(:) * PBLD(:)
00142 IF (LHOOK) CALL DR_HOOK('URBAN_HYDRO',1,ZHOOK_HANDLE)
00143 !
00144 !-------------------------------------------------------------------------------
00145 !
00146 END SUBROUTINE URBAN_HYDRO