42 USE modd_prep, ONLY : xzs_ls, xt_clim_grad
43 USE modd_csts, ONLY : xtt, xday, xlmtt, xrholw
46 USE modi_prep_ver_snow
49 USE yomhook
,ONLY : lhook, dr_hook
50 USE parkind1
,ONLY : jprb
69 REAL,
DIMENSION(:),
ALLOCATABLE :: zwgtot
70 REAL,
DIMENSION(:),
ALLOCATABLE :: zdw
71 REAL,
DIMENSION(:),
ALLOCATABLE :: zzsfreeze
74 REAL,
DIMENSION(:,:),
ALLOCATABLE :: zwgi_clim_grad
76 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ztg_ls
78 REAL :: zgradx = 5.e-4
80 REAL(KIND=JPRB) :: zhook_handle
85 IF (lhook) CALL dr_hook(
'PREP_VER_TEB_GARDEN',0,zhook_handle)
86 ALLOCATE(zwgi_clim_grad(
SIZE(tgd%CUR%XWG,1),
SIZE(tgd%CUR%XWG,2)))
88 zwgi_clim_grad(:,:) = zgradx * exp( - tgdp%XDG(:,:) / zh0 )
93 ALLOCATE(ztg_ls(
SIZE(tgd%CUR%XTG,1),
SIZE(tgd%CUR%XTG,2)))
94 ztg_ls(:,:) = tgd%CUR%XTG(:,:)
96 DO jl=1,
SIZE(tgd%CUR%XTG,2)
97 WHERE(tgd%CUR%XTG(:,jl)/=xundef) &
98 tgd%CUR%XTG(:,jl) = tgd%CUR%XTG(:,jl) + xt_clim_grad * (top%XZS - xzs_ls)
105 ALLOCATE(zzsfreeze(
SIZE(tgd%CUR%XWG,1)))
106 ALLOCATE(zwgtot(
SIZE(tgd%CUR%XWG,1)))
107 ALLOCATE(zdw(
SIZE(tgd%CUR%XWG,1)))
111 iwork=
SIZE(tgd%CUR%XTG,2)
117 zzsfreeze(:) = top%XZS + (xtt - tgd%CUR%XTG(:,jl)) / xt_clim_grad
119 WHERE(tgd%CUR%XTG(:,jl)/=xundef)
121 WHERE (ztg_ls(:,jl) < xtt)
123 WHERE (top%XZS <= xzs_ls)
125 WHERE (top%XZS > zzsfreeze)
126 zdw(:) = zwgi_clim_grad(:,jl) * (top%XZS - xzs_ls)
128 zdw(:) = zwgi_clim_grad(:,jl) * (zzsfreeze - xzs_ls) + zgradx * (top%XZS - zzsfreeze)
133 zdw(:) = zwgi_clim_grad(:,jl) * (top%XZS - xzs_ls)
139 WHERE (top%XZS <= xzs_ls)
141 zdw(:) = zgradx * (top%XZS - xzs_ls)
145 zdw(:) = zwgi_clim_grad(:,jl) * (top%XZS - zzsfreeze)
153 WHERE(tgd%CUR%XWG(:,jl)/=xundef)
154 zwgtot(:) = tgd%CUR%XWG(:,jl) + tgd%CUR%XWGI(:,jl)
157 WHERE(tgd%CUR%XWG(:,jl)/=xundef)
158 tgd%CUR%XWGI(:,jl) = tgd%CUR%XWGI(:,jl) + zdw(:)
159 tgd%CUR%XWG (:,jl) = tgd%CUR%XWG (:,jl) - zdw(:)
162 WHERE (tgd%CUR%XWGI(:,jl) < 0..AND.tgd%CUR%XWGI(:,jl)/=xundef)
163 tgd%CUR%XWGI(:,jl) = 0.
164 tgd%CUR%XWG (:,jl) = zwgtot(:)
167 WHERE (tgd%CUR%XWG(:,jl) < xwgmin.AND.tgd%CUR%XWG(:,jl)/=xundef)
168 tgd%CUR%XWG (:,jl) = xwgmin
169 tgd%CUR%XWGI(:,jl) = zwgtot(:) - xwgmin
172 WHERE(tgd%CUR%XWGI(:,jl) > 0..AND.tgd%CUR%XWGI(:,jl)/=xundef)
173 tgd%CUR%XTG(:,jl) = min(xtt,tgd%CUR%XTG(:,jl))
175 tgd%CUR%XTG(:,jl) = max(xtt,tgd%CUR%XTG(:,jl))
184 IF (tvg%CISBA==
'3-L')
THEN
185 WHERE (tgd%CUR%XWGI(:,3) /= xundef)
186 tgd%CUR%XWG (:,3) = tgd%CUR%XWG(:,3)+tgd%CUR%XWGI(:,3)
187 tgd%CUR%XWGI(:,3) = 0.
188 tgd%CUR%XTG (:,3) = ztg_ls(:,3)
192 DEALLOCATE(zzsfreeze)
193 DEALLOCATE(zwgi_clim_grad)
198 WHERE (tgd%CUR%XTG(:,1:
SIZE(tgd%CUR%XWG,2)) == xundef)
199 tgd%CUR%XWG (:,:) = xundef
200 tgd%CUR%XWGI(:,:) = xundef
208 IF (tvg%CISBA==
'DIF')
THEN
209 ideep_soil = tgdo%NGROUND_LAYER
213 CALL
prep_ver_snow(tgd%CUR%TSNOW,xzs_ls,top%XZS,spread(ztg_ls,3,1),spread(tgd%CUR%XTG,3,1),ideep_soil)
220 IF (lhook) CALL dr_hook(
'PREP_VER_TEB_GARDEN',1,zhook_handle)
subroutine prep_ver_snow(TPSNOW, PZS_LS, PZS, PTG_LS, PTG, KDEEP_SOIL)
subroutine prep_ver_teb_garden(TGD, TGDO, TGDP, TOP, TVG)