7 hbld, phc_roof, ptc_roof, pd_roof, pdn_roof, &
8 prhoa, pac_roof, pac_roof_wat, plw_rad, pps, &
9 pdelt_roof, pta, pqa, pexna, pexns, &
10 pabs_sw_roof, pgsnow_roof, pemis_roof, &
11 pflx_bld_roof, pdqs_roof, pabs_lw_roof, &
12 phfree_roof, plefree_roof, pimb_roof, &
13 pfrac_gr, pg_greenroof_roof, &
14 pf_floor_mass, pf_floor_wall, pf_floor_win, &
15 pf_floor_roof, pradht_in, &
16 pts_mass, pt_win2, pts_floor, pti_wall, &
17 prad_roof_wall, prad_roof_win, prad_roof_floor,&
18 prad_roof_mass, pconv_roof_bld, prr, &
98 USE modd_csts,ONLY : xcpd, xlvtt, xstefan, xcl
102 USE modi_layer_e_budget
103 USE modi_layer_e_budget_get_coef
106 USE yomhook
,ONLY : lhook, dr_hook
107 USE parkind1
,ONLY : jprb
113 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: pt_roof
114 REAL,
DIMENSION(:),
INTENT(INOUT) :: pqsat_roof
115 REAL,
DIMENSION(:),
INTENT(IN) :: pti_bld
116 REAL,
DIMENSION(:),
INTENT(IN) :: pac_bld
118 REAL,
INTENT(IN) :: ptstep
119 CHARACTER(LEN=3),
INTENT(IN) :: hbld
120 REAL,
DIMENSION(:,:),
INTENT(IN) :: phc_roof
121 REAL,
DIMENSION(:,:),
INTENT(IN) :: ptc_roof
122 REAL,
DIMENSION(:,:),
INTENT(IN) :: pd_roof
123 REAL,
DIMENSION(:),
INTENT(IN) :: pdn_roof
124 REAL,
DIMENSION(:),
INTENT(IN) :: prhoa
125 REAL,
DIMENSION(:),
INTENT(IN) :: pac_roof
126 REAL,
DIMENSION(:),
INTENT(IN) :: pac_roof_wat
127 REAL,
DIMENSION(:),
INTENT(IN) :: plw_rad
128 REAL,
DIMENSION(:),
INTENT(IN) :: pps
129 REAL,
DIMENSION(:),
INTENT(IN) :: pdelt_roof
130 REAL,
DIMENSION(:),
INTENT(IN) :: pta
131 REAL,
DIMENSION(:),
INTENT(IN) :: pqa
133 REAL,
DIMENSION(:),
INTENT(IN) :: pexna
134 REAL,
DIMENSION(:),
INTENT(IN) :: pexns
135 REAL,
DIMENSION(:),
INTENT(IN) :: pabs_sw_roof
136 REAL,
DIMENSION(:),
INTENT(IN) :: pgsnow_roof
139 REAL,
DIMENSION(:),
INTENT(IN) :: pemis_roof
140 REAL,
DIMENSION(:),
INTENT(IN) :: pfrac_gr
141 REAL,
DIMENSION(:),
INTENT(IN) :: pg_greenroof_roof
144 REAL,
DIMENSION(:),
INTENT(OUT) :: pflx_bld_roof
145 REAL,
DIMENSION(:),
INTENT(OUT) :: pdqs_roof
146 REAL,
DIMENSION(:),
INTENT(OUT) :: pabs_lw_roof
147 REAL,
DIMENSION(:),
INTENT(OUT) :: phfree_roof
149 REAL,
DIMENSION(:),
INTENT(OUT) :: plefree_roof
151 REAL,
DIMENSION(:),
INTENT(OUT) :: pimb_roof
153 REAL,
DIMENSION(:),
INTENT(IN) :: pf_floor_mass
154 REAL,
DIMENSION(:),
INTENT(IN) :: pf_floor_wall
155 REAL,
DIMENSION(:),
INTENT(IN) :: pf_floor_win
156 REAL,
DIMENSION(:),
INTENT(IN) :: pf_floor_roof
157 REAL,
DIMENSION(:),
INTENT(IN) :: pradht_in
159 REAL,
DIMENSION(:),
INTENT(IN) :: pts_mass
160 REAL,
DIMENSION(:),
INTENT(IN) :: pt_win2
161 REAL,
DIMENSION(:),
INTENT(IN) :: pts_floor
162 REAL,
DIMENSION(:),
INTENT(IN) :: pti_wall
163 REAL,
DIMENSION(:),
INTENT(OUT) :: prad_roof_wall
164 REAL,
DIMENSION(:),
INTENT(OUT) :: prad_roof_win
165 REAL,
DIMENSION(:),
INTENT(OUT) :: prad_roof_floor
166 REAL,
DIMENSION(:),
INTENT(OUT) :: prad_roof_mass
167 REAL,
DIMENSION(:),
INTENT(OUT) :: pconv_roof_bld
168 REAL,
DIMENSION(:),
INTENT(IN) :: prr
169 REAL,
DIMENSION(:),
INTENT(IN) :: pload_in_roof
176 REAL,
DIMENSION(SIZE(PTA)) :: zdf_roof
177 REAL,
DIMENSION(SIZE(PTA),SIZE(PT_ROOF,2)) :: za,&
182 REAL,
DIMENSION(SIZE(PTA)) :: zdqsat_roof
183 REAL,
DIMENSION(SIZE(PTA)) :: zrho_acf_roof
184 REAL,
DIMENSION(SIZE(PTA)) :: zrho_acf_roof_wat
185 REAL,
DIMENSION(SIZE(PTA)) :: zmtc_o_d_roof_in
186 REAL,
DIMENSION(SIZE(PTA)) :: zts_roof
187 REAL,
DIMENSION(SIZE(PTA)) :: ztrad_roof
188 REAL,
DIMENSION(SIZE(PTA)) :: ztaer_roof
189 REAL,
DIMENSION(SIZE(PTA)) :: zheat_rr
190 REAL,
DIMENSION(SIZE(PTA)) :: zti_roof
191 REAL,
DIMENSION(SIZE(PTA)) :: zti_roof_conv
192 REAL,
DIMENSION(SIZE(PTA)) :: zchtc_in_roof
196 INTEGER :: iroof_layer
198 REAL(KIND=JPRB) :: zhook_handle
201 IF (lhook) CALL dr_hook(
'ROOF_LAYER_E_BUDGET',0,zhook_handle)
203 prad_roof_wall(:) = xundef
204 prad_roof_win(:) = xundef
205 prad_roof_floor(:)= xundef
206 prad_roof_mass(:) = xundef
207 pconv_roof_bld(:) = xundef
211 iroof_layer =
SIZE(pt_roof,2)
213 zchtc_in_roof(:) =
chtc_down_doe(pt_roof(:,iroof_layer), pti_bld(:))
214 DO jj=1,
SIZE(zchtc_in_roof)
215 zchtc_in_roof(jj) = max(1., zchtc_in_roof(jj))
222 DO jj=1,
SIZE(pdn_roof)
224 zdf_roof(jj) = 1. - pdn_roof(jj)
226 zts_roof(jj) = pt_roof(jj,1)
227 zti_roof(jj) = pt_roof(jj,iroof_layer)
232 zrho_acf_roof(jj) = prhoa(jj) * pac_roof(jj)
233 zrho_acf_roof_wat(jj) = prhoa(jj) * pac_roof_wat(jj)
235 IF (hbld .EQ.
'DEF')
THEN
236 zmtc_o_d_roof_in(jj) = 2. * ptc_roof(jj,iroof_layer) / pd_roof(jj,iroof_layer)
237 zmtc_o_d_roof_in(jj) = 1./( 1./zmtc_o_d_roof_in(jj) + 1./(xcpd*prhoa(jj)*pac_bld(jj)) )
245 zdqsat_roof(:) =
dqsat(zts_roof(:),pps(:),pqsat_roof(:))
250 DO jj=1,
SIZE(pt_roof,1)
252 zb(jj,1) = zb(jj,1) + zdf_roof(jj) * (1.-pfrac_gr(jj)) * ( &
253 zimpl * ( xcpd/pexns(jj) * zrho_acf_roof(jj) &
254 + xlvtt * zrho_acf_roof_wat(jj) * pdelt_roof(jj) * zdqsat_roof(jj) &
255 + xstefan * pemis_roof(jj) * 4.*zts_roof(jj)**3 &
258 zy(jj,1) = zy(jj,1) + (1.-pfrac_gr(jj)) &
259 * (pdn_roof(jj)*pgsnow_roof(jj) + zdf_roof(jj) * ( pabs_sw_roof(jj) &
260 + xcpd * zrho_acf_roof(jj) * ( pta(jj)/pexna(jj) - zexpl*zts_roof(jj)/pexns(jj)) &
261 + pemis_roof(jj)*plw_rad(jj) &
262 + xlvtt * zrho_acf_roof_wat(jj) * pdelt_roof(jj) &
263 * ( pqa(jj) - pqsat_roof(jj) + zimpl * zdqsat_roof(jj) * zts_roof(jj) ) &
264 + xstefan * pemis_roof(jj) * zts_roof(jj)**4 * ( 3.*zimpl-zexpl ) &
265 + prr(jj) * xcl * (pta(jj) - zexpl * zts_roof(jj)) ) ) &
266 + pfrac_gr(jj)*pg_greenroof_roof(jj)
268 IF (hbld==
"DEF")
THEN
270 zb(jj,iroof_layer) = zb(jj,iroof_layer) + zimpl * zmtc_o_d_roof_in(jj)
272 zy(jj,iroof_layer) = zy(jj,iroof_layer) &
273 + zmtc_o_d_roof_in(jj) * pti_bld(jj) &
274 - zexpl * zmtc_o_d_roof_in(jj) * pt_roof(jj,iroof_layer)
276 ELSEIF (hbld==
"BEM")
THEN
278 zb(jj, iroof_layer) = zb(jj,iroof_layer) + zimpl * &
279 (zchtc_in_roof(jj) * 4./3. + pradht_in(jj) * &
280 (pf_floor_mass(jj) + pf_floor_win(jj) + &
281 pf_floor_wall(jj) + pf_floor_roof(jj) ))
283 zy(jj,iroof_layer) = zy(jj,iroof_layer) + &
284 zchtc_in_roof(jj) * (pti_bld(jj) - 1./3. * pt_roof(jj, iroof_layer)*(4*zexpl - 1.)) + &
286 pf_floor_mass(jj) * (pts_mass(jj) - zexpl * pt_roof(jj,iroof_layer)) + &
287 pf_floor_win(jj) * (pt_win2(jj) - zexpl * pt_roof(jj,iroof_layer)) + &
288 pf_floor_wall(jj) * (pti_wall(jj) - zexpl * pt_roof(jj,iroof_layer)) + &
289 pf_floor_roof(jj) * (pts_floor(jj)- zexpl * pt_roof(jj,iroof_layer)) ) + &
297 CALL
layer_e_budget( pt_roof, ptstep, zimpl, phc_roof, ptc_roof, pd_roof, &
298 za, zb, zc, zy, pdqs_roof )
303 DO jj=1,
SIZE(pt_roof,1)
305 zti_roof_conv(jj) = 4./3. * zimpl * pt_roof(jj, iroof_layer) + 1./3. * zti_roof(jj) * (4*zexpl -1.)
306 zti_roof(jj) = zexpl * zti_roof(jj) + zimpl * pt_roof(jj, iroof_layer)
309 pflx_bld_roof(jj) = zmtc_o_d_roof_in(jj) * (pti_bld(jj) - zti_roof(jj))
311 prad_roof_wall(jj) = pradht_in(jj) * (zti_roof(jj) - pti_wall(jj))
312 prad_roof_win(jj) = pradht_in(jj) * (zti_roof(jj) - pt_win2(jj))
313 prad_roof_floor(jj)= pradht_in(jj) * (zti_roof(jj) - pts_floor(jj))
314 prad_roof_mass(jj) = pradht_in(jj) * (zti_roof(jj) - pts_mass(jj))
315 pconv_roof_bld(jj) = zchtc_in_roof(jj) * (zti_roof_conv(jj) - pti_bld(jj))
316 pflx_bld_roof(jj) = -(prad_roof_wall(jj) + prad_roof_win(jj) + prad_roof_floor(jj) + prad_roof_mass(jj) + pconv_roof_bld(jj))
324 ztrad_roof(jj) = ( zts_roof(jj)**4 + &
325 4.*zimpl*zts_roof(jj)**3 * (pt_roof(jj,1) - zts_roof(jj)) )**0.25
328 pabs_lw_roof(jj) = pemis_roof(jj) * (plw_rad(jj) - xstefan * ztrad_roof(jj)** 4)
334 ztaer_roof(jj) = zexpl * zts_roof(jj) + zimpl * pt_roof(jj,1)
335 phfree_roof(jj) = zrho_acf_roof(jj) * xcpd * &
336 ( ztaer_roof(jj)/pexns(jj) - pta(jj)/pexna(jj) )
338 zheat_rr(jj) = prr(jj) * xcl * (ztaer_roof(jj) - pta(jj))
343 plefree_roof(jj) = zrho_acf_roof_wat(jj) * xlvtt * pdelt_roof(jj) * &
344 ( pqsat_roof(jj) - pqa(jj) + &
345 zimpl * zdqsat_roof(jj) * (pt_roof(jj,1) - zts_roof(jj)) )
349 pimb_roof(jj) = pabs_sw_roof(jj) + pabs_lw_roof(jj) - pdqs_roof(jj) &
350 - zdf_roof(jj) * ( phfree_roof(jj) + plefree_roof(jj)) &
351 - pdn_roof(jj) * pgsnow_roof(jj) + pflx_bld_roof(jj)
358 pqsat_roof(:) =
qsat(pt_roof(:,1),pps(:))
361 IF (lhook) CALL dr_hook(
'ROOF_LAYER_E_BUDGET',1,zhook_handle)
real function, dimension(size(pts)) chtc_down_doe(PTS, PTA)
subroutine layer_e_budget(PT, PTSTEP, PIMPL, PHC, PTC, PD, PA, PB, PC, PY, PDQS)
subroutine roof_layer_e_budget(PT_ROOF, PQSAT_ROOF, PTI_BLD, PAC_BLD, PTSTEP, HBLD, PHC_ROOF, PTC_ROOF, PD_ROOF, PDN_ROOF, PRHOA, PAC_ROOF, PAC_ROOF_WAT, PLW_RAD, PPS, PDELT_ROOF, PTA, PQA, PEXNA, PEXNS, PABS_SW_ROOF, PGSNOW_ROOF, PEMIS_ROOF, PFLX_BLD_ROOF, PDQS_ROOF, PABS_LW_ROOF, PHFREE_ROOF, PLEFREE_ROOF, PIMB_ROOF, PFRAC_GR, PG_GREENROOF_ROOF, PF_FLOOR_MASS, PF_FLOOR_WALL, PF_FLOOR_WIN, PF_FLOOR_ROOF, PRADHT_IN, PTS_MASS, PT_WIN2, PTS_FLOOR, PTI_WALL, PRAD_ROOF_WALL, PRAD_ROOF_WIN, PRAD_ROOF_FLOOR, PRAD_ROOF_MASS, PCONV_ROOF_BLD, PRR, PLOAD_IN_ROOF)
subroutine layer_e_budget_get_coef(PT, PTSTEP, PIMPL, PHC, PTC, PD, PA, PB, PC, PY)