41 USE modd_prep, ONLY : xzs_ls, xt_clim_grad
42 USE modd_csts, ONLY : xtt, xday, xlmtt, xrholw
45 USE modi_prep_ver_snow
48 USE yomhook
,ONLY : lhook, dr_hook
49 USE parkind1
,ONLY : jprb
67 REAL,
DIMENSION(:),
ALLOCATABLE :: zwgtot
68 REAL,
DIMENSION(:),
ALLOCATABLE :: zdw
69 REAL,
DIMENSION(:),
ALLOCATABLE :: zzsfreeze
72 REAL,
DIMENSION(:,:),
ALLOCATABLE :: zwgi_clim_grad
74 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ztg_ls
76 REAL :: zgradx = 5.e-4
78 REAL(KIND=JPRB) :: zhook_handle
83 IF (lhook) CALL dr_hook(
'PREP_VER_TEB_GREENROOF',0,zhook_handle)
84 ALLOCATE(zwgi_clim_grad(
SIZE(tgr%CUR%XWG,1),
SIZE(tgr%CUR%XWG,2)))
86 zwgi_clim_grad(:,:) = zgradx * exp( - tgrp%XDG(:,:) / zh0 )
91 ALLOCATE(ztg_ls(
SIZE(tgr%CUR%XTG,1),
SIZE(tgr%CUR%XTG,2)))
92 ztg_ls(:,:) = tgr%CUR%XTG(:,:)
94 DO jl=1,
SIZE(tgr%CUR%XTG,2)
95 WHERE(tgr%CUR%XTG(:,jl)/=xundef) &
96 tgr%CUR%XTG(:,jl) = tgr%CUR%XTG(:,jl) + xt_clim_grad * (top%XZS - xzs_ls)
103 ALLOCATE(zzsfreeze(
SIZE(tgr%CUR%XWG,1)))
104 ALLOCATE(zwgtot(
SIZE(tgr%CUR%XWG,1)))
105 ALLOCATE(zdw(
SIZE(tgr%CUR%XWG,1)))
109 iwork=
SIZE(tgr%CUR%XTG,2)
116 zzsfreeze(:) = top%XZS + (xtt - tgr%CUR%XTG(:,jl)) / xt_clim_grad
118 WHERE(tgr%CUR%XTG(:,jl)/=xundef)
120 WHERE (ztg_ls(:,jl) < xtt)
122 WHERE (top%XZS <= xzs_ls)
124 WHERE (top%XZS > zzsfreeze)
125 zdw(:) = zwgi_clim_grad(:,jl) * (top%XZS - xzs_ls)
127 zdw(:) = zwgi_clim_grad(:,jl) * (zzsfreeze - xzs_ls) + zgradx * (top%XZS - zzsfreeze)
132 zdw(:) = zwgi_clim_grad(:,jl) * (top%XZS - xzs_ls)
138 WHERE (top%XZS <= xzs_ls)
140 zdw(:) = zgradx * (top%XZS - xzs_ls)
144 zdw(:) = zwgi_clim_grad(:,jl) * (top%XZS - zzsfreeze)
152 WHERE(tgr%CUR%XWG(:,jl)/=xundef)
153 zwgtot(:) = tgr%CUR%XWG(:,jl) + tgr%CUR%XWGI(:,jl)
156 WHERE(tgr%CUR%XWG(:,jl)/=xundef)
157 tgr%CUR%XWGI(:,jl) = tgr%CUR%XWGI(:,jl) + zdw(:)
158 tgr%CUR%XWG (:,jl) = tgr%CUR%XWG (:,jl) - zdw(:)
161 WHERE (tgr%CUR%XWGI(:,jl) < 0..AND.tgr%CUR%XWGI(:,jl)/=xundef)
162 tgr%CUR%XWGI(:,jl) = 0.
163 tgr%CUR%XWG (:,jl) = zwgtot(:)
166 WHERE (tgr%CUR%XWG(:,jl) < xwgmin.AND.tgr%CUR%XWG(:,jl)/=xundef)
167 tgr%CUR%XWG (:,jl) = xwgmin
168 tgr%CUR%XWGI(:,jl) = zwgtot(:) - xwgmin
171 WHERE(tgr%CUR%XWGI(:,jl) > 0..AND.tgr%CUR%XWGI(:,jl)/=xundef)
172 tgr%CUR%XTG(:,jl) = min(xtt,tgr%CUR%XTG(:,jl))
174 tgr%CUR%XTG(:,jl) = max(xtt,tgr%CUR%XTG(:,jl))
183 DEALLOCATE(zzsfreeze )
184 DEALLOCATE(zwgi_clim_grad)
189 WHERE (tgr%CUR%XTG(:,1:
SIZE(tgr%CUR%XWG,2)) == xundef)
190 tgr%CUR%XWG (:,:) = xundef
191 tgr%CUR%XWGI(:,:) = xundef
196 ideep_soil = tgro%NLAYER_GR
197 CALL
prep_ver_snow(tgr%CUR%TSNOW,xzs_ls,top%XZS,spread(ztg_ls,3,1),spread(tgr%CUR%XTG,3,1),ideep_soil)
204 IF (lhook) CALL dr_hook(
'PREP_VER_TEB_GREENROOF',1,zhook_handle)
subroutine prep_ver_snow(TPSNOW, PZS_LS, PZS, PTG_LS, PTG, KDEEP_SOIL)
subroutine prep_ver_teb_greenroof(TGR, TGRO, TGRP, TOP)