7 PRHOA, PAC_ROOF, PAC_ROOF_WAT, PLW_RAD, PPS, &
8 PDELT_ROOF, PTA, PQA, PEXNA, PEXNS, PABS_SW_ROOF, &
9 PGSNOW_ROOF, PFLX_BLD_ROOF, PDQS_ROOF, PABS_LW_ROOF,&
10 PHFREE_ROOF, PLEFREE_ROOF, PIMB_ROOF, &
11 PG_GREENROOF_ROOF, PRADHT_IN, PTS_FLOOR, PTI_WALL, &
12 PRAD_ROOF_WALL, PRAD_ROOF_WIN, PRAD_ROOF_FLOOR, &
13 PRAD_ROOF_MASS, PCONV_ROOF_BLD, PRR, PLOAD_IN_ROOF )
100 USE modi_layer_e_budget
101 USE modi_layer_e_budget_get_coef
112 TYPE(
teb_t),
INTENT(INOUT) :: T
113 TYPE(
bem_t),
INTENT(INOUT) :: B
115 REAL,
DIMENSION(:),
INTENT(INOUT) :: PQSAT_ROOF
116 REAL,
DIMENSION(:),
INTENT(IN) :: PAC_BLD
118 REAL,
INTENT(IN) :: PTSTEP
119 REAL,
DIMENSION(:),
INTENT(IN) :: PDN_ROOF
120 REAL,
DIMENSION(:),
INTENT(IN) :: PRHOA
121 REAL,
DIMENSION(:),
INTENT(IN) :: PAC_ROOF
122 REAL,
DIMENSION(:),
INTENT(IN) :: PAC_ROOF_WAT
123 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_RAD
124 REAL,
DIMENSION(:),
INTENT(IN) :: PPS
125 REAL,
DIMENSION(:),
INTENT(IN) :: PDELT_ROOF
126 REAL,
DIMENSION(:),
INTENT(IN) :: PTA
127 REAL,
DIMENSION(:),
INTENT(IN) :: PQA
129 REAL,
DIMENSION(:),
INTENT(IN) :: PEXNA
130 REAL,
DIMENSION(:),
INTENT(IN) :: PEXNS
131 REAL,
DIMENSION(:),
INTENT(IN) :: PABS_SW_ROOF
132 REAL,
DIMENSION(:),
INTENT(IN) :: PGSNOW_ROOF
135 REAL,
DIMENSION(:),
INTENT(IN) :: PG_GREENROOF_ROOF
138 REAL,
DIMENSION(:),
INTENT(OUT) :: PFLX_BLD_ROOF
139 REAL,
DIMENSION(:),
INTENT(OUT) :: PDQS_ROOF
140 REAL,
DIMENSION(:),
INTENT(OUT) :: PABS_LW_ROOF
141 REAL,
DIMENSION(:),
INTENT(OUT) :: PHFREE_ROOF
143 REAL,
DIMENSION(:),
INTENT(OUT) :: PLEFREE_ROOF
145 REAL,
DIMENSION(:),
INTENT(OUT) :: PIMB_ROOF
147 REAL,
DIMENSION(:),
INTENT(IN) :: PRADHT_IN
149 REAL,
DIMENSION(:),
INTENT(IN) :: PTS_FLOOR
150 REAL,
DIMENSION(:),
INTENT(IN) :: PTI_WALL
151 REAL,
DIMENSION(:),
INTENT(OUT) :: PRAD_ROOF_WALL
152 REAL,
DIMENSION(:),
INTENT(OUT) :: PRAD_ROOF_WIN
153 REAL,
DIMENSION(:),
INTENT(OUT) :: PRAD_ROOF_FLOOR
154 REAL,
DIMENSION(:),
INTENT(OUT) :: PRAD_ROOF_MASS
155 REAL,
DIMENSION(:),
INTENT(OUT) :: PCONV_ROOF_BLD
156 REAL,
DIMENSION(:),
INTENT(IN) :: PRR
157 REAL,
DIMENSION(:),
INTENT(IN) :: PLOAD_IN_ROOF
164 REAL,
DIMENSION(SIZE(PTA)) :: ZDF_ROOF
165 REAL,
DIMENSION(SIZE(PTA),SIZE(T%XT_ROOF,2)) :: ZA,&
170 REAL,
DIMENSION(SIZE(PTA)) :: ZDQSAT_ROOF
171 REAL,
DIMENSION(SIZE(PTA)) :: ZRHO_ACF_ROOF
172 REAL,
DIMENSION(SIZE(PTA)) :: ZRHO_ACF_ROOF_WAT
173 REAL,
DIMENSION(SIZE(PTA)) :: ZMTC_O_D_ROOF_IN
174 REAL,
DIMENSION(SIZE(PTA)) :: ZTS_ROOF
175 REAL,
DIMENSION(SIZE(PTA)) :: ZTRAD_ROOF
176 REAL,
DIMENSION(SIZE(PTA)) :: ZTAER_ROOF
177 REAL,
DIMENSION(SIZE(PTA)) :: ZHEAT_RR
178 REAL,
DIMENSION(SIZE(PTA)) :: ZTI_ROOF
179 REAL,
DIMENSION(SIZE(PTA)) :: ZTI_ROOF_CONV
180 REAL,
DIMENSION(SIZE(PTA)) :: ZCHTC_IN_ROOF
184 INTEGER :: IROOF_LAYER
186 REAL(KIND=JPRB) :: ZHOOK_HANDLE
189 IF (
lhook)
CALL dr_hook(
'ROOF_LAYER_E_BUDGET',0,zhook_handle)
191 prad_roof_wall(:) =
xundef 193 prad_roof_floor(:)=
xundef 194 prad_roof_mass(:) =
xundef 195 pconv_roof_bld(:) =
xundef 199 iroof_layer =
SIZE(t%XT_ROOF,2)
201 zchtc_in_roof(:) =
chtc_down_doe(t%XT_ROOF(:,iroof_layer), b%XTI_BLD(:))
202 DO jj=1,
SIZE(zchtc_in_roof)
203 zchtc_in_roof(jj) = max(1., zchtc_in_roof(jj))
210 DO jj=1,
SIZE(pdn_roof)
212 zdf_roof(jj) = 1. - pdn_roof(jj)
214 zts_roof(jj) = t%XT_ROOF(jj,1)
215 zti_roof(jj) = t%XT_ROOF(jj,iroof_layer)
220 zrho_acf_roof(jj) = prhoa(jj) * pac_roof(jj)
221 zrho_acf_roof_wat(jj) = prhoa(jj) * pac_roof_wat(jj)
223 IF (top%CBEM .EQ.
'DEF')
THEN 224 zmtc_o_d_roof_in(jj) = 2. * t%XTC_ROOF(jj,iroof_layer) / t%XD_ROOF (jj,iroof_layer)
225 zmtc_o_d_roof_in(jj) = 1./( 1./zmtc_o_d_roof_in(jj) + 1./(
xcpd*prhoa(jj)*pac_bld(jj)) )
233 zdqsat_roof(:) =
dqsat(zts_roof(:),pps(:),pqsat_roof(:))
238 DO jj=1,
SIZE(t%XT_ROOF,1)
240 zb(jj,1) = zb(jj,1) + zdf_roof(jj) * (1.-t%XGREENROOF(jj)) * ( &
241 zimpl * (
xcpd/pexns(jj) * zrho_acf_roof(jj) &
242 +
xlvtt * zrho_acf_roof_wat(jj) * pdelt_roof(jj) * zdqsat_roof(jj) &
243 +
xstefan * t%XEMIS_ROOF(jj) * 4.*zts_roof(jj)**3 &
246 zy(jj,1) = zy(jj,1) + (1.-t%XGREENROOF(jj)) &
247 * (pdn_roof(jj)*pgsnow_roof(jj) + zdf_roof(jj) * ( pabs_sw_roof(jj) &
248 +
xcpd * zrho_acf_roof(jj) * ( pta(jj)/pexna(jj) - zexpl*zts_roof(jj)/pexns(jj)) &
249 + t%XEMIS_ROOF(jj)*plw_rad(jj) &
250 +
xlvtt * zrho_acf_roof_wat(jj) * pdelt_roof(jj) &
251 * ( pqa(jj) - pqsat_roof(jj) + zimpl * zdqsat_roof(jj) * zts_roof(jj) ) &
252 +
xstefan * t%XEMIS_ROOF(jj) * zts_roof(jj)**4 * ( 3.*zimpl-zexpl ) &
253 + prr(jj) *
xcl * (pta(jj) - zexpl * zts_roof(jj)) ) ) &
254 + t%XGREENROOF(jj)*pg_greenroof_roof(jj)
256 IF (top%CBEM==
"DEF")
THEN 258 zb(jj,iroof_layer) = zb(jj,iroof_layer) + zimpl * zmtc_o_d_roof_in(jj)
260 zy(jj,iroof_layer) = zy(jj,iroof_layer) &
261 + zmtc_o_d_roof_in(jj) * b%XTI_BLD(jj) &
262 - zexpl * zmtc_o_d_roof_in(jj) * t%XT_ROOF(jj,iroof_layer)
264 ELSEIF (top%CBEM==
"BEM")
THEN 266 zb(jj, iroof_layer) = zb(jj,iroof_layer) + zimpl * &
267 (zchtc_in_roof(jj) * 4./3. + pradht_in(jj) * &
268 (b%XF_FLOOR_MASS(jj) + b%XF_FLOOR_WIN(jj) + &
269 b%XF_FLOOR_WALL(jj) + b%XF_FLOOR_ROOF(jj) ))
271 zy(jj,iroof_layer) = zy(jj,iroof_layer) + &
272 zchtc_in_roof(jj) * (b%XTI_BLD(jj) - 1./3. * t%XT_ROOF(jj, iroof_layer)*(4*zexpl - 1.)) + &
274 b%XF_FLOOR_MASS (jj) * (b%XT_MASS(jj,1) - zexpl * t%XT_ROOF(jj,iroof_layer)) + &
275 b%XF_FLOOR_WIN (jj) * (b%XT_WIN2 (jj) - zexpl * t%XT_ROOF(jj,iroof_layer)) + &
276 b%XF_FLOOR_WALL (jj) * (pti_wall(jj) - zexpl * t%XT_ROOF(jj,iroof_layer)) + &
277 b%XF_FLOOR_ROOF (jj) * (pts_floor(jj) - zexpl * t%XT_ROOF(jj,iroof_layer))) + &
285 CALL layer_e_budget( t%XT_ROOF, ptstep, zimpl, t%XHC_ROOF, t%XTC_ROOF, t%XD_ROOF, &
286 za, zb, zc, zy, pdqs_roof )
291 DO jj=1,
SIZE(t%XT_ROOF,1)
293 zti_roof_conv(jj) = 4./3. * zimpl * t%XT_ROOF(jj, iroof_layer) + 1./3. * zti_roof(jj) * (4*zexpl -1.)
294 zti_roof(jj) = zexpl * zti_roof(jj) + zimpl * t%XT_ROOF(jj, iroof_layer)
295 SELECT CASE(top%CBEM)
297 pflx_bld_roof(jj) = zmtc_o_d_roof_in(jj) * (b%XTI_BLD(jj) - zti_roof(jj))
299 prad_roof_wall(jj) = pradht_in(jj) * (zti_roof(jj) - pti_wall(jj))
300 prad_roof_win(jj) = pradht_in(jj) * (zti_roof(jj) - b%XT_WIN2(jj))
301 prad_roof_floor(jj)= pradht_in(jj) * (zti_roof(jj) - pts_floor(jj))
302 prad_roof_mass(jj) = pradht_in(jj) * (zti_roof(jj) - b%XT_MASS(jj,1))
303 pconv_roof_bld(jj) = zchtc_in_roof(jj) * (zti_roof_conv(jj) - b%XTI_BLD (jj))
304 pflx_bld_roof(jj) = -(prad_roof_wall(jj) + prad_roof_win(jj) + prad_roof_floor(jj) + &
305 prad_roof_mass(jj) + pconv_roof_bld(jj))
313 ztrad_roof(jj) = ( zts_roof(jj)**4 + &
314 4.*zimpl*zts_roof(jj)**3 * (t%XT_ROOF(jj,1) - zts_roof(jj)) )**0.25
317 pabs_lw_roof(jj) = t%XEMIS_ROOF(jj) * (plw_rad(jj) -
xstefan * ztrad_roof(jj)** 4)
323 ztaer_roof(jj) = zexpl * zts_roof(jj) + zimpl * t%XT_ROOF(jj,1)
324 phfree_roof(jj) = zrho_acf_roof(jj) *
xcpd * &
325 ( ztaer_roof(jj)/pexns(jj) - pta(jj)/pexna(jj) )
327 zheat_rr(jj) = prr(jj) *
xcl * (ztaer_roof(jj) - pta(jj))
332 plefree_roof(jj) = zrho_acf_roof_wat(jj) *
xlvtt * pdelt_roof(jj) * &
333 ( pqsat_roof(jj) - pqa(jj) + &
334 zimpl * zdqsat_roof(jj) * (t%XT_ROOF(jj,1) - zts_roof(jj)) )
338 pimb_roof(jj) = pabs_sw_roof(jj) + pabs_lw_roof(jj) - pdqs_roof(jj) &
339 - zdf_roof(jj) * ( phfree_roof(jj) + plefree_roof(jj)) &
340 - pdn_roof(jj) * pgsnow_roof(jj) + pflx_bld_roof(jj)
347 pqsat_roof(:) =
qsat(t%XT_ROOF(:,1),pps(:))
350 IF (
lhook)
CALL dr_hook(
'ROOF_LAYER_E_BUDGET',1,zhook_handle)
real function, dimension(size(pts)) chtc_down_doe(PTS, PTA)
subroutine roof_layer_e_budget(TOP, T, B, PQSAT_ROOF, PAC_BLD, PTSTEP, PDN_ROOF, PRHOA, PAC_ROOF, PAC_ROOF_WAT, PLW_RAD, PPS, PDELT_ROOF, PTA, PQA, PEXNA, PEXNS, PABS_SW_ROOF, PGSNOW_ROOF, PFLX_BLD_ROOF, PDQS_ROOF, PABS_LW_ROOF, PHFREE_ROOF, PLEFREE_ROOF, PIMB_ROOF, PG_GREENROOF_ROOF, PRADHT_IN, 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(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)