SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE HYDRO_SOIL(HISBA, & 00003 PTSTEP, & 00004 PLETR, PLEG, PPG, PEVAPCOR, & 00005 PWDRAIN, & 00006 PC1, PC2, PC3, PC4B, PC4REF, PWGEQ, & 00007 PD_G2, PD_G3, PWSAT, PWFC, & 00008 PDWGI1, PDWGI2, PLEGI, PD_G1, PCG, PCT, & 00009 PTG, PTG2, & 00010 PWG1, PWG2, PWG3, PWGI1, PWGI2, & 00011 PDRAIN, HKSAT, PWWILT ) 00012 ! ##################################################################### 00013 ! 00014 !!**** *HYDRO_SOIL* 00015 !! 00016 !! PURPOSE 00017 !! ------- 00018 ! 00019 ! Calculates the evolution of the water variables, i.e., the superficial 00020 ! and deep-soil volumetric water content (wg and w2), the equivalent 00021 ! liquid water retained in the vegetation canopy (Wr), the equivalent 00022 ! water of the snow canopy (Ws), and also of the albedo and density of 00023 ! the snow (i.e., ALBS and RHOS). Also determine the runoff and drainage 00024 ! into the soil. 00025 ! 00026 ! 00027 !!** METHOD 00028 !! ------ 00029 ! 00030 !! EXTERNAL 00031 !! -------- 00032 !! 00033 !! none 00034 !! 00035 !! IMPLICIT ARGUMENTS 00036 !! ------------------ 00037 !! 00038 !! 00039 !! 00040 !! REFERENCE 00041 !! --------- 00042 !! 00043 !! Noilhan and Planton (1989) 00044 !! Belair (1995) 00045 !! 00046 !! AUTHOR 00047 !! ------ 00048 !! 00049 !! S. Belair * Meteo-France * 00050 !! 00051 !! MODIFICATIONS 00052 !! ------------- 00053 !! 00054 !! Original 14/03/95 00055 !! 31/08/98 (V. Masson and F. Habets) add Dumenil et Todini 00056 !! runoff scheme 00057 !! 31/08/98 (V. Masson and A. Boone) add the third soil-water 00058 !! reservoir (WG3,D3) 00059 !! 15/03/99 A. Boone soil ice modification: advance 00060 !! soil ice and liquid water, do budget checks 00061 !! 25/01/00 A. Boone : fully implicit method for WG2, WG3 00062 !! 05/03/07 A. Boone : changed drainage diagnostic computation for 00063 !! single bulk-soil option...i.e. for 00064 !! cases when HISBA=2-L or d2>=d3 (HISBA=3-L) 00065 !! for tighter water budget closure 00066 !! 07/08/12 B. Decharme : Soil ice energy conservation 00067 !------------------------------------------------------------------------------- 00068 ! 00069 !* 0. DECLARATIONS 00070 ! ------------ 00071 ! 00072 USE MODD_CSTS, ONLY : XLVTT, XRHOLW, XLMTT, XLSTT, XDAY 00073 USE MODD_ISBA_PAR, ONLY : XWGMIN 00074 ! 00075 ! 00076 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00077 USE PARKIND1 ,ONLY : JPRB 00078 ! 00079 IMPLICIT NONE 00080 ! 00081 !* 0.1 declarations of arguments 00082 ! 00083 ! 00084 CHARACTER(LEN=*), INTENT(IN) :: HISBA ! type of ISBA version: 00085 ! ! '2-L' (default) 00086 ! ! '3-L' 00087 ! 00088 REAL, INTENT(IN) :: PTSTEP 00089 ! timestep of the integration (s) 00090 ! 00091 REAL, DIMENSION(:), INTENT(IN) :: PD_G1 00092 ! depth of surface ice reservoir (m) 00093 ! 00094 REAL, DIMENSION(:), INTENT(IN) :: PLETR, PLEG, PPG, PEVAPCOR 00095 ! PLETR = evapotranspiration of the vegetation (W m-2) 00096 ! PLEG = latent heat of evaporation over the ground (W m-2) 00097 ! PPG = total water reaching the ground (kg m-2 s-1) 00098 ! PEVAPCOR = correction for any excess evaporation 00099 ! from snow as it completely ablates (kg m-2 s-1) 00100 ! 00101 REAL, DIMENSION(:), INTENT(IN) :: PWDRAIN ! minimum Wg for drainage (m3 m-3) 00102 ! 00103 REAL, DIMENSION(:), INTENT(IN) :: PC1, PC2, PWGEQ, PCG, PCT 00104 REAL, DIMENSION(:,:), INTENT(IN) :: PC3 00105 ! soil coefficients 00106 ! C1, C2 = coefficients for the moisture calculations (-) 00107 ! C3 = coefficient for drainage calculation (m) 00108 ! PWGEQ = equilibrium surface volumetric moisture (m3 m-3) 00109 ! PCG = soil heat capacity 00110 ! PCT = grid-averaged heat capacity (K m2 J-1) 00111 ! 00112 REAL, DIMENSION(:), INTENT(IN) :: PD_G2, PD_G3, PWSAT, PWFC 00113 ! PD_G2 = root depth (m) 00114 ! PD_G3 = depth of the soil column (m) 00115 ! PWSAT = saturation volumetric water content 00116 ! of the soil (m3 m-3) 00117 ! PWFC = field capacity volumetric water 00118 ! content (m3 m-3) 00119 ! 00120 REAL, DIMENSION(:), INTENT(IN) :: PC4B, PC4REF 00121 ! PC4REF, PC4B = fiiting soil paramter for vertical 00122 ! diffusion (C4) (-) 00123 ! 00124 REAL, DIMENSION(:), INTENT(IN) :: PDWGI1, PDWGI2, PLEGI 00125 ! PDWGI1 = surface layer liquid water equivalent 00126 ! volumetric ice content time tendency (m3 m-3) 00127 ! PDWGI2 = deep-soil layer liquid water equivalent 00128 ! volumetric ice content time tendency (m3 m-3) 00129 ! PLEGI = surface soil ice sublimation (W m-2) 00130 ! 00131 ! 00132 REAL, DIMENSION(:), INTENT(INOUT) :: PTG, PTG2 00133 ! PTG = surface temperature at 't' (K) 00134 ! PTG2 = soil temperature at 't' (K) 00135 ! 00136 REAL, DIMENSION(:), INTENT(INOUT) :: PWG1, PWG2, PWG3, PWGI1, PWGI2 00137 REAL, DIMENSION(:), INTENT(OUT) :: PDRAIN 00138 ! PWG1 = near-surface soil moisture at 't+dt' (m3 m-3) 00139 ! PWG2 = bulk root-soil moisture at 't+dt' (m3 m-3) 00140 ! PWG3 = bulk deep-soil moisture at 't+dt' (m3 m-3) 00141 ! PWGI1 = bulk surface-soil ice at 't+dt' (m3 m-3) 00142 ! PWGI2 = bulk deep-soil ice at 't+dt' (m3 m-3) 00143 ! PDRAIN = drainage (kg m-2 s-1) 00144 ! 00145 CHARACTER(LEN=*), INTENT(IN) :: HKSAT ! soil hydraulic profil option 00146 ! ! 'DEF' = ISBA homogenous soil 00147 ! ! 'SGH' = ksat exponential decay 00148 ! 00149 REAL, DIMENSION(:), INTENT(IN) :: PWWILT 00150 ! PWWILT = wilting point volumetric water 00151 ! content (m3 m-3) 00152 ! 00153 !* 0.2 declarations of local variables 00154 ! 00155 ! 00156 REAL, DIMENSION(SIZE(PTG)) :: ZWGI1M, ZWG2M, ZWG3M, ZWGI2M 00157 ! Prognostic variables of ISBA at 't-dt' 00158 ! ZWG2M = root-soil volumetric water content 00159 ! ZWG3M = deep-soil volumetric water content 00160 ! ZWGI1M = surface-soil volumetric ice content 00161 ! ZWGI2M = deep-soil volumetric ice content 00162 ! 00163 REAL, DIMENSION(SIZE(PTG)) :: ZETR, ZEG 00164 ! ZETR = evapotranspiration rate 00165 ! ZEG = evaporation rate from the ground 00166 ! 00167 ! 00168 REAL, DIMENSION(SIZE(PTG)) :: ZWSAT, ZWFC 00169 ! ZWSAT = Wsat when ice is present 00170 ! ZWFC = Wfc when ice is present 00171 ! 00172 REAL, DIMENSION(SIZE(PWG3)) :: ZC4 00173 REAL, DIMENSION(SIZE(PWG3)) :: ZWAVG, ZSINK2, 00174 ZFACTOR, ZDRAINCF2, ZDRAINCF3, ZDRAIN2, 00175 ZDELTA2, ZDELTA3, ZDELTA22, ZDELTA33, 00176 ZWDRAIN2, ZWDRAIN3 00177 ! 00178 REAL, DIMENSION(SIZE(PWG3)) :: ZEXCESSF, ZA2, ZB2, ZC2, ZA3, ZB3, ZC3, ZWDRAIN, ZEXCESSFC 00179 ! 00180 REAL, DIMENSION(SIZE(PWG3)) :: ZWLIM2, ZWLIM3, ZWWILT 00181 ! 00182 INTEGER :: JJ 00183 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00184 !------------------------------------------------------------------------------- 00185 ! 00186 !* 0. Initialization 00187 ! -------------- 00188 ! 00189 ! 00190 IF (LHOOK) CALL DR_HOOK('HYDRO_SOIL',0,ZHOOK_HANDLE) 00191 ZWSAT(:) = 0. 00192 ZWFC(:) = 0. 00193 ZWWILT(:) = 0. 00194 ! 00195 PDRAIN(:) = 0. 00196 ! 00197 ZDRAIN2(:) = 0. 00198 ZDRAINCF2(:) = 0. 00199 ZDRAINCF3(:) = 0. 00200 ZDELTA2(:) = 0.0 00201 ZDELTA3(:) = 0.0 00202 ZDELTA22(:) = 0.0 00203 ZDELTA33(:) = 0.0 00204 ZSINK2(:) = 0. 00205 ZWDRAIN(:) = 0.0 00206 ZWDRAIN2(:) = 0.0 00207 ZWDRAIN3(:) = 0.0 00208 ZA2(:) = 0.0 00209 ZB2(:) = 0.0 00210 ZC2(:) = 0.0 00211 ZA3(:) = 0.0 00212 ZB3(:) = 0.0 00213 ZC3(:) = 0.0 00214 ! 00215 ZEXCESSF(:) = 0.0 00216 ! 00217 ! Fields at time t-dt 00218 ! 00219 ZWG2M(:) = PWG2(:) 00220 ZWG3M(:) = PWG3(:) 00221 ZWGI1M(:) = PWGI1(:) 00222 ZWGI2M(:) = PWGI2(:) 00223 00224 !------------------------------------------------------------------------------- 00225 ! 00226 DO JJ=1,SIZE(PTG) 00227 ! 00228 !* 1. New Wsat 00229 ! -------- 00230 ! 00231 ZWSAT (JJ) = PWSAT(JJ) - ZWGI2M(JJ) ! per definition ZWGI2M<PWSAT-0.001 00232 ! ! then ZWSAT>0.001 00233 ! 00234 ZWFC(JJ) = PWFC(JJ) * ZWSAT(JJ) / PWSAT(JJ) 00235 ! 00236 ZWWILT(JJ) = PWWILT(JJ) * ZWSAT(JJ) / PWSAT(JJ) 00237 ! 00238 ! 00239 ! evaporation rates 00240 ! 00241 ZETR(JJ) = PLETR(JJ) / XLVTT 00242 ! 00243 ! Remove sublimation from total soil evaporation: this is done 00244 ! because ZEG is a liquid water sink term. Sublimation 00245 ! is removed from the surface ice tendency equation (below): 00246 ! PLEG represents the total of sublimation and evaporation. 00247 ! Also, add an additional possible correction which is used if 00248 ! evaporation from the snow surface exceeds the last amount of 00249 ! snow on the surface as the snow completely ablates (this 00250 ! is a very small term and is generally negligible HOWEVER 00251 ! it is retained here for a high order water budget): 00252 ! 00253 ZEG(JJ) = PLEG(JJ) / XLVTT + PEVAPCOR(JJ) 00254 ! 00255 !------------------------------------------------------------------------------- 00256 ! 00257 !* 4. EVOLUTION OF THE SUPERFICIAL WATER CONTENT WG1 00258 ! ---------------------------------------------- 00259 ! 00260 ! updated values for wg 00261 ! 00262 PWG1(JJ) = (PWG1(JJ) - PTSTEP * (PC1(JJ) * (ZEG(JJ) - PPG(JJ)) / XRHOLW & 00263 - PC2(JJ) * PWGEQ(JJ) / XDAY) ) & 00264 / (1. + PTSTEP * PC2(JJ) / XDAY) 00265 ! 00266 ! 00267 ENDDO 00268 ! 00269 IF(HKSAT=='SGH' .OR. HKSAT=='EXP') THEN 00270 ZWLIM2(:)=ZWWILT(:) 00271 ZWLIM3(:)=PWWILT(:) 00272 ELSE 00273 ZWLIM2(:)=XWGMIN 00274 ZWLIM3(:)=XWGMIN 00275 ENDIF 00276 ! 00277 !------------------------------------------------------------------------------- 00278 ! 00279 !* 5. EVOLUTION OF THE DEEP WATER CONTENT WG2 and WG3 00280 ! ----------------------------------------------- 00281 ! 00282 !* 5.1 2-L ISBA version 00283 ! ---------------- 00284 ! 00285 IF (HISBA=='2-L') THEN 00286 ! 00287 DO JJ=1,SIZE(PTG) 00288 00289 ! 00290 PWG2(JJ) = ZWG2M(JJ) - PTSTEP*(ZEG(JJ) + ZETR(JJ) - PPG(JJ)) & 00291 / (PD_G2(JJ) * XRHOLW) 00292 ! 00293 !* 6. DRAINAGE FROM THE DEEP SOIL 00294 ! ------------------ 00295 ! 00296 ZWDRAIN(JJ) = PWDRAIN(JJ) * MAX(0.0, MIN(ZWFC(JJ),PWG2(JJ))-ZWLIM2(JJ))/(ZWFC(JJ)-ZWLIM2(JJ)) 00297 00298 ZDRAIN2(JJ) = MAX( MIN(ZWDRAIN(JJ),PWG2(JJ)) , PWG2(JJ)-ZWFC(JJ) )*PC3(JJ,1) & 00299 / (PD_G2(JJ)*XDAY) * PTSTEP 00300 ! 00301 ! the deep-soil volumetric water content w2 00302 ! is modified consequently 00303 ! 00304 PWG2(JJ) = PWG2(JJ) - ZDRAIN2(JJ) 00305 00306 PDRAIN(JJ) = ZDRAIN2(JJ)*PD_G2(JJ)*XRHOLW/PTSTEP ! Final output units: kg m-2 s-1 00307 ! 00308 ENDDO 00309 ! 00310 ELSE 00311 ! 00312 DO JJ=1,SIZE(PTG) 00313 00314 !* 5.2 3-L ISBA version (with only 2 active layers) 00315 ! ---------------- 00316 ! 00317 IF (PD_G2(JJ) >= PD_G3(JJ)) THEN 00318 00319 PWG2(JJ) = ZWG2M(JJ) - PTSTEP*(ZEG(JJ) + ZETR(JJ) - PPG(JJ)) & 00320 / (PD_G2(JJ) * XRHOLW) 00321 00322 !* 6. DRAINAGE FROM THE DEEP SOIL 00323 ! ------------------ 00324 ! when w2 > wfc, there is drainage 00325 ! 00326 ZWDRAIN(JJ) = PWDRAIN(JJ) * MAX(0.0, MIN(ZWFC(JJ),PWG2(JJ))-ZWLIM2(JJ))/(ZWFC(JJ)-ZWLIM2(JJ)) 00327 00328 ZDRAIN2(JJ) = MAX( MIN(ZWDRAIN(JJ),PWG2(JJ)) , PWG2(JJ)-ZWFC(JJ) )*PC3(JJ,1) & 00329 / (PD_G2(JJ)*XDAY) * PTSTEP 00330 00331 PWG2(JJ) = PWG2(JJ) - ZDRAIN2(JJ) 00332 PWG3(JJ) = PWG2(JJ) 00333 00334 PDRAIN(JJ) = ZDRAIN2(JJ)*PD_G2(JJ)*XRHOLW/PTSTEP ! Final output units: kg m-2 s-1 00335 ! 00336 ELSE 00337 ! 00338 !* 5.3 3-L ISBA version (with 3 active layers) 00339 ! ---------------- 00340 ! 00341 ! Linear drainage term check (m3 m-3): 00342 ! Use a linear scaling to prevent it from completely drying out the soil. This 00343 ! term will, under most conditions, not result in such a drying. Until a more 00344 ! rhobust (but more complicated) method is developed for maintaining a minimum river 00345 ! flow under dry conditions, this method will be used. 00346 ! 00347 ZWDRAIN2(JJ) = PWDRAIN(JJ)* MAX(0.0, MIN(ZWFC(JJ),ZWG2M(JJ))-ZWLIM2(JJ))/(ZWFC(JJ)-ZWLIM2(JJ)) 00348 ZWDRAIN3(JJ) = PWDRAIN(JJ)* MAX(0.0, MIN(PWFC(JJ),ZWG3M(JJ))-ZWLIM3(JJ))/(PWFC(JJ)-ZWLIM3(JJ)) 00349 ! 00350 ! Delta functions: 00351 ! 00352 ZDELTA2(JJ) = 0.0 00353 IF ( ZWG2M(JJ) - ZWFC(JJ) > ZWDRAIN2(JJ) ) ZDELTA2(JJ) = 1.0 00354 ! 00355 ZDELTA3(JJ) = 0.0 00356 IF ( ZWG3M(JJ) - PWFC(JJ) > ZWDRAIN3(JJ) ) ZDELTA3(JJ) = 1.0 00357 ! 00358 ! 00359 00360 ! evaluate inter-facial water content, grid factor, and diffusion coefficient: 00361 00362 ZWAVG(JJ) = ( ( (ZWG2M(JJ)**6)* PD_G2(JJ) + & 00363 (ZWG3M(JJ)**6)*(PD_G3(JJ)-PD_G2(JJ)) )/PD_G3(JJ) )**(1./6.) 00364 00365 ZFACTOR(JJ) = PD_G2(JJ)/(PD_G3(JJ)-PD_G2(JJ)) 00366 00367 ZC4 (JJ) = PC4REF(JJ)*(ZWAVG(JJ)**PC4B(JJ)) & 00368 *(10.**(-PC4B(JJ)*PWGI2(JJ)/(PWSAT(JJ)-XWGMIN))) 00369 ! 00370 ! calculate sources/sinks 00371 ! 00372 ZSINK2 (JJ) = -(ZEG(JJ) + ZETR(JJ) - PPG(JJ) )/(PD_G2(JJ)*XRHOLW) 00373 00374 ! Compute evolution of water content using linearized equations 00375 ! (see Boone 2000, Appendix F.2 for details) 00376 ! 00377 ! sink terms are treated explicitly, other terms are implicit 00378 ! 00379 ZDRAINCF2(JJ) = PC3(JJ,1) / (PD_G2(JJ) * XDAY) 00380 ZDELTA22(JJ) = ZDELTA2(JJ)*ZWFC(JJ) - (1.0-ZDELTA2(JJ))*ZWDRAIN2(JJ) 00381 ZC2(JJ) = 1.0 + PTSTEP*(ZDELTA2(JJ)*ZDRAINCF2(JJ) + (ZC4(JJ)/XDAY)) 00382 ZB2(JJ) = PTSTEP*ZC4(JJ)/(XDAY*ZC2(JJ)) 00383 ZA2(JJ) = ( ZWG2M(JJ) + PTSTEP*(ZSINK2(JJ) + ZDRAINCF2(JJ)*ZDELTA22(JJ)) )/ZC2(JJ) 00384 ! 00385 ZDRAINCF3(JJ) = PC3(JJ,2) / ( (PD_G3(JJ)-PD_G2(JJ)) * XDAY) 00386 ZDELTA33(JJ) = ZDELTA3(JJ)*PWFC(JJ) - (1.0-ZDELTA3(JJ))*ZWDRAIN3(JJ) 00387 ZC3(JJ) = 1.0 + PTSTEP*(ZDELTA3(JJ)*ZDRAINCF3(JJ) + ZFACTOR(JJ)*(ZC4(JJ)/XDAY)) 00388 ZB3(JJ) = PTSTEP*ZFACTOR(JJ)*(ZDELTA2(JJ)*ZDRAINCF2(JJ) + (ZC4(JJ)/XDAY) )/ZC3(JJ) 00389 ZA3(JJ) = ( ZWG3M(JJ) + PTSTEP*( & 00390 - ZFACTOR(JJ)*ZDRAINCF2(JJ)*ZDELTA22(JJ) & 00391 + ZDRAINCF3(JJ)*ZDELTA33(JJ)) )/ZC3(JJ) 00392 ! 00393 ! Advance volumetric water content values in time: 00394 ! system of 2 linear equations: 00395 ! 00396 PWG2(JJ) = ( ZA2(JJ)+ZB2(JJ)*ZA3(JJ) )/(1.0 - ZB2(JJ)*ZB3(JJ)) 00397 PWG3(JJ) = ZA3(JJ) + ZB3(JJ)*PWG2(JJ) 00398 ! 00399 ! Drainage (kg m-2 s-1): this term is implicit and is extracted directly from 00400 ! the drainage computation in the above equations. 00401 ! 00402 ZWDRAIN(JJ) = (XRHOLW*PC3(JJ,2)/XDAY)* & 00403 ( ZDELTA3(JJ)*(PWG3(JJ)-PWFC(JJ)) + (1.0-ZDELTA3(JJ))*ZWDRAIN3(JJ) ) 00404 ! 00405 ! As drainage is implicit, perform a check to prevent any negative drainage 00406 ! (can arise rarely and is generally negligible, but to ensure a high order conservation): 00407 ! 00408 PDRAIN(JJ) = MAX(0.0, ZWDRAIN(JJ)) 00409 PWG3(JJ) = PWG3(JJ) + (PDRAIN(JJ) - ZWDRAIN(JJ))*PTSTEP/((PD_G3(JJ)-PD_G2(JJ))*XRHOLW) 00410 ! 00411 ENDIF 00412 ENDDO 00413 END IF 00414 ! 00415 !------------------------------------------------------------------------------- 00416 ! 00417 DO JJ=1,SIZE(PTG) 00418 !* 7. EFFECT OF THE MELTING/FREEZING ON THE SOIL WATER CONTENT 00419 ! -------------------------------------------------------- 00420 ! 00421 !* 7.1 Effect on surface water liquid and ice reservoirs 00422 ! ------------------------------------------------- 00423 ! 00424 ! First, advance the surface layer ice content using the time tendency 00425 ! and sublimation (*heat effect* of sublimation already accounted 00426 ! for in latent heat flux calculation): 00427 ! 00428 PWGI1(JJ) = ZWGI1M(JJ) + PDWGI1(JJ) - PLEGI(JJ)*PTSTEP/(XLSTT*PD_G1(JJ)*XRHOLW) 00429 ! 00430 ! Next, update the liquid water content: 00431 ! 00432 PWG1(JJ) = PWG1(JJ) - PDWGI1(JJ) 00433 ! 00434 ! Make sure that ice has not dropped below 00435 ! zero due to sublimation (the ONLY way 00436 ! it can drop below 0). If it has, then 00437 ! freeze the needed liquid water (thus warming the 00438 ! layer) to ensure sublimation is accomodated, 00439 ! then extract this from liquid water store. 00440 ! This is a correction used ONLY when last traces 00441 ! of soil ice sublimate within a model time step. 00442 ! 00443 ZEXCESSFC(JJ)= 0.0 00444 ! 00445 ZEXCESSF(JJ) = MAX(0.0, - PWGI1(JJ)) 00446 PWG1(JJ) = PWG1(JJ) - ZEXCESSF(JJ) 00447 PWGI1(JJ) = PWGI1(JJ) + ZEXCESSF(JJ) 00448 ZEXCESSFC(JJ)= ZEXCESSFC(JJ) - ZEXCESSF(JJ) 00449 ! 00450 ! Modif H.Douville 26/08/03 (global scale) 00451 ! Make sure that ice has not raised above 00452 ! saturation (minus XWGMIN) due to sublimation. 00453 ! If it has, then melt the needed frozen water 00454 ! (thus cooling the layer) to ensure sublimation 00455 ! is accomodated, then extract this from frozen water store. 00456 ! 00457 ZEXCESSF(JJ) = MIN(0.0, PWSAT(JJ) - XWGMIN - PWGI1(JJ)) 00458 PWG1(JJ) = PWG1(JJ) - ZEXCESSF(JJ) 00459 PWGI1(JJ) = PWGI1(JJ) + ZEXCESSF(JJ) 00460 ZEXCESSFC(JJ)= ZEXCESSFC(JJ) - ZEXCESSF(JJ) 00461 ! 00462 ! Make sure that liquid has not dropped below 00463 ! minimum threshold: this could arise due to 00464 ! evaporation and ice formation. Melt the needed water. 00465 ! Normally simply a budget check, i.e. usually small but accounted 00466 ! for none-the-less to assure high accuracy. 00467 ! 00468 ZEXCESSF(JJ) = MAX(0.0, XWGMIN - PWG1(JJ)) 00469 PWGI1(JJ) = PWGI1(JJ) - ZEXCESSF(JJ) 00470 PWG1(JJ) = PWG1(JJ) + ZEXCESSF(JJ) 00471 ZEXCESSFC(JJ)= ZEXCESSFC(JJ) + ZEXCESSF(JJ) 00472 ! 00473 ! removes very small values due to computation precision 00474 ! 00475 IF(PWGI1(JJ) < 1.0E-10) THEN 00476 ZEXCESSF(JJ) = PWGI1(JJ) 00477 PWG1(JJ) = PWG1(JJ) + ZEXCESSF(JJ) 00478 PWGI1(JJ) = 0.0 00479 ZEXCESSFC(JJ)= ZEXCESSFC(JJ) + ZEXCESSF(JJ) 00480 ENDIF 00481 ! 00482 ! Cummulative phase change for the ice/liquid budget corrections: 00483 ! 00484 PTG(JJ) = PTG(JJ) - ZEXCESSFC(JJ)*XLMTT*PCT(JJ)*XRHOLW*PD_G1(JJ) 00485 ! 00486 ! 00487 !* 7.2 Effect on deep-soil liquid and ice reservoirs 00488 ! --------------------------------------------- 00489 ! 00490 ! Update the ice content using the ice tendency: 00491 ! Since this reservoir includes surface reservoir, add 00492 ! any changes in ice content due to sublimation: 00493 ! 00494 PWGI2(JJ) = ZWGI2M(JJ) + PDWGI2(JJ) - PLEGI(JJ)*PTSTEP/(XLSTT*PD_G2(JJ)*XRHOLW) 00495 ! 00496 ! Update the liquid water content: 00497 ! 00498 PWG2(JJ) = PWG2(JJ) - PDWGI2(JJ) 00499 ! 00500 ! Make sure that ice has not dropped below 00501 ! zero due to sublimation (as above). 00502 ! 00503 ZEXCESSFC(JJ)= 0.0 00504 ! 00505 ZEXCESSF(JJ) = MAX(0.0, -PWGI2(JJ)) 00506 PWG2(JJ) = PWG2(JJ) - ZEXCESSF(JJ) 00507 PWGI2(JJ) = PWGI2(JJ) + ZEXCESSF(JJ) 00508 ZEXCESSFC(JJ)= ZEXCESSFC(JJ) - ZEXCESSF(JJ) 00509 ! 00510 ! Budget check of minimum threshold for liquid 00511 ! water as for surface: MUCH LESS likely 00512 ! to be utilized, but retained for accuracy 00513 ! in energy and water balance (as above). 00514 ! 00515 ZEXCESSF(JJ) = MAX(0.0, XWGMIN - PWG2(JJ)) 00516 PWGI2(JJ) = PWGI2(JJ) - ZEXCESSF(JJ) 00517 PWG2(JJ) = PWG2(JJ) + ZEXCESSF(JJ) 00518 ZEXCESSFC(JJ)= ZEXCESSFC(JJ) + ZEXCESSF(JJ) 00519 ! 00520 ! removes very small values due to computation precision 00521 ! 00522 IF (PWGI2(JJ) < 1.0E-10 * PTSTEP) THEN 00523 ZEXCESSF(JJ) = PWGI2(JJ) 00524 PWG2 (JJ) = PWG2(JJ) + ZEXCESSF(JJ) 00525 PWGI2(JJ) = 0. 00526 ZEXCESSFC(JJ)= ZEXCESSFC(JJ) + ZEXCESSF(JJ) 00527 ENDIF 00528 ! 00529 ! Cummulative phase change for the ice/liquid budget corrections: 00530 ! 00531 PTG2(JJ) = PTG2(JJ) - ZEXCESSFC(JJ)*XLMTT*PCG(JJ)*XRHOLW*PD_G2(JJ) 00532 ! 00533 ! 00534 ENDDO 00535 ! 00536 IF (LHOOK) CALL DR_HOOK('HYDRO_SOIL',1,ZHOOK_HANDLE) 00537 !------------------------------------------------------------------------------- 00538 ! 00539 END SUBROUTINE HYDRO_SOIL