59 USE modi_comput_cold_layers_thick
79 REAL,
DIMENSION(SIZE(DM%XHV)) :: ZSUMDG, ZSNOW, ZSUMFRD2, ZSUMFRD3
81 INTEGER :: INI,IDEPTH,IWORK,IMASK
83 REAL,
DIMENSION(SIZE(DM%XHV),IO%NGROUND_LAYER) :: ZPOND, ZTG, ZDG
85 REAL(KIND=JPRB) :: ZHOOK_HANDLE
92 IF (
lhook)
CALL dr_hook(
'AVERAGE_DIAG_MISC_ISBA_N',0,zhook_handle)
94 IF (.NOT.dm%LSURF_MISC_BUDGET)
THEN 95 IF (
lhook)
CALL dr_hook(
'AVERAGE_DIAG_MISC_ISBA_N',1,zhook_handle)
118 IF (dm%LPROSNOW .AND. npe%AL(1)%TSNOW%SCHEME==
"CRO")
THEN 119 dm%XSNDPT_1DY(:) = 0.
120 dm%XSNDPT_3DY(:) = 0.
121 dm%XSNDPT_5DY(:) = 0.
122 dm%XSNDPT_7DY(:) = 0.
123 dm%XSNSWE_1DY(:) = 0.
124 dm%XSNSWE_3DY(:) = 0.
125 dm%XSNSWE_5DY(:) = 0.
126 dm%XSNSWE_7DY(:) = 0.
127 dm%XSNRAM_SONDE(:) = 0.
128 dm%XSN_WETTHCKN(:) = 0.
129 dm%XSN_REFRZNTHCKN(:) = 0.
143 dm%XHV (imask) = dm%XHV (imask) + pk%XPATCH(ji) * dmk%XHV(ji)
146 dm%XPSNG(imask) = dm%XPSNG (imask) + pk%XPATCH(ji) * dmk%XPSNG(ji)
147 dm%XPSNV(imask) = dm%XPSNV (imask) + pk%XPATCH(ji) * dmk%XPSNV(ji)
148 dm%XPSN (imask) = dm%XPSN (imask) + pk%XPATCH(ji) * dmk%XPSN (ji)
151 dm%XFSAT (imask) = dm%XFSAT(imask) + pk%XPATCH(ji) * dmk%XFSAT(ji)
154 dm%XFFG (imask) = dm%XFFG (imask) + pk%XPATCH(ji) * dmk%XFFG(ji)
155 dm%XFFV (imask) = dm%XFFV (imask) + pk%XPATCH(ji) * dmk%XFFV(ji)
156 dm%XFF (imask) = dm%XFF (imask) + pk%XPATCH(ji) * dmk%XFF (ji)
159 IF (pek%XLAI(ji)/=
xundef) dm%XLAI(imask) = dm%XLAI(imask) + pk%XPATCH
162 dm%XTWSNOW(imask) = dm%XTWSNOW(imask) + pk%XPATCH(ji) * dmk%XTWSNOW(ji
165 IF (dmk%XTWSNOW(ji)>0.0)
THEN 167 dm%XTTSNOW(imask) = dm%XTTSNOW(imask) + pk%XPATCH(ji) * dmk%XTTSNOW
170 IF (dm%LPROSNOW .AND. npe%AL(1)%TSNOW%SCHEME==
"CRO")
THEN 172 dm%XSNDPT_1DY(imask) = dm%XSNDPT_1DY(imask) + pk%XPATCH(ji) * dmk%XSNDPT_1DY
203 dm%XSOIL_SWI (:) = 0.
204 dm%XSOIL_TSWI (:) = 0.
205 dm%XSOIL_TWG (:) = 0.
206 dm%XSOIL_TWGI (:) = 0.
208 dm%XSOIL_WGI (:) = 0.
213 IF(io%CISBA==
'DIF')
THEN 226 DO jl=1,io%NGROUND_LAYER
229 ztg(imask,jl) = ztg(imask,jl) + pk%XPATCH(ji) * pek%XTG(ji,jl)
230 zdg(imask,jl) = zdg(imask,jl) + pk%XPATCH(ji) * pk%XDG (ji,jl)
243 DO jl = 1,io%NGROUND_LAYER
246 idepth = pk%NWG_LAYER(ji)
247 IF(jl<=idepth.AND.idepth/=
nundef)
THEN 251 zwork = pk%XDZG(ji,jl)
253 dm%XSWI (imask,jl) = dm%XSWI (imask,jl) + zwork*pk%XPATCH(ji)
257 dm%XSOIL_SWI (imask) = dm%XSOIL_SWI (imask) + zwork * pk%XPATCH
271 WHERE(zpond(:,:)> 0.)
272 dm%XSWI (:,:) = dm%XSWI (:,:) / zpond(:,:)
273 dm%XTSWI(:,:) = dm%XTSWI(:,:) / zpond(:,:)
280 IF(dm%LSURF_MISC_DIF)
THEN 286 dm%XFRD2_TSWI (:) = 0.
287 dm%XFRD2_TWG (:) = 0.
288 dm%XFRD2_TWGI (:) = 0.
290 dm%XFRD3_TSWI (:) = 0.
291 dm%XFRD3_TWG (:) = 0.
292 dm%XFRD3_TWGI (:) = 0.
302 DO jl = 1,io%NGROUND_LAYER
303 idepth= pk%NWG_LAYER(ji)
305 IF(jl<=idepth.AND.idepth/=
nundef)
THEN 308 zwork = min(pk%XDZG(ji,jl),max(0.0,pk%XDG2(ji)-pk%XDG(ji,jl)
315 zwork =min(pk%XDZG(ji,jl),max(0.0,pk%XDG(ji,jl)-pk%XDG2(ji)
327 WHERE(zsumfrd2(:)>0.0)
328 dm%XFRD2_TSWI (:) = dm%XFRD2_TSWI (:) / zsumfrd2(:)
329 dm%XFRD2_TWG (:) = dm%XFRD2_TWG (:) / zsumfrd2(:)
330 dm%XFRD2_TWGI (:) = dm%XFRD2_TWGI (:) / zsumfrd2(:)
332 dm%XFRD2_TSWI (:) =
xundef 335 WHERE(zsumfrd3(:)>0.0)
336 dm%XFRD3_TSWI (:) = dm%XFRD3_TSWI (:) / zsumfrd3(:)
337 dm%XFRD3_TWG (:) = dm%XFRD3_TWG (:) / zsumfrd3(:)
338 dm%XFRD3_TWGI (:) = dm%XFRD3_TWGI (:) / zsumfrd3(:)
340 dm%XFRD3_TSWI (:) =
xundef 348 ELSE ! force-restore
case 359 dm%XSWI (imask,1) = dm%XSWI (imask,1) + pk%XPATCH(ji) * dmk%XSWI (ji
364 dm%XSOIL_SWI (imask) = dm%XSOIL_SWI (imask) + pk%XPATCH(ji) * pk%XDG
369 zsumdg(imask) = zsumdg(imask) + pk%XPATCH(ji) * pk%XDG(ji,io%NGROUND_LAYER
374 IF(io%CISBA==
'3-L')
THEN 385 zwork=max(0.0,pk%XDG(ji,3)-pk%XDG(ji,2))
388 zpond(imask,3) = zpond(imask,3) + pk%XPATCH(ji)
398 WHERE(zpond(:,3)>0.0)
399 dm%XSWI (:,3) = dm%XSWI (:,3) / zpond(:,3)
400 dm%XTSWI(:,3) = dm%XTSWI(:,3) / zpond(:,3)
419 dm%XSOIL_SWI (:) = dm%XSOIL_SWI (:)/zsumdg(:)
420 dm%XSOIL_TSWI(:) = dm%XSOIL_TSWI(:)/zsumdg(:)
421 dm%XSOIL_WG (:) = dm%XSOIL_TWG (:)/zsumdg(:)
422 dm%XSOIL_WGI (:) = dm%XSOIL_TWGI(:)/zsumdg(:)
426 dm%XSOIL_TWG (:)= dm%XSOIL_TWG (:) *
xrholw 427 dm%XSOIL_TWGI(:)= dm%XSOIL_TWGI(:) *
xrholw 431 dm%XTTSNOW(:) = dm%XTTSNOW(:)/zsnow(:)
438 IF (
lhook)
CALL dr_hook(
'AVERAGE_DIAG_MISC_ISBA_N',1,zhook_handle)
integer, parameter nundef
subroutine average_diag_misc_isba_n(DM, NDM, IO, NP, NPE)
subroutine comput_cold_layers_thick(PDG, PTG, PALT, PFLT)