6 SUBROUTINE ice_soildif(KK, PK, PEK, PTSTEP, PKSFC_IVEG, PLEGI, PSOILHCAPZ, PWGI_EXCESS)
80 USE modd_isba_par
, ONLY : xwgmin
93 REAL,
INTENT(IN) :: PTSTEP
95 REAL,
DIMENSION(:),
INTENT(IN) :: PKSFC_IVEG, PLEGI
100 REAL,
DIMENSION(:,:),
INTENT(IN) :: PSOILHCAPZ
103 REAL,
DIMENSION(:),
INTENT(OUT) :: PWGI_EXCESS
114 REAL,
DIMENSION(SIZE(PEK%XTG,1),SIZE(PEK%XTG,2)) :: ZK, ZEXCESSFC
116 REAL,
DIMENSION(SIZE(PEK%XTG,1)) :: ZEXCESS
118 REAL :: ZWGMAX, ZPSIMAX, ZPSI, ZDELTAT
123 REAL(KIND=JPRB) :: ZHOOK_HANDLE
131 ini =
SIZE(pek%XTG,1)
132 inl = maxval(pk%NWG_LAYER)
144 zk(:,1) = pksfc_iveg(:)
151 idepth=pk%NWG_LAYER(jj)
154 zwgim = pek%XWGI(jj,jl)
155 zwgm = pek%XWG (jj,jl)
156 ztgm = pek%XTG (jj,jl)
162 zpsimax = min(kk%XMPOTSAT(jj,jl),
xlmtt*(pek%XTG(jj,jl)-
xtt)/(
xg*pek%XTG
164 zwork = zpsimax/kk%XMPOTSAT(jj,jl)
165 zlog = log(zwork)/kk%XBCOEF(jj,jl)
166 zwgmax = kk%XWSAT(jj,jl)*exp(-zlog)
172 zwork = pek%XWG(jj,jl)/kk%XWSAT(jj,jl)
173 zlog = kk%XBCOEF(jj,jl)*log(zwork)
174 zpsi = kk%XMPOTSAT(jj,jl)*exp(-zlog)
189 IF(zdeltat<0.0.AND.zwgm>=zwgmax.AND.zwork>=max(0.0,zwgm-zwgmax))
THEN 194 zphasem = (ptstep/pk%XTAUICE(jj))*min(zk(jj,jl)*
xci*
xrholi*max(0.
197 zphasef = (ptstep/pk%XTAUICE(jj))*min(zk(jj,jl)*
xci*
xrholi*max(0.
200 pek%XTG(jj,jl) = ztgm + (zphasef - zphasem)/(psoilhcapz(jj,jl)+zappheatcap
203 zphase = (psoilhcapz(jj,jl)+zappheatcap)*(pek%XTG(jj,jl)-ztgm)
216 pek%XWGI(:,1) = pek%XWGI(:,1) - plegi(:)*ptstep/pk%XDZG(:,1)
225 zexcess(:) = max(0.0, - pek%XWGI(:,1))
226 pek%XWG(:,1) = pek%XWG (:,1) - zexcess(:)
227 pek%XWGI(:,1) = pek%XWGI (:,1) + zexcess(:)
228 zexcessfc(:,1) = zexcessfc(:,1) - zexcess(:)
241 idepth=pk%NWG_LAYER(jj)
243 zexcess(jj) = max(0.0, pek%XWGI(jj,jl) - (kk%XWSAT(jj,jl)-xwgmin
247 pek%XWGI(jj,jl+1) = pek%XWGI(jj,jl+1) + zexcess(jj)*(pk%XDZG(jj
250 pwgi_excess(jj) = zexcess(jj)*pk%XDZG(jj,idepth)*
xrholw/ptstep
261 idepth=pk%NWG_LAYER(jj)
262 IF(jl<=idepth.AND.pek%XWGI(jj,jl)>0.0.AND.pek%XWGI(jj,jl)<1.0e-6)
THEN 263 pek%XWG (jj,jl) = pek%XWG(jj,jl) + pek%XWGI(jj,jl)
264 zexcessfc(jj,jl) = zexcessfc(jj,jl) + pek%XWGI(jj,jl)
265 pek%XWGI(jj,jl) = 0.0
267 pek%XTG(jj,jl) = pek%XTG(jj,jl) - zexcessfc(jj,jl)*
xlmtt*
xrholw/psoilhcapz
subroutine ice_soildif(KK, PK, PEK, PTSTEP, PKSFC_IVEG, PLEGI, PSO