68 REAL,
DIMENSION(:),
INTENT(IN) :: PMESH_SIZE
77 REAL,
DIMENSION(:),
INTENT(IN) :: PRAIN
82 REAL,
DIMENSION(SIZE(PRAIN)) :: ZDIST, ZBETA, ZFSAT
86 REAL,
DIMENSION(SIZE(PRAIN)) :: ZD_TOP, ZW_TOP, ZQTOP
91 INTEGER,
DIMENSION(SIZE(PRAIN)) :: IUP,IDOWN
94 INTEGER,
DIMENSION(SIZE(PRAIN)) :: NMASK
96 REAL,
DIMENSION(SIZE(PRAIN)) :: ZWSAT_AVG, ZWWILT_AVG
103 REAL :: ZW_UP, ZW_DOWN
104 REAL :: ZF_UP, ZF_DOWN, ZSLOPEF
105 REAL :: ZQ_UP, ZQ_DOWN, ZSLOPEQ
107 INTEGER :: INJ, JJ, JI, JP, JTAB, ICOUNT, &
109 REAL(KIND=JPRB) :: ZHOOK_HANDLE
113 IF (
lhook)
CALL dr_hook(
'ISBA_SGH_UPDATE',0,zhook_handle)
122 IF(io%CRAIN==
'SGH')
THEN 133 zdist(:) = sqrt(pmesh_size(:))/
xmtokm 135 WHERE(zdist(:)>=15.0)
143 k%XMUF (:) = 1.0 - exp(-zbeta(:)*(prain(:)*
xstohr))
150 IF (pk%NSIZE_P>0 )
THEN 153 kk%XMUF(ji) = k%XMUF(imask)
163 IF(io%CRUNOFF==
'SGH')
THEN 173 IF(io%CISBA==
'DIF')
THEN 180 IF (pk%NSIZE_P>0 )
THEN 182 DO jl = 1,io%NLAYER_DUN
186 zd_top(imask) = zd_top(imask) + pk%XPATCH(ji)*pk%XSOILWGHT
197 zwsat_avg(:) = zwsat_avg(:)/zd_top(:)
198 zwwilt_avg(:) = zwwilt_avg(:)/zd_top(:)
199 zw_top(:) = zw_top(:)/zd_top(:)
208 IF (pk%NSIZE_P>0 )
THEN 212 zd_top(imask) = zd_top(imask)+pk%XRUNOFFD(ji)*pk%XPATCH(ji)
213 zw_top(imask) = zw_top(imask)+pk%XRUNOFFD(ji)*pk%XPATCH(ji)*pek%XWG
220 zw_top(:) = zw_top(:) / zd_top(:)
223 zwsat_avg(:) = k%XWSAT(:,1)
224 zwwilt_avg(:) = k%XWD0 (:,1)
234 IF((s%XTI_MEAN(ji)/=
xundef.AND.zw_top(ji)<zwsat_avg(ji).AND.zw_top(ji
THEN 238 IF(zw_top(ji)>=zwsat_avg(ji))
THEN 249 IF(s%XTAB_WTOP(ji,jtab)>zw_top(ji))
THEN 252 ELSEIF(s%XTAB_WTOP(ji,jtab)==zw_top(ji))
THEN 269 zf_up = s%XTAB_FSAT(ji,iup(jj))
270 zf_down = s%XTAB_FSAT(ji,idown(jj))
271 zq_up = s%XTAB_QTOP(ji,iup(jj))
272 zq_down = s%XTAB_QTOP(ji,idown(jj))
273 zw_up = s%XTAB_WTOP(ji,iup(jj))
274 zw_down = s%XTAB_WTOP(ji,idown(jj))
279 IF(iup(jj)/=idown(jj))
THEN 280 zslopef = (zf_up-zf_down)/(zw_up-zw_down)
281 zslopeq = (zq_up-zq_down)/(zw_up-zw_down)
284 zfsat(ji) = zf_down+(zw_top(ji)-zw_down)*zslopef
285 zqtop(ji) = zq_down+(zw_top(ji)-zw_down)*zslopeq
295 kk%XFSAT(ji) = zfsat(imask)
303 IF(io%CISBA==
'DIF')
THEN 309 DO jl=1,io%NLAYER_DUN
312 pk%XTOPQS(ji,jl) = k%XKANISO(imask,jl) * pk%XCONDSAT(ji,1) *
323 IF (
lhook)
CALL dr_hook(
'ISBA_SGH_UPDATE',1,zhook_handle)
integer, parameter ndimtab
subroutine isba_sgh_update(PMESH_SIZE, IO, S, K, NK, NP, NPE, PRA