75 nnb_topd_step, xdxt, xqb_dr, xqb_run
85 USE yomhook
,ONLY : lhook, dr_hook
86 USE parkind1
,ONLY : jprb
95 TYPE(isba_grid_t
),
INTENT(INOUT) :: ig
96 TYPE(isba_t
),
INTENT(INOUT) :: i
99 INTEGER,
INTENT(IN) :: kni
105 REAL,
DIMENSION(SIZE(I%XWG,1),3) :: zwg_3l,zwgi_3l,zdg_3l
107 REAL(KIND=JPRB) :: zhook_handle
109 IF (lhook) CALL dr_hook(
'INIT_BUDGET_COUPL_ROUT',0,zhook_handle)
115 IF (i%CISBA==
'DIF')
THEN
117 SIZE(i%XWG,1),zdg_3l)
118 zwg_3l(:,2)=dgmi%XFRD2_TWG(:)
119 zwg_3l(:,3)=dgmi%XFRD3_TWG(:)
120 zwgi_3l(:,2)=dgmi%XFRD2_TWGI(:)
121 zwgi_3l(:,3)=dgmi%XFRD3_TWGI(:)
123 ELSEIF (i%CISBA==
'3-L')
THEN
125 SIZE(i%XWG,1),zwg_3l,zwgi_3l,zdg_3l)
128 ALLOCATE(yb_var(inb_var))
143 ALLOCATE(xb_rain(kni))
144 ALLOCATE(xb_snow(kni))
147 ALLOCATE(xb_evap(kni))
148 ALLOCATE(xb_runoff_isba(kni))
149 ALLOCATE(xb_horton(kni))
150 ALLOCATE(xb_drain(kni))
151 ALLOCATE(xb_wg2(kni))
152 ALLOCATE(xb_wg3(kni))
153 ALLOCATE(xb_wgtot(kni))
154 ALLOCATE(xb_wgi2(kni))
155 ALLOCATE(xb_wgi3(kni))
156 ALLOCATE(xb_wgitot(kni))
157 ALLOCATE(xb_swe1(kni))
158 ALLOCATE(xb_swe2(kni))
159 ALLOCATE(xb_swe3(kni))
160 ALLOCATE(xb_swetot(kni))
162 ALLOCATE(xb_wrm(kni))
163 ALLOCATE(xb_evapm(kni))
164 ALLOCATE(xb_drainm(kni))
165 ALLOCATE(xb_runoff_isbam(kni))
166 ALLOCATE(xb_hortonm(kni))
167 ALLOCATE(xb_wg2m(kni))
168 ALLOCATE(xb_wg3m(kni))
169 ALLOCATE(xb_wgtotm(kni))
170 ALLOCATE(xb_wgi2m(kni))
171 ALLOCATE(xb_wgi3m(kni))
172 ALLOCATE(xb_wgitotm(kni))
173 ALLOCATE(xb_swe1m(kni))
174 ALLOCATE(xb_swe2m(kni))
175 ALLOCATE(xb_swe3m(kni))
176 ALLOCATE(xb_swetotm(kni))
178 ALLOCATE(xb_mesh_size(kni))
179 ALLOCATE(xb_dg2(kni))
180 ALLOCATE(xb_dg3(kni))
193 WHERE ( xb_wg2m/=xundef .AND. xb_dg2/=xundef .AND. xb_wg3m/=xundef .AND. xb_dg3/=xundef )
194 xb_wgtotm(:) = xb_wg2m(:)*xb_dg2(:) + xb_wg3m(:)*(xb_dg3(:)-xb_dg2(:))
196 xb_wgtotm(:) = xundef
201 WHERE ((xb_wgi2m/=xundef).AND.(xb_dg2/=xundef).AND.(xb_wgi3m/=xundef).AND.(xb_dg3/=xundef))
202 xb_wgitotm(:) = xb_wgi2m(:)*xb_dg2(:) + xb_wgi3m(:)*(xb_dg3(:)-xb_dg2(:))
204 xb_wgitotm(:) = xundef
210 xb_swetotm(:) = xb_swe1m(:)+xb_swe2m(:)+xb_swe3m(:)
214 ALLOCATE(xb_abv_bymesh(kni,nncat))
216 xb_abv_bymesh(jj,:) = xbv_in_mesh(jj,:)/xb_mesh_size(jj)
217 xb_abv_bymesh(jj,:) = min(1.,xb_abv_bymesh(jj,:))
220 ALLOCATE(xb_var_bv(nnb_topd_step,nncat,inb_var))
221 xb_var_bv(:,:,:) = 0.
222 ALLOCATE(xb_var_nobv(nnb_topd_step,nncat,inb_var))
223 xb_var_nobv(:,:,:) = 0.
225 ALLOCATE(xb_var_tot(nnb_topd_step,inb_var))
228 ALLOCATE(xb_runoff_topd(kni))
229 ALLOCATE(xb_runoff_topdm(kni))
230 ALLOCATE(xb_atop_bymesh(kni))
233 xb_runoff_topdm = xb_runoff_isbam
243 ALLOCATE(xb_qtot(nncat))
244 ALLOCATE(xb_qdr(nncat))
245 ALLOCATE(xb_qrun(nncat))
246 ALLOCATE(xb_var_q(nnb_topd_step,nncat,5))
248 ALLOCATE(xb_qtotm(nncat))
249 ALLOCATE(xb_qdrm(nncat))
250 ALLOCATE(xb_qrunm(nncat))
260 xb_qtotm(jj) = sum(xqtot(jj,:))
261 xb_qrunm(jj) = sum(xqb_run(jj,:))
262 xb_qdrm(jj) = sum(xqb_dr(jj,:))
265 IF (lhook) CALL dr_hook(
'INIT_BUDGET_COUPL_ROUT',1,zhook_handle)
subroutine dg_dfto3l(I, KI, PDG)
subroutine avg_patch_wg(I, KI, PWG, PWGI, PDG)
subroutine init_budget_coupl_rout(DGEI, DGMI, IG, I, U, KNI)