6 SUBROUTINE hydro(IO, KK, PK, PEK, AG, DEK, DMK, OMEB, PTSTEP, PVEG, &
7 PWRMAX, PSNOW_THRUFAL, PEVAPCOR, PSUBVCOR, PSOILHCAPZ, &
8 PF2WGHT, PF2, PPS, PIRRIG_GR, PDELHEATG, PDELHEATG_SFC,&
9 PDELPHASEG, PDELPHASEG_SFC )
89 USE modd_isba_par
, ONLY : xwgmin, xdenom_min
99 USE modi_hydro_soildif
118 TYPE(
agri_t),
INTENT(INOUT) :: AG
122 LOGICAL,
INTENT(IN) :: OMEB
124 REAL,
INTENT(IN) :: PTSTEP
127 REAL,
DIMENSION(:),
INTENT(IN) :: PVEG, PWRMAX
132 REAL,
DIMENSION(:),
INTENT(IN) :: PSNOW_THRUFAL, PEVAPCOR, PSUBVCOR
141 REAL,
DIMENSION(:),
INTENT(IN) :: PPS, PF2
145 REAL,
DIMENSION(:,:),
INTENT(IN) :: PF2WGHT
148 REAL,
DIMENSION(:,:),
INTENT(IN) :: PSOILHCAPZ
151 REAL,
DIMENSION(:),
INTENT(INOUT) :: PDELHEATG, PDELHEATG_SFC
155 REAL,
DIMENSION(:),
INTENT(OUT) :: PDELPHASEG, PDELPHASEG_SFC
159 REAL ,
DIMENSION(:),
INTENT(IN) :: PIRRIG_GR
166 INTEGER :: INJ, INL, IDEKTH
171 REAL,
DIMENSION(SIZE(PVEG)) :: ZPG, ZPG_MELT, ZDUNNE,
191 REAL,
DIMENSION(SIZE(PVEG)) :: ZDWGI1, ZDWGI2, ZKSFC_IVEG
198 REAL,
DIMENSION(SIZE(PVEG)) :: ZWGI_EXCESS, ZF2
202 REAL,
DIMENSION(SIZE(PEK%XWG,1),SIZE(PEK%XWG,2)) :: ZQSAT, ZQSATI, ZTI, ZPS
205 REAL,
DIMENSION(SIZE(PEK%XWG,1),SIZE(PEK%XWG,2)) :: ZWGI0
211 REAL,
PARAMETER :: ZINSOLFRZ_VEG = 0.20
213 REAL,
PARAMETER :: ZINSOLFRZ_LAI = 30.0
215 REAL,
PARAMETER :: ZTIMEMAX = 900.
217 REAL(KIND=JPRB) :: ZHOOK_HANDLE
238 zrr(:) = dmk%XRRSFC(:)
253 pdelphaseg_sfc(:)= 0.0
256 zf2(:) = max(xdenom_min,pf2(:))
266 zlev(:) = dek%XLEV(:)
267 zletr(:) = dek%XLETR(:)
268 zleg(:) = dek%XLEG(:)
269 zlegi(:) = dek%XLEGI(:)
272 zevapcor(:) = pevapcor(:) + psubvcor(:)
279 IF(pek%TSNOW%SCHEME ==
'3-L' .OR. pek%TSNOW%SCHEME ==
'CRO' .OR. io%CISBA
'DIF'THEN 280 zlev(:) = (1.0-pek%XPSNV(:)-kk%XFFV(:)) * dek%XLEV(:)
281 zletr(:) = (1.0-pek%XPSNV(:)-kk%XFFV(:)) * dek%XLETR(:)
282 zleg(:) = (1.0-pek%XPSNG(:)-kk%XFFG(:)) * dek%XLEG(:)
283 zlegi(:) = (1.0-pek%XPSNG(:)-kk%XFFG(:)) * dek%XLEGI(:)
286 zlev(:) = dek%XLEV(:)
287 zletr(:) = dek%XLETR(:)
288 zleg(:) = dek%XLEG(:)
289 zlegi(:) = dek%XLEGI(:)
290 zpsnv(:) = pek%XPSNV(:)+kk%XFFV(:)
293 zevapcor(:) = pevapcor(:)
304 IF(io%CISBA ==
'2-L' .OR. io%CISBA ==
'3-L')
THEN 305 zwsat_avg(:) = kk%XWSAT(:,1)
306 zwwilt_avg(:) = kk%XWWILT(:,1)
307 zwfc_avg(:) = kk%XWFC(:,1)
310 IF (io%CISBA ==
'3-L')
THEN 311 zdg3(:) = pk%XDG(:,3)
312 zwg3(:) = pek%XWG(:,3)
327 dek%XIRRIG_FLUX(:)=0.0
332 IF (
ASSOCIATED(ag%LIRRIGATE))
THEN 333 IF (
SIZE(ag%LIRRIGATE)>0)
THEN 334 WHERE (ag%LIRRIGATE(:) .AND. pek%XIRRIG(:)>0. .AND. pek%XIRRIG(:)
344 CALL hydro_veg(io%CRAIN, ptstep, kk%XMUF, zrr, zlev, zletr, pveg, &
345 zpsnv, pek%XWR(:), pwrmax, zpg, dek%XDRIP, dek%XRRVEG
354 zpg(:) = dmk%XRRSFC(:)
360 dek%XIRRIG_FLUX(:) = dek%XIRRIG_FLUX(:) + pirrig_gr(:)
362 zpg(:) = zpg(:) + pirrig_gr(:)
376 IF(pek%TSNOW%SCHEME ==
'3-L' .OR. pek%TSNOW%SCHEME ==
'CRO' .OR. io%CISBA
'DIF'THEN 378 zpg_melt(:) = zpg_melt(:) + psnow_thrufal(:)
384 dek%XMELT(:) = dek%XMELT(:) + psnow_thrufal(:)
388 CALL hydro_snow(io%LGLACIER, ptstep, pk%XVEGTYPE_PATCH(:,:), dmk%XSRSFC
402 CALL hydro_sgh(io, kk, pk, pek, dek, dmk, ptstep, zpg, zpg_melt, zdunne
430 IF(ptstep>=ztimemax)
THEN 431 indt = max(2,nint(ptstep/ztimemax))
434 ztstep = ptstep/
REAL(indt)
443 WHERE(pek%XLAI(:)/=
xundef .AND. pveg(:)/=0.)
444 zksfc_iveg(:) = (1.0-zinsolfrz_veg*pveg(:)) * min(max(1.0-(pek%XLAI(
450 zwgi0(:,:) = pek%XWGI(:,:)
452 IF (io%CISBA==
'DIF')
THEN 454 inj =
SIZE(pk%XDG(:,:),1)
455 inl = maxval(pk%NWG_LAYER(:))
464 idekth=pk%NWG_LAYER(jj)
467 zti(jj,jl) = min(
xtt,pek%XTG(jj,jl))
475 zqsat(:,:) =
qsat(pek%XTG,zps,pk%NWG_LAYER,inl)
476 zqsati(:,:) =
qsati(zti,zps,pk%NWG_LAYER,inl)
482 zevapcor(:) = zevapcor(:) /
xrholw 483 zleg(:) = zleg(:) /(
xrholw*pk%XLVTT(:))
484 zletr(:) = (zletr(:)/zf2(:))/(
xrholw*pk%XLVTT(:))
485 zlegi(:) = zlegi(:) /(
xrholw*pk%XLSTT(:))
489 CALL hydro_soildif(io, kk, pk, pek, ztstep, zpg, zletr, zleg, zevapcor
493 CALL ice_soildif(kk, pk, pek, ztstep, zksfc_iveg, zlegi, psoilhcapz,
495 dek%XDRAIN(:) = dek%XDRAIN(:) + (zdrain(:)+zqsb(:)+zwgi_excess(:))/
REAL(indt)
496 dek%XQSB (:) = dek%XQSB (:) + zqsb(:)/
REAL(indt)
497 dek%XHORT (:) = dek%XHORT (:) + zhorton(:)/
REAL(indt)
503 pdelphaseg_sfc(:) = (pek%XWGI(:,1)-zwgi0(:,1))*(
xlmtt*
xrholw/ptstep)
508 pdelphaseg(jj) = pdelphaseg(jj) + (pek%XWGI(jj,jl)-zwgi0(jj,jl))
512 pdelheatg_sfc(:) = pdelheatg_sfc(:) + pdelphaseg_sfc(:)
513 pdelheatg(:) = pdelheatg(:) + pdelphaseg(:)
522 CALL ice_soilfr(io, kk, pk, pek, dmk, ztstep, zksfc_iveg, zdwgi1, zdwgi2
524 CALL hydro_soil(io, kk, pk, pek, dmk, ztstep, zletr, zleg, zpg, zevapcor
527 dek%XDRAIN (:) = dek%XDRAIN (:) + zdrain(:)/
REAL(indt)
528 dek%XRUNOFF(:) = dek%XRUNOFF(:) + zrunoff(:)/
REAL(indt)
536 pdelphaseg_sfc(:) = (pek%XWGI(:,1)-zwgi0(:,1))*(
xlmtt*
xrholw/ptstep
541 IF (io%CISBA ==
'3-L') pek%XWG(:,3) = zwg3(:)
551 IF (io%CRUNOFF==
'TOPD')
THEN 571 dek%XRUNOFF(:) = dek%XRUNOFF(:) + zdunne(:) + dek%XHORT(:)
subroutine hydro_veg(HRAIN, PTSTEP, PMUF, PRR, PLEV, PLETR, PVEG, PPSNV, PWR, PWRMAX, PPG, PDRIP, PRRVEG, PLVTT)
subroutine hydro_soildif(IO, KK, PK, PEK, PTSTEP, PPG, PLETR, PLEG
real, dimension(:), allocatable xrunoff_top
subroutine hydro_soil(IO, KK, PK, PEK, DMK, PTSTEP, PLETR, PLEG, PPG, PEVAPCOR, PD_G3, PWSAT, PWFC, PDWGI1, PDWGI2, PLEGI, PWG3, PRUNOFF, PDRAIN, PWWILT)
subroutine ice_soilfr(IO, KK, PK, PEK, DMK, PTSTEP, PKSFC_IVEG, PD
subroutine ice_soildif(KK, PK, PEK, PTSTEP, PKSFC_IVEG, PLEGI, PSO
integer, dimension(:), allocatable nmaskt_patch
real, dimension(:), allocatable xas_nature
integer, parameter nundef
subroutine hydro_sgh(IO, KK, PK, PEK, DEK, DMK, PTSTEP, PPG, PPG_M
subroutine hydro_snow(OGLACIER, PTSTEP, PVEGTYPE, PSR, PLES, PMELT
subroutine hydro(IO, KK, PK, PEK, AG, DEK, DMK, OMEB, PTSTEP, PVEG
real, dimension(:), allocatable xatop