SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE HYDRO_DT92(PTSTEP, & 00003 PRUNOFFB, PWWILT, & 00004 PRUNOFFD, PWSAT, & 00005 PWG2, PWGI2, & 00006 PPG, PRUISDT ) 00007 ! ##################################################################### 00008 ! 00009 !!**** *HYDRO_DT92* 00010 !! 00011 !! PURPOSE 00012 !! ------- 00013 ! 00014 ! Calculates the evolution of the water variables, i.e., the superficial 00015 ! and deep-soil volumetric water content (wg and w2), the equivalent 00016 ! liquid water retained in the vegetation canopy (Wr), the equivalent 00017 ! water of the snow canopy (Ws), and also of the albedo and density of 00018 ! the snow (i.e., ALBS and RHOS). Also determine the runoff and drainage 00019 ! into the soil. 00020 ! 00021 ! 00022 !!** METHOD 00023 !! ------ 00024 ! 00025 !! EXTERNAL 00026 !! -------- 00027 !! 00028 !! none 00029 !! 00030 !! IMPLICIT ARGUMENTS 00031 !! ------------------ 00032 !! 00033 !! 00034 !! 00035 !! REFERENCE 00036 !! --------- 00037 !! 00038 !! Noilhan and Planton (1989) 00039 !! Belair (1995) 00040 !! 00041 !! AUTHOR 00042 !! ------ 00043 !! 00044 !! S. Belair * Meteo-France * 00045 !! 00046 !! MODIFICATIONS 00047 !! ------------- 00048 !! 00049 !! Original 14/03/95 00050 !! 31/08/98 (V. Masson and F. Habets) add Dumenil et Todini 00051 !! runoff scheme 00052 !! 16/05/02 (A. Boone) comments, F90 code standardization 00053 !------------------------------------------------------------------------------- 00054 ! 00055 !* 0. DECLARATIONS 00056 ! ------------ 00057 ! 00058 USE MODD_CSTS,ONLY : XRHOLW 00059 ! 00060 ! 00061 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00062 USE PARKIND1 ,ONLY : JPRB 00063 ! 00064 IMPLICIT NONE 00065 ! 00066 !* 0.1 declarations of arguments 00067 ! 00068 ! 00069 ! 00070 REAL, INTENT(IN) :: PTSTEP 00071 ! timestep of the integration (s) 00072 ! 00073 REAL, DIMENSION(:), INTENT(IN) :: PWWILT ! the wilting point volumetric 00074 ! ! water content (m3 m-3) 00075 REAL, DIMENSION(:), INTENT(IN) :: PRUNOFFB ! slope of the runoff curve (-) 00076 ! 00077 ! 00078 REAL, DIMENSION(:), INTENT(IN) :: PRUNOFFD, PWSAT 00079 ! PRUNOFFD = soil depth over which degree of saturation 00080 ! used for runoff calculation (m) 00081 ! PWSAT = saturation volumetric water content 00082 ! of the soil (m3 m-3) 00083 ! 00084 REAL, DIMENSION(:), INTENT(IN) :: PWG2, PWGI2 00085 ! PWG2 = bulk root-soil moisture at 't+dt' (m3 m-3) 00086 ! PWGI2 = bulk deep-soil ice at 't+dt' (m3 m-3) 00087 ! 00088 REAL, DIMENSION(:), INTENT(INOUT) :: PPG 00089 ! PPG = enters as rainfall/Canopy drip/snowmelt 00090 ! throughfall rate, leaves as infiltration 00091 ! rate for Force-Restore method, and potential 00092 ! infiltration rate for diffusion method (kg m-2 s-1) 00093 REAL, DIMENSION(:), INTENT(OUT) :: PRUISDT 00094 ! PRUISDT = sub-grid surface runoff rate (kg m-2 s-1) 00095 ! 00096 ! 00097 !* 0.2 declarations of local variables 00098 ! 00099 ! 00100 REAL, DIMENSION(SIZE(PRUNOFFD)) :: ZPAS, ZPG_INI, ZWG2 00101 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00102 ! ZWG2 = Total vol. water content 00103 ! of layer for calculating runoff (m3 m-3) 00104 ! 00105 !------------------------------------------------------------------------------- 00106 ! 00107 IF (LHOOK) CALL DR_HOOK('HYDRO_DT92',0,ZHOOK_HANDLE) 00108 ZPAS(:) = 0. 00109 ZPG_INI(:) = 0. 00110 ZWG2(:) = 0. 00111 ! 00112 PRUISDT(:) = 0. 00113 ! 00114 !------------------------------------------------------------------------------- 00115 ! 00116 ! 00117 !* 1. Dumenil et Todini (1992) RUNOFF SCHEME 00118 ! --------------------------------------- 00119 ! 00120 ZPG_INI(:)= PPG(:) 00121 ! 00122 ZWG2(:) = MIN(PWSAT(:), PWG2(:) + PWGI2(:)) 00123 ! 00124 ! Setting the expression below to 0 and solving for PG yields the critical throughfall rate: 00125 ! 00126 ZPAS(:) = (1.- (ZWG2(:)-PWWILT(:))/(PWSAT(:)-PWWILT(:)) )**(1./ (1.+PRUNOFFB(:)) ) - & 00127 PPG(:)*PTSTEP/(XRHOLW*PRUNOFFD(:) )/( (1. + PRUNOFFB(:))* (PWSAT(:)-PWWILT(:)) ) 00128 ! 00129 ZPAS(:) = MAX(0.0, ZPAS(:)) ! Limit it to within a physical range: 00130 ! 00131 ! Surface runoff calculation: 00132 ! If PAS is <= 0 (i.e. throughfall rate is large enough), then method 00133 ! collapses into a saturated bucket type model. 00134 ! 00135 PRUISDT(:) = PPG(:)*PTSTEP/(XRHOLW*PRUNOFFD(:) ) - ( PWSAT(:)-ZWG2(:) ) & 00136 + (PWSAT(:)-PWWILT(:))* ( ZPAS(:)**(1.+PRUNOFFB(:)) ) 00137 ! 00138 PRUISDT(:) = MAX(0.0, PRUISDT(:)) 00139 ! 00140 ! Reduce infiltration into the soil by the runoff: 00141 ! 00142 PPG(:) = PPG(:) - PRUISDT(:)/PTSTEP*XRHOLW*PRUNOFFD(:) 00143 ! 00144 ! Supress numerical artifacts: 00145 ! 00146 WHERE (PPG(:)<=0. .OR. PRUISDT(:)<=0.) 00147 PRUISDT(:) = 0. 00148 PPG(:) = ZPG_INI(:) 00149 END WHERE 00150 ! 00151 ! supress runoff over sufficiently dry soils: HERE chosen to be if the average 00152 ! water content is less than the wilting point: 00153 ! 00154 WHERE (ZWG2(:)<=PWWILT(:)) 00155 PRUISDT(:) = 0. 00156 PPG(:) = ZPG_INI(:) 00157 END WHERE 00158 IF (LHOOK) CALL DR_HOOK('HYDRO_DT92',1,ZHOOK_HANDLE) 00159 ! 00160 !------------------------------------------------------------------------------- 00161 ! 00162 END SUBROUTINE HYDRO_DT92