SURFEX v7.3
General documentation of Surfex
|
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