34 USE modd_isba_par
, ONLY : xwgmin
40 USE modi_prep_ver_snow
57 REAL,
DIMENSION(:),
INTENT(IN) :: PZS
62 REAL,
DIMENSION(:),
ALLOCATABLE :: ZWGTOT
63 REAL,
DIMENSION(:),
ALLOCATABLE :: ZDW
64 REAL,
DIMENSION(:),
ALLOCATABLE :: ZZSFREEZE
67 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZWGI_CLIM_GRAD
69 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZTG_LS
71 REAL :: ZGRADX = 5.e-4
73 REAL(KIND=JPRB) :: ZHOOK_HANDLE
78 IF (
lhook)
CALL dr_hook(
'PREP_VER_TEB_VEG',0,zhook_handle)
79 ALLOCATE(zwgi_clim_grad(
SIZE(pek%XWG,1),
SIZE(pek%XWG,2)))
81 zwgi_clim_grad(:,:) = zgradx * exp( - p%XDG(:,:) / zh0 )
86 ALLOCATE(ztg_ls(
SIZE(pek%XTG,1),
SIZE(pek%XTG,2)))
87 ztg_ls(:,:) = pek%XTG(:,:)
89 DO jl=1,
SIZE(pek%XTG,2)
90 WHERE(pek%XTG(:,jl)/=
xundef) &
98 ALLOCATE(zzsfreeze(
SIZE(pek%XWG,1)))
99 ALLOCATE(zwgtot(
SIZE(pek%XWG,1)))
100 ALLOCATE(zdw(
SIZE(pek%XWG,1)))
104 iwork=
SIZE(pek%XTG,2)
112 WHERE(pek%XTG(:,jl)/=
xundef)
114 WHERE (ztg_ls(:,jl) <
xtt)
118 WHERE (pzs > zzsfreeze)
119 zdw(:) = zwgi_clim_grad(:,jl) * (pzs -
xzs_ls)
121 zdw(:) = zwgi_clim_grad(:,jl) * (zzsfreeze -
xzs_ls) + zgradx * (pzs - zzsfreeze)
126 zdw(:) = zwgi_clim_grad(:,jl) * (pzs -
xzs_ls)
134 zdw(:) = zgradx * (pzs -
xzs_ls)
138 zdw(:) = zwgi_clim_grad(:,jl) * (pzs - zzsfreeze)
146 WHERE(pek%XWG(:,jl)/=
xundef)
147 zwgtot(:) = pek%XWG(:,jl) + pek%XWGI(:,jl)
150 WHERE(pek%XWG(:,jl)/=
xundef)
151 pek%XWGI(:,jl) = pek%XWGI(:,jl) + zdw(:)
152 pek%XWG (:,jl) = pek%XWG (:,jl) - zdw(:)
155 WHERE (pek%XWGI(:,jl) < 0..AND.pek%XWGI(:,jl)/=
xundef)
157 pek%XWG (:,jl) = zwgtot(:)
160 WHERE (pek%XWG(:,jl) < xwgmin.AND.pek%XWG(:,jl)/=
xundef)
161 pek%XWG (:,jl) = xwgmin
162 pek%XWGI(:,jl) = zwgtot(:) - xwgmin
165 WHERE(pek%XWGI(:,jl) > 0..AND.pek%XWGI(:,jl)/=
xundef)
166 pek%XTG(:,jl) = min(
xtt,pek%XTG(:,jl))
168 pek%XTG(:,jl) = max(
xtt,pek%XTG(:,jl))
177 IF (io%CISBA==
'3-L')
THEN 178 WHERE (pek%XWGI(:,3) /=
xundef)
179 pek%XWG (:,3) = pek%XWG(:,3)+pek%XWGI(:,3)
181 pek%XTG (:,3) = ztg_ls(:,3)
185 DEALLOCATE(zzsfreeze)
186 DEALLOCATE(zwgi_clim_grad)
191 WHERE (pek%XTG(:,1:
SIZE(pek%XWG,2)) ==
xundef)
201 IF (io%CISBA==
'DIF')
THEN 202 ideep_soil = io%NGROUND_LAYER
213 IF (
lhook)
CALL dr_hook(
'PREP_VER_TEB_VEG',1,zhook_handle)
subroutine prep_ver_snow(TPSNOW, PZS_LS, PZS, PTG_LS, PTG, KDEEP_SOIL)
real, dimension(:), allocatable xzs_ls
subroutine prep_ver_teb_veg(P, PEK, IO, PZS)
real, parameter xt_clim_grad