7 phc_wall, ptc_wall, pd_wall, pdn_road, prhoa, pac_wall, &
8 pac_bld, pti_bld, plw_rad, pps, pexns, &
9 pabs_sw_wall, pt_canyon, pts_road, ptsnow_road, &
10 pts_garden, pts_mass, pts_floor, pemis_wall, &
11 plw_wa_to_wb, plw_r_to_w, plw_g_to_w, plw_nr_to_w, &
12 plw_win_to_w, plw_s_to_w, &
14 pflx_bld_wall, pdqs_wall, pt_win2, pabs_lw_wall, &
15 pemit_lw_wall, ph_wall, pimb_wall, pf_wall_mass, &
16 pf_wall_floor, pf_wall_win, pradht_in, prad_roof_wall, &
17 prad_wall_win, prad_wall_floor, &
18 prad_wall_mass, pconv_wall_bld, pload_in_wall )
108 USE modi_layer_e_budget_get_coef
109 USE modi_layer_e_budget
112 USE yomhook
,ONLY : lhook, dr_hook
113 USE parkind1
,ONLY : jprb
119 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: pt_wall
120 REAL,
DIMENSION(:),
INTENT(IN) :: pts_wall_b
121 REAL,
DIMENSION(:),
INTENT(IN) :: pti_wall_b
122 REAL,
INTENT(IN) :: ptstep
123 CHARACTER(LEN=3),
INTENT(IN) :: hbem
124 REAL,
DIMENSION(:,:),
INTENT(IN) :: phc_wall
125 REAL,
DIMENSION(:,:),
INTENT(IN) :: ptc_wall
126 REAL,
DIMENSION(:,:),
INTENT(IN) :: pd_wall
127 REAL,
DIMENSION(:),
INTENT(IN) :: pdn_road
128 REAL,
DIMENSION(:),
INTENT(IN) :: prhoa
129 REAL,
DIMENSION(:),
INTENT(IN) :: pac_wall
131 REAL,
DIMENSION(:),
INTENT(IN) :: pac_bld
133 REAL,
DIMENSION(:),
INTENT(IN) :: pti_bld
134 REAL,
DIMENSION(:),
INTENT(IN) :: plw_rad
135 REAL,
DIMENSION(:),
INTENT(IN) :: pps
136 REAL,
DIMENSION(:),
INTENT(IN) :: pexns
137 REAL,
DIMENSION(:),
INTENT(IN) :: pabs_sw_wall
138 REAL,
DIMENSION(:),
INTENT(IN) :: pt_canyon
139 REAL,
DIMENSION(:),
INTENT(IN) :: pts_road
140 REAL,
DIMENSION(:),
INTENT(IN) :: ptsnow_road
141 REAL,
DIMENSION(:),
INTENT(IN) :: pts_garden
142 REAL,
DIMENSION(:),
INTENT(IN) :: pts_mass
143 REAL,
DIMENSION(:),
INTENT(IN) :: pts_floor
144 REAL,
DIMENSION(:),
INTENT(IN) :: pemis_wall
146 REAL,
DIMENSION(:),
INTENT(IN) :: plw_wa_to_wb
147 REAL,
DIMENSION(:),
INTENT(IN) :: plw_r_to_w
148 REAL,
DIMENSION(:),
INTENT(IN) :: plw_g_to_w
149 REAL,
DIMENSION(:),
INTENT(IN) :: plw_s_to_w
150 REAL,
DIMENSION(:),
INTENT(IN) :: plw_nr_to_w
151 REAL,
DIMENSION(:),
INTENT(IN) :: plw_win_to_w
154 REAL,
DIMENSION(:),
INTENT(IN) :: pt_win1
155 REAL,
DIMENSION(:),
INTENT(OUT) :: pflx_bld_wall
156 REAL,
DIMENSION(:),
INTENT(INOUT) :: pdqs_wall
157 REAL,
DIMENSION(:),
INTENT(IN) :: pt_win2
158 REAL,
DIMENSION(:),
INTENT(OUT) :: pabs_lw_wall
159 REAL,
DIMENSION(:),
INTENT(OUT) :: pemit_lw_wall
160 REAL,
DIMENSION(:),
INTENT(OUT) :: ph_wall
162 REAL,
DIMENSION(:),
INTENT(OUT) :: pimb_wall
164 REAL,
DIMENSION(:),
INTENT(IN) :: pf_wall_floor
165 REAL,
DIMENSION(:),
INTENT(IN) :: pf_wall_mass
166 REAL,
DIMENSION(:),
INTENT(IN) :: pf_wall_win
167 REAL,
DIMENSION(:),
INTENT(IN) :: pradht_in
169 REAL,
DIMENSION(:),
INTENT(IN) :: prad_roof_wall
170 REAL,
DIMENSION(:),
INTENT(OUT) :: prad_wall_win
171 REAL,
DIMENSION(:),
INTENT(OUT) :: prad_wall_floor
172 REAL,
DIMENSION(:),
INTENT(OUT) :: prad_wall_mass
173 REAL,
DIMENSION(:),
INTENT(OUT) :: pconv_wall_bld
175 REAL,
DIMENSION(:),
INTENT(IN) :: pload_in_wall
185 REAL,
DIMENSION(SIZE(PPS),SIZE(PT_WALL,2)) :: za,&
190 REAL,
DIMENSION(SIZE(PPS)) :: zmtc_o_d_wall_in
191 REAL,
DIMENSION(SIZE(PPS)) :: zdf_road
192 REAL,
DIMENSION(SIZE(PPS)) :: zrho_acf_w
196 REAL,
DIMENSION(SIZE(PPS)) :: zts_wall
197 REAL,
DIMENSION(SIZE(PPS)) :: zti_wall
198 REAL,
DIMENSION(SIZE(PPS)) :: zti_wall_conv
199 REAL,
DIMENSION(SIZE(PPS)) :: zt_sky
201 REAL,
DIMENSION(SIZE(PPS)) :: zti_roof
202 REAL,
DIMENSION(SIZE(PPS)) :: zdif_rad_wall_roof
204 REAL,
DIMENSION(SIZE(PPS)) :: zrad_wall_roof
205 REAL,
DIMENSION(SIZE(PPS)) :: zf_wall_wall
206 REAL,
DIMENSION(SIZE(PPS)) :: zchtc_in_wall
207 INTEGER :: iwall_layer
209 REAL(KIND=JPRB) :: zhook_handle
211 IF (lhook) CALL dr_hook(
'WALL_LAYER_E_BUDGET',0,zhook_handle)
213 pflx_bld_wall = xundef
215 prad_wall_win = xundef
216 prad_wall_floor= xundef
217 prad_wall_mass = xundef
218 pconv_wall_bld = xundef
224 iwall_layer =
SIZE(pt_wall,2)
226 DO jj=1,
SIZE(pdn_road)
228 zdf_road(jj) = 1. - pdn_road(jj)
230 zts_wall(jj) = pt_wall(jj,1)
231 zti_wall(jj) = pt_wall(jj, iwall_layer)
236 zrho_acf_w(jj) = prhoa(jj) * pac_wall(jj)
241 zt_sky(jj) = (plw_rad(jj)/xstefan)**0.25
246 IF (hbem .EQ.
"DEF")
THEN
247 zmtc_o_d_wall_in(jj) = 2. * ptc_wall(jj,iwall_layer) / pd_wall(jj,iwall_layer)
248 zmtc_o_d_wall_in(jj) = 1./( 1./zmtc_o_d_wall_in(jj) + 1./(xcpd*prhoa(jj)*pac_bld(jj)))
255 zchtc_in_wall(:) =
chtc_vert_doe(pt_wall(:,iwall_layer), pti_bld(:))
256 DO jj=1,
SIZE(zchtc_in_wall)
257 zchtc_in_wall(jj) = max(1., zchtc_in_wall(jj))
266 DO jj=1,
SIZE(pt_wall,1)
268 zb(jj,1) = zb(jj,1) + zimpl * xcpd/pexns(jj) * zrho_acf_w(jj)
270 zy(jj,1) = zy(jj,1) + pabs_sw_wall(jj) &
271 + xcpd/pexns(jj) * zrho_acf_w(jj) * ( pt_canyon(jj) - zexpl * zts_wall(jj) )
274 zb(jj,1) = zb(jj,1) &
275 + zimpl * ( plw_s_to_w(jj) + plw_wa_to_wb(jj) &
276 + zdf_road(jj)*plw_r_to_w(jj) + plw_g_to_w(jj) &
277 + pdn_road(jj) * plw_nr_to_w(jj) &
280 zy(jj,1) = zy(jj,1) + &
281 plw_s_to_w(jj) * (zt_sky(jj) - zexpl * zts_wall(jj)) &
282 + plw_wa_to_wb(jj) * (pts_wall_b(jj) - zexpl * zts_wall(jj)) &
283 + zdf_road(jj) * plw_r_to_w(jj) * (pts_road(jj) - zexpl * zts_wall(jj)) &
284 + plw_g_to_w(jj) * (pts_garden(jj) - zexpl * zts_wall(jj)) &
285 + pdn_road(jj) * plw_nr_to_w(jj) * (ptsnow_road(jj)- zexpl * zts_wall(jj)) &
286 + plw_win_to_w(jj) * (pt_win1(jj) - zexpl * zts_wall(jj))
296 DO jj=1,
SIZE(pt_wall,1)
298 IF (hbem==
"DEF")
THEN
300 zb(jj,iwall_layer) = zb(jj,iwall_layer) + zimpl * zmtc_o_d_wall_in(jj)
302 zy(jj,iwall_layer) = zy(jj,iwall_layer) &
303 + zmtc_o_d_wall_in(jj) * pti_bld(jj) &
304 - zexpl * zmtc_o_d_wall_in(jj) * pt_wall(jj,iwall_layer)
306 ELSEIF (hbem==
"BEM")
THEN
308 zf_wall_wall(jj) = 1. - pf_wall_mass(jj) - pf_wall_win(jj) - 2.*pf_wall_floor(jj)
310 zb(jj,iwall_layer) = zb(jj,iwall_layer) + zimpl * &
311 (zchtc_in_wall(jj) * 4./3. + pradht_in(jj) * &
312 ( pf_wall_mass(jj) + pf_wall_win(jj) &
313 + zf_wall_wall(jj) + 2 * pf_wall_floor(jj)))
315 zti_roof(jj) = prad_roof_wall(jj) / pradht_in(jj) + pt_wall(jj,iwall_layer)
316 zy(jj,iwall_layer) = zy(jj,iwall_layer) + &
317 zchtc_in_wall(jj) * (pti_bld(jj) - 1./3. * pt_wall(jj, iwall_layer) * (4 * zexpl -1)) + &
319 pf_wall_mass(jj) * (pts_mass(jj) - zexpl * pt_wall(jj,iwall_layer)) + &
320 pf_wall_win(jj) * (pt_win2(jj) - zexpl * pt_wall(jj,iwall_layer)) + &
321 pf_wall_floor(jj) * (pts_floor(jj) - zexpl * pt_wall(jj,iwall_layer)) + &
322 zf_wall_wall(jj) * (pti_wall_b(jj)- zexpl * pt_wall(jj,iwall_layer)) + &
323 pf_wall_floor(jj) * (zti_roof(jj) - zexpl * pt_wall(jj,iwall_layer)) )+ &
335 CALL
layer_e_budget( pt_wall, ptstep, zimpl, phc_wall, ptc_wall, pd_wall, &
336 za, zb, zc, zy, pdqs_wall )
345 zts_wall(:) = zimpl * pt_wall(:,1) + zexpl * zts_wall(:)
347 pabs_lw_wall(:) = plw_s_to_w(:) * (zt_sky(:) - zts_wall(:)) + &
348 zdf_road(:) *plw_r_to_w(:) * (pts_road(:) - zts_wall(:)) + &
349 plw_g_to_w(:) * (pts_garden(:) - zts_wall(:)) + &
350 plw_wa_to_wb(:) * (pts_wall_b(:) - zts_wall(:)) + &
351 plw_win_to_w(:) * (pt_win1(:) - zts_wall(:)) + &
352 pdn_road(:) *plw_nr_to_w(:) * (ptsnow_road(:) - zts_wall(:))
355 pemit_lw_wall(:) = xstefan * pt_wall(:,1)**4 + &
356 (1 - pemis_wall(:))/pemis_wall(:) * pabs_lw_wall(:)
359 ph_wall(:) = zrho_acf_w(:) * xcpd/pexns(:) * &
360 ( zimpl*pt_wall(:,1) + zexpl*zts_wall(:) - pt_canyon(:) )
362 IF (hbem==
'BEM')
THEN
365 zti_wall_conv(:) = 4./3. * zimpl * pt_wall(:,iwall_layer) + 1./3. * zti_wall(:) * (4 * zexpl -1.)
366 zti_wall(:) = zexpl * zti_wall(:) + zimpl * pt_wall(:,iwall_layer)
369 zrad_wall_roof(:) = pradht_in(:) * (zti_wall(:) - zti_roof(:))
372 zdif_rad_wall_roof(:) = zrad_wall_roof(:) + prad_roof_wall(:)
375 prad_wall_floor(:) = pradht_in(:) * (zti_wall(:) - pts_floor(:))
378 prad_wall_floor(:) = prad_wall_floor(:) + zdif_rad_wall_roof(:)
379 prad_wall_mass(:) = pradht_in(:) * (zti_wall(:) - pts_mass(:))
380 prad_wall_win(:) = pradht_in(:) * (zti_wall(:) - pt_win2(:))
381 pconv_wall_bld(:) = zchtc_in_wall(:) * (zti_wall_conv(:) - pti_bld(:))
384 pflx_bld_wall(:) = -pconv_wall_bld(:) &
385 + pf_wall_floor(:) * prad_roof_wall(:) &
386 + pradht_in(:) *(pf_wall_mass(:) * (pts_mass(:) - zti_wall(:)) &
387 + pf_wall_win(:) * (pt_win2(:) - zti_wall(:)) &
388 + pf_wall_floor(:) * (pts_floor(:) - zti_wall(:)) )
392 pimb_wall(:) = pabs_sw_wall(:) + pabs_lw_wall(:) &
393 - pdqs_wall(:) - ph_wall(:) &
400 IF (lhook) CALL dr_hook(
'WALL_LAYER_E_BUDGET',1,zhook_handle)
subroutine wall_layer_e_budget(HBEM, PT_WALL, PTS_WALL_B, PTI_WALL_B, PTSTEP, PHC_WALL, PTC_WALL, PD_WALL, PDN_ROAD, PRHOA, PAC_WALL, PAC_BLD, PTI_BLD, PLW_RAD, PPS, PEXNS, PABS_SW_WALL, PT_CANYON, PTS_ROAD, PTSNOW_ROAD, PTS_GARDEN, PTS_MASS, PTS_FLOOR, PEMIS_WALL, PLW_WA_TO_WB, PLW_R_TO_W, PLW_G_TO_W, PLW_NR_TO_W, PLW_WIN_TO_W, PLW_S_TO_W, PT_WIN1, PFLX_BLD_WALL, PDQS_WALL, PT_WIN2, PABS_LW_WALL, PEMIT_LW_WALL, PH_WALL, PIMB_WALL, PF_WALL_MASS, PF_WALL_FLOOR, PF_WALL_WIN, PRADHT_IN, PRAD_ROOF_WALL, PRAD_WALL_WIN, PRAD_WALL_FLOOR, PRAD_WALL_MASS, PCONV_WALL_BLD, PLOAD_IN_WALL)
subroutine layer_e_budget(PT, PTSTEP, PIMPL, PHC, PTC, PD, PA, PB, PC, PY, PDQS)
subroutine layer_e_budget_get_coef(PT, PTSTEP, PIMPL, PHC, PTC, PD, PA, PB, PC, PY)