7 PRHOA, PAC_WL, PAC_BLD, PLW_RAD, PPS, PEXNS, PABS_SW_WL, &
8 PT_CANYON, PTS_RD, PTSNOW_RD, PTS_GD, PTS_FL, &
9 PLW_WA_TO_WB, PLW_R_TO_W, PLW_G_TO_W, PLW_NR_TO_W, &
10 PLW_WIN_TO_W, PLW_S_TO_W, PFLX_BLD_WL, PDQS_WL, &
11 PABS_LW_WL, PEMIT_LW_WL, PH_WL, PIMB_WL, PRADHT_IN, &
12 PRAD_RF_WL, PRAD_WL_WIN, PRAD_WL_FL, PRAD_WL_MA, &
13 PCONV_WL_BLD, PLOAD_IN_WL )
107 USE modi_layer_e_budget_get_coef
108 USE modi_layer_e_budget
119 TYPE(
teb_t),
INTENT(INOUT) :: T
120 TYPE(
bem_t),
INTENT(INOUT) :: B
122 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: PT_WL
123 REAL,
DIMENSION(:),
INTENT(IN) :: PTS_WL_B
124 REAL,
DIMENSION(:),
INTENT(IN) :: PTI_WL_B
125 REAL,
INTENT(IN) :: PTSTEP
126 REAL,
DIMENSION(:),
INTENT(IN) :: PDN_RD
127 REAL,
DIMENSION(:),
INTENT(IN) :: PRHOA
128 REAL,
DIMENSION(:),
INTENT(IN) :: PAC_WL
130 REAL,
DIMENSION(:),
INTENT(IN) :: PAC_BLD
132 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_RAD
133 REAL,
DIMENSION(:),
INTENT(IN) :: PPS
134 REAL,
DIMENSION(:),
INTENT(IN) :: PEXNS
135 REAL,
DIMENSION(:),
INTENT(IN) :: PABS_SW_WL
136 REAL,
DIMENSION(:),
INTENT(IN) :: PT_CANYON
137 REAL,
DIMENSION(:),
INTENT(IN) :: PTS_RD
138 REAL,
DIMENSION(:),
INTENT(IN) :: PTSNOW_RD
139 REAL,
DIMENSION(:),
INTENT(IN) :: PTS_GD
140 REAL,
DIMENSION(:),
INTENT(IN) :: PTS_FL
142 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_WA_TO_WB
143 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_R_TO_W
144 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_G_TO_W
145 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_S_TO_W
146 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_NR_TO_W
147 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_WIN_TO_W
150 REAL,
DIMENSION(:),
INTENT(OUT) :: PFLX_BLD_WL
151 REAL,
DIMENSION(:),
INTENT(INOUT) :: PDQS_WL
152 REAL,
DIMENSION(:),
INTENT(OUT) :: PABS_LW_WL
153 REAL,
DIMENSION(:),
INTENT(OUT) :: PEMIT_LW_WL
154 REAL,
DIMENSION(:),
INTENT(OUT) :: PH_WL
156 REAL,
DIMENSION(:),
INTENT(OUT) :: PIMB_WL
158 REAL,
DIMENSION(:),
INTENT(IN) :: PRADHT_IN
160 REAL,
DIMENSION(:),
INTENT(IN) :: PRAD_RF_WL
161 REAL,
DIMENSION(:),
INTENT(OUT) :: PRAD_WL_WIN
162 REAL,
DIMENSION(:),
INTENT(OUT) :: PRAD_WL_FL
163 REAL,
DIMENSION(:),
INTENT(OUT) :: PRAD_WL_MA
164 REAL,
DIMENSION(:),
INTENT(OUT) :: PCONV_WL_BLD
166 REAL,
DIMENSION(:),
INTENT(IN) :: PLOAD_IN_WL
176 REAL,
DIMENSION(SIZE(PPS),SIZE(PT_WL,2)) :: ZA,&
181 REAL,
DIMENSION(SIZE(PPS)) :: ZMTC_O_D_WL_IN
182 REAL,
DIMENSION(SIZE(PPS)) :: ZDF_RD
183 REAL,
DIMENSION(SIZE(PPS)) :: ZRHO_ACF_W
187 REAL,
DIMENSION(SIZE(PPS)) :: ZTS_WL
188 REAL,
DIMENSION(SIZE(PPS)) :: ZTI_WL
189 REAL,
DIMENSION(SIZE(PPS)) :: ZTI_WL_CONV
190 REAL,
DIMENSION(SIZE(PPS)) :: ZT_SKY
192 REAL,
DIMENSION(SIZE(PPS)) :: ZTI_RF
193 REAL,
DIMENSION(SIZE(PPS)) :: ZDIF_RAD_WL_RF
195 REAL,
DIMENSION(SIZE(PPS)) :: ZRAD_WL_RF
196 REAL,
DIMENSION(SIZE(PPS)) :: ZF_WL_WL
197 REAL,
DIMENSION(SIZE(PPS)) :: ZCHTC_IN_WL
200 REAL(KIND=JPRB) :: ZHOOK_HANDLE
202 IF (
lhook)
CALL dr_hook(
'WALL_LAYER_E_BUDGET',0,zhook_handle)
215 iwl_layer =
SIZE(pt_wl,2)
219 zdf_rd(jj) = 1. - pdn_rd(jj)
221 zts_wl(jj) = pt_wl(jj,1)
222 zti_wl(jj) = pt_wl(jj, iwl_layer)
227 zrho_acf_w(jj) = prhoa(jj) * pac_wl(jj)
232 zt_sky(jj) = (plw_rad(jj)/
xstefan)**0.25
237 IF (top%CBEM .EQ.
"DEF")
THEN 238 zmtc_o_d_wl_in(jj) = 2. * t%XTC_WALL(jj,iwl_layer) / t%XD_WALL (jj,iwl_layer)
239 zmtc_o_d_wl_in(jj) = 1./( 1./zmtc_o_d_wl_in(jj) + 1./(
xcpd*prhoa(jj)*pac_bld(jj)))
246 zchtc_in_wl(:) =
chtc_vert_doe(pt_wl(:,iwl_layer), b%XTI_BLD(:))
247 DO jj=1,
SIZE(zchtc_in_wl)
248 zchtc_in_wl(jj) = max(1., zchtc_in_wl(jj))
257 DO jj=1,
SIZE(pt_wl,1)
259 zb(jj,1) = zb(jj,1) + zimpl *
xcpd/pexns(jj) * zrho_acf_w(jj)
261 zy(jj,1) = zy(jj,1) + pabs_sw_wl(jj) &
262 +
xcpd/pexns(jj) * zrho_acf_w(jj) * ( pt_canyon(jj) - zexpl * zts_wl(jj) )
265 zb(jj,1) = zb(jj,1) &
266 + zimpl * ( plw_s_to_w(jj) + plw_wa_to_wb(jj) &
267 + zdf_rd(jj)*plw_r_to_w(jj) + plw_g_to_w(jj) &
268 + pdn_rd(jj) * plw_nr_to_w(jj) &
271 zy(jj,1) = zy(jj,1) + &
272 plw_s_to_w(jj) * (zt_sky(jj) - zexpl * zts_wl(jj)) &
273 + plw_wa_to_wb(jj) * (pts_wl_b(jj) - zexpl * zts_wl(jj)) &
274 + zdf_rd(jj) * plw_r_to_w(jj) * (pts_rd(jj) - zexpl * zts_wl(jj)) &
275 + pdn_rd(jj) * plw_nr_to_w(jj) * (ptsnow_rd(jj)- zexpl * zts_wl(jj)) &
276 + plw_win_to_w(jj) * (b%XT_WIN1(jj) - zexpl * zts_wl(jj))
278 IF (
SIZE(pts_gd)>0)
THEN 279 zy(jj,1) = zy(jj,1) + plw_g_to_w(jj) * (pts_gd(jj) - zexpl * zts_wl(jj))
289 DO jj=1,
SIZE(pt_wl,1)
291 IF (top%CBEM==
"DEF")
THEN 293 zb(jj,iwl_layer) = zb(jj,iwl_layer) + zimpl * zmtc_o_d_wl_in(jj)
295 zy(jj,iwl_layer) = zy(jj,iwl_layer) &
296 + zmtc_o_d_wl_in(jj) * b%XTI_BLD(jj) &
297 - zexpl * zmtc_o_d_wl_in(jj) * pt_wl(jj,iwl_layer)
299 ELSEIF (top%CBEM==
"BEM")
THEN 301 zf_wl_wl(jj) = 1. - b%XF_WALL_MASS(jj) - b%XF_WALL_WIN(jj) - 2.*b%XF_WALL_FLOOR(jj)
303 zb(jj,iwl_layer) = zb(jj,iwl_layer) + zimpl * &
304 (zchtc_in_wl(jj) * 4./3. + pradht_in(jj) * &
305 ( b%XF_WALL_MASS(jj) + b%XF_WALL_WIN (jj) &
306 + zf_wl_wl(jj) + 2 * b%XF_WALL_FLOOR(jj)))
308 zti_rf(jj) = prad_rf_wl(jj) / pradht_in(jj) + pt_wl(jj,iwl_layer)
310 zy(jj,iwl_layer) = zy(jj,iwl_layer) + &
311 zchtc_in_wl(jj) * (b%XTI_BLD(jj) - 1./3. * pt_wl(jj, iwl_layer) * (4 * zexpl -1)) + &
313 b%XF_WALL_MASS (jj) * (b%XT_MASS(jj,1) - zexpl * pt_wl(jj,iwl_layer)) + &
314 b%XF_WALL_WIN (jj) * (b%XT_WIN2 (jj) - zexpl * pt_wl(jj,iwl_layer)) + &
315 b%XF_WALL_FLOOR(jj) * (pts_fl(jj) - zexpl * pt_wl(jj,iwl_layer)) + &
316 zf_wl_wl(jj) * (pti_wl_b(jj) - zexpl * pt_wl(jj,iwl_layer)) + &
317 b%XF_WALL_FLOOR(jj) * (zti_rf(jj) - zexpl * pt_wl(jj,iwl_layer)) )+ &
329 CALL layer_e_budget( pt_wl, ptstep, zimpl, t%XHC_WALL, t%XTC_WALL, t%XD_WALL, &
330 za, zb, zc, zy, pdqs_wl )
339 zts_wl(:) = zimpl * pt_wl(:,1) + zexpl * zts_wl(:)
341 pabs_lw_wl(:) = plw_s_to_w(:) * (zt_sky(:) - zts_wl(:)) + &
342 zdf_rd(:) *plw_r_to_w(:) * (pts_rd(:) - zts_wl(:)) + &
343 plw_wa_to_wb(:) * (pts_wl_b(:) - zts_wl(:)) + &
344 plw_win_to_w(:) * (b%XT_WIN1(:) - zts_wl(:)) + &
345 pdn_rd(:) *plw_nr_to_w(:) * (ptsnow_rd(:) - zts_wl(:))
347 IF (
SIZE(pts_gd)>0)
THEN 348 pabs_lw_wl(:) = pabs_lw_wl(:) + plw_g_to_w(:) * (pts_gd(:) - zts_wl(:))
352 pemit_lw_wl(:) =
xstefan * pt_wl(:,1)**4 + &
353 (1 - t%XEMIS_WALL(:))/t%XEMIS_WALL(:) * pabs_lw_wl(:)
356 ph_wl(:) = zrho_acf_w(:) *
xcpd/pexns(:) * &
357 ( zimpl*pt_wl(:,1) + zexpl*zts_wl(:) - pt_canyon(:) )
359 IF (top%CBEM==
'BEM')
THEN 362 zti_wl_conv(:) = 4./3. * zimpl * pt_wl(:,iwl_layer) + 1./3. * zti_wl(:) * (4 * zexpl -1.)
363 zti_wl(:) = zexpl * zti_wl(:) + zimpl * pt_wl(:,iwl_layer)
366 zrad_wl_rf(:) = pradht_in(:) * (zti_wl(:) - zti_rf(:))
369 zdif_rad_wl_rf(:) = zrad_wl_rf(:) + prad_rf_wl(:)
372 prad_wl_fl(:) = pradht_in(:) * (zti_wl(:) - pts_fl(:))
375 prad_wl_fl(:) = prad_wl_fl(:) + zdif_rad_wl_rf(:)
376 prad_wl_ma(:) = pradht_in(:) * (zti_wl(:) - b%XT_MASS(:,1))
377 prad_wl_win(:) = pradht_in(:) * (zti_wl(:) - b%XT_WIN2(:))
378 pconv_wl_bld(:) = zchtc_in_wl(:) * (zti_wl_conv(:) - b%XTI_BLD (:))
381 pflx_bld_wl(:) = -pconv_wl_bld(:) &
382 + b%XF_WALL_FLOOR(:) * prad_rf_wl(:) &
383 + pradht_in(:) *(b%XF_WALL_MASS (:) * (b%XT_MASS(:,1) - zti_wl(:)) &
384 + b%XF_WALL_WIN (:) * (b%XT_WIN2 (:) - zti_wl(:)) &
385 + b%XF_WALL_FLOOR(:) * (pts_fl(:) - zti_wl(:)) )
389 pimb_wl(:) = pabs_sw_wl(:) + pabs_lw_wl(:) &
390 - pdqs_wl(:) - ph_wl(:) &
397 IF (
lhook)
CALL dr_hook(
'WALL_LAYER_E_BUDGET',1,zhook_handle)
subroutine layer_e_budget(PT, PTSTEP, PIMPL, PHC, PTC, PD, PA, PB, PC, PY, PDQS)
subroutine wall_layer_e_budget(TOP, T, B, PT_WL, PTS_WL_B, PTI_WL_B, PTSTEP, PDN_RD, PRHOA, PAC_WL, PAC_BLD, PLW_RAD, PPS, PEXNS, PABS_SW_WL, PT_CANYON, PTS_RD, PTSNOW_RD, PTS_GD, PTS_FL, PLW_WA_TO_WB, PLW_R_TO_W, PLW_G_TO_W, PLW_NR_TO_W, PLW_WIN_TO_W, PLW_S_TO_W, PFLX_BLD_WL, PDQS_WL, PABS_LW_WL, PEMIT_LW_WL, PH_WL, PIMB_WL, PRADHT_IN, PRAD_RF_WL, PRAD_WL_WIN, PRAD_WL_FL, PRAD_WL_MA, PCONV_WL_BLD, PLOAD_IN_WL)
subroutine layer_e_budget_get_coef(PT, PTSTEP, PIMPL, PHC, PTC, PD, PA, PB, PC, PY)