SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
wall_layer_e_budget.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! ##########################################################################
6  SUBROUTINE wall_layer_e_budget(HBEM, PT_WALL, PTS_WALL_B, PTI_WALL_B, PTSTEP, &
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, &
13  pt_win1, &
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 )
19 ! ##########################################################################
20 !
21 !!**** *ROAD_WALL_LAYER_E_BUDGET*
22 !!
23 !! PURPOSE
24 !! -------
25 !
26 ! Computes the evoultion of roads and walls surface temperatures
27 !
28 !
29 !!** METHOD
30 ! ------
31 !
32 ! 6 : equations for evolution of Ts_road and Ts_wall simultaneously
33 ! *************************************************************
34 !
35 ! dTw_k(t) / dt = 1/(dw_k*Cw_k) * (- 2*Kw_k-1*(Tw_k-Tw_k-1)/(dw_k-1 +dw_k)
36 ! - 2*Kw_k *(Tw_k-Tw_k+1)/(dw_k+1 +dw_k) )
37 !
38 ! dTw_1(t) / dt = 1/(dw_1*Cw_1) * ( Rn_w - H_w - LE_w
39 ! - 2*Kw_1*(Tw_1-Tw_2)/(dw_1 +dw_2) )
40 !
41 !
42 ! with
43 !
44 ! K*_k = (d*_k+ d*_k+1)/(d*_k/k*_k+ d*_k+1/k*_k+1)
45 !
46 ! Rn_w = abs_Rg_w
47 ! - sigma * emis_w * Ts_w**4 (t+dt)
48 ! + emis_w * SVF_w * LWR
49 ! + sigma * emis_w * emis_r * SVF_w * Ts_r**4 (t+dt)
50 ! + sigma * emis_w * emis_w * (1-2*SVF_w) * Ts_w**4 (t+dt)
51 ! + emis_w (1-emis_r) * SVF_r * SVF_w * LWR
52 ! + emis_w (1-emis_w) * SVF_w * (1-2*SVF_w) * LWR
53 ! + sigma * emis_w * emis_w * (1-emis_r) * SVF_w * (1- SVF_r) * Ts_w**4 (t+dt)
54 ! + sigma * emis_w * emis_w * (1-emis_w) * (1-2*SVF_w) * (1-2*SVF_w) * Ts_w**4 (t+dt)
55 ! + sigma * emis_w * emis_r * (1-emis_w) * SVF_w * (1-2*SVF_w) * Ts_r**4 (t+dt)
56 !
57 ! H_w = rho Cp CH V ( Ts_w (t+dt) - Ta_canyon )
58 !
59 ! LE_w = rho Lv CH V ( qs_w (t+dt) - qa_canyon )
60 !
61 !
62 ! The system is implicited (or semi-implicited).
63 !
64 ! ZIMPL=1 ---> implicit system
65 ! ZIMPL=0.5 ---> semi-implicit system
66 ! ZIMPL=0 ---> explicit system
67 !
68 !
69 !
70 !
71 !! EXTERNAL
72 !! --------
73 !!
74 !!
75 !! IMPLICIT ARGUMENTS
76 !! ------------------
77 !!
78 !! MODD_CST
79 !!
80 !!
81 !! REFERENCE
82 !! ---------
83 !!
84 !!
85 !! AUTHOR
86 !! ------
87 !!
88 !! V. Masson * Meteo-France *
89 !!
90 !! MODIFICATIONS
91 !! -------------
92 !! Original 23/01/98
93 !! 21/11/01 (V. Masson and A. Lemonsu) bug of latent flux
94 !! for very strong evaporation (all reservoir emptied
95 !! in one time-step)
96 !! 02/11 (V. Masson) splits the routine for road and walls separately
97 !! 01/12 (V. Masson) separates the 2 walls
98 !! 09/12 (G. Pigeon) modif internal convective coef convection
99 !! 10/12 (G. Pigeon) add solar heat gain of indoor wall
100 !-------------------------------------------------------------------------------
101 !
102 !* 0. DECLARATIONS
103 ! ------------
104 !
105 USE modd_surf_par, ONLY : xundef
106 USE modd_csts,ONLY : xcpd, xstefan
107 !
108 USE modi_layer_e_budget_get_coef
109 USE modi_layer_e_budget
110 USE mode_conv_doe
111 !
112 USE yomhook ,ONLY : lhook, dr_hook
113 USE parkind1 ,ONLY : jprb
114 !
115 IMPLICIT NONE
116 !
117 !* 0.1 declarations of arguments
118 !
119 REAL, DIMENSION(:,:), INTENT(INOUT) :: pt_wall ! wall layers temperatures
120 REAL, DIMENSION(:), INTENT(IN) :: pts_wall_b ! opposite wall surface temperature
121 REAL, DIMENSION(:), INTENT(IN) :: pti_wall_b ! opposite wall internal temperature
122 REAL, INTENT(IN) :: ptstep ! time step
123  CHARACTER(LEN=3), INTENT(IN) :: hbem ! Building Energy model 'DEF' or 'BEM'
124 REAL, DIMENSION(:,:), INTENT(IN) :: phc_wall ! heat capacity for wall layers
125 REAL, DIMENSION(:,:), INTENT(IN) :: ptc_wall ! thermal conductivity for wall layers
126 REAL, DIMENSION(:,:), INTENT(IN) :: pd_wall ! depth of wall layers
127 REAL, DIMENSION(:), INTENT(IN) :: pdn_road ! snow-covered fraction on roads
128 REAL, DIMENSION(:), INTENT(IN) :: prhoa ! rho
129 REAL, DIMENSION(:), INTENT(IN) :: pac_wall ! aerodynamical conductance [m/s]
130 ! ! between wall and canyon
131 REAL, DIMENSION(:), INTENT(IN) :: pac_bld ! aerodynamical conductance
132  ! inside the building itself
133 REAL, DIMENSION(:), INTENT(IN) :: pti_bld ! inside building temperature
134 REAL, DIMENSION(:), INTENT(IN) :: plw_rad ! atmospheric infrared radiation
135 REAL, DIMENSION(:), INTENT(IN) :: pps ! pressure at the surface
136 REAL, DIMENSION(:), INTENT(IN) :: pexns ! surface Exner function
137 REAL, DIMENSION(:), INTENT(IN) :: pabs_sw_wall ! absorbed solar radiation
138 REAL, DIMENSION(:), INTENT(IN) :: pt_canyon ! air canyon temperature
139 REAL, DIMENSION(:), INTENT(IN) :: pts_road ! road surface temperature
140 REAL, DIMENSION(:), INTENT(IN) :: ptsnow_road ! road snow temperature
141 REAL, DIMENSION(:), INTENT(IN) :: pts_garden ! green area surface temperature
142 REAL, DIMENSION(:), INTENT(IN) :: pts_mass ! surface mass temperature [K]
143 REAL, DIMENSION(:), INTENT(IN) :: pts_floor ! floor layers temperatures [K]
144 REAL, DIMENSION(:), INTENT(IN) :: pemis_wall ! wall emissivity
145 !
146 REAL, DIMENSION(:), INTENT(IN) :: plw_wa_to_wb ! LW interactions wall -> opposite wall
147 REAL, DIMENSION(:), INTENT(IN) :: plw_r_to_w ! LW interactions road -> wall ; DEF formulation
148 REAL, DIMENSION(:), INTENT(IN) :: plw_g_to_w ! LW interactions garden -> wall ; DEF formulation
149 REAL, DIMENSION(:), INTENT(IN) :: plw_s_to_w ! LW interactions sky -> wall
150 REAL, DIMENSION(:), INTENT(IN) :: plw_nr_to_w ! LW interactions road(snow) -> wall
151 REAL, DIMENSION(:), INTENT(IN) :: plw_win_to_w ! Radiative heat trasfer coeff wall-window
152  ! [W K-1 m-2]
153 !
154 REAL, DIMENSION(:), INTENT(IN) :: pt_win1 ! outdoor window temperature [K]
155 REAL, DIMENSION(:), INTENT(OUT) :: pflx_bld_wall! flux from bld to wall
156 REAL, DIMENSION(:), INTENT(INOUT) :: pdqs_wall ! heat storage inside the wall
157 REAL, DIMENSION(:), INTENT(IN) :: pt_win2 ! indoor window temperature [K]
158 REAL, DIMENSION(:), INTENT(OUT) :: pabs_lw_wall ! absorbed infrared rad. [W m-2(wall)]
159 REAL, DIMENSION(:), INTENT(OUT) :: pemit_lw_wall ! LW flux emitted by the wall [W m-2(wall)]
160 REAL, DIMENSION(:), INTENT(OUT) :: ph_wall ! Sensible heat flux from wall to air [W/m2(wall)]
161  ! wall = facade - glazing
162 REAL, DIMENSION(:), INTENT(OUT) :: pimb_wall ! wall residual energy imbalance
163  ! for verification [W m-2]
164 REAL, DIMENSION(:), INTENT(IN) :: pf_wall_floor ! View factor wall-floor
165 REAL, DIMENSION(:), INTENT(IN) :: pf_wall_mass ! View factor wall-mass
166 REAL, DIMENSION(:), INTENT(IN) :: pf_wall_win ! View factor wall-win
167 REAL, DIMENSION(:), INTENT(IN) :: pradht_in ! Indoor radiant heat transfer coefficient
168  ! [W K-1 m-2]
169 REAL, DIMENSION(:), INTENT(IN) :: prad_roof_wall ! rad. fluxes from roof to wall [W m-2(roof)]
170 REAL, DIMENSION(:), INTENT(OUT) :: prad_wall_win ! rad. fluxes from wall to win [W m-2(wall)]
171 REAL, DIMENSION(:), INTENT(OUT) :: prad_wall_floor! rad. fluxes from wall to floor [W m-2(wall)]
172 REAL, DIMENSION(:), INTENT(OUT) :: prad_wall_mass ! rad. fluxes from wall to mass [W m-2(wall)]
173 REAL, DIMENSION(:), INTENT(OUT) :: pconv_wall_bld ! conv. fluxes from wall to bld [W m-2(wall)]
174 
175 REAL, DIMENSION(:), INTENT(IN) :: pload_in_wall ! LOAD from solar heat gain + rad int. gains W/m2 [Wall]
176 
177 
178 !
179 !* 0.2 declarations of local variables
180 !
181 !
182 REAL :: zimpl=1.0 ! implicit coefficient
183 REAL :: zexpl=0.0 ! explicit coefficient
184 !
185 REAL, DIMENSION(SIZE(PPS),SIZE(PT_WALL,2)) :: za,& ! lower diag.
186  zb,& ! main diag.
187  zc,& ! upper diag.
188  zy ! r.h.s.
189 !
190 REAL, DIMENSION(SIZE(PPS)) :: zmtc_o_d_wall_in
191 REAL, DIMENSION(SIZE(PPS)) :: zdf_road ! Road snow free fraction
192 REAL, DIMENSION(SIZE(PPS)) :: zrho_acf_w ! rho * conductance
193 ! ! * snow-free f.
194 !
195 ! thermal capacity times layer depth
196 REAL, DIMENSION(SIZE(PPS)) :: zts_wall ! wall surface temperature
197 REAL, DIMENSION(SIZE(PPS)) :: zti_wall ! wall indoor surface temperature
198 REAL, DIMENSION(SIZE(PPS)) :: zti_wall_conv ! wall indoor surface temperature for conv. flux
199 REAL, DIMENSION(SIZE(PPS)) :: zt_sky ! sky temperature [K]
200 !
201 REAL, DIMENSION(SIZE(PPS)) :: zti_roof ! Indoor roof temperature [K]
202 REAL, DIMENSION(SIZE(PPS)) :: zdif_rad_wall_roof !diff between the rad flux that should receive the wall from the roof
203  ! and what it really receives [W m-2(bld)]
204 REAL, DIMENSION(SIZE(PPS)) :: zrad_wall_roof ! rad flux between the wall and the roof computed for the wall balance
205 REAL, DIMENSION(SIZE(PPS)) :: zf_wall_wall ! View factor wall-wall inside the building
206 REAL, DIMENSION(SIZE(PPS)) :: zchtc_in_wall ! indoor convective heat transfer coeff wall [W m-2 K-1]
207 INTEGER :: iwall_layer ! number of wall layers
208 INTEGER :: jj ! loop counter
209 REAL(KIND=JPRB) :: zhook_handle
210 !-------------------------------------------------------------------------------
211 IF (lhook) CALL dr_hook('WALL_LAYER_E_BUDGET',0,zhook_handle)
212 !
213 pflx_bld_wall = xundef
214 pimb_wall = xundef
215 prad_wall_win = xundef
216 prad_wall_floor= xundef
217 prad_wall_mass = xundef
218 pconv_wall_bld = xundef
219 
220 !
221  CALL layer_e_budget_get_coef( pt_wall, ptstep, zimpl, phc_wall, ptc_wall, pd_wall, &
222  za, zb, zc, zy )
223 !
224 iwall_layer = SIZE(pt_wall,2)
225 !
226 DO jj=1,SIZE(pdn_road)
227  !
228  zdf_road(jj) = 1. - pdn_road(jj)
229  !
230  zts_wall(jj) = pt_wall(jj,1)
231  zti_wall(jj) = pt_wall(jj, iwall_layer)
232  !
233  !* 2.1 outdoor convective flux properties
234  ! ----------------------------------
235  !
236  zrho_acf_w(jj) = prhoa(jj) * pac_wall(jj)
237  !
238  !* 2.2 Sky temperature
239  ! ---------------
240  !
241  zt_sky(jj) = (plw_rad(jj)/xstefan)**0.25
242  !
243  !* 2.3 indoor average thermal conductivity
244  ! -----------------------------------
245  !
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)))
249  ENDIF
250 ENDDO
251  !
252  !* 2.4 indoor convective coefficient
253  ! -----------------------------
254  !
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))
258  ENDDO
259 
260 !
261 !-------------------------------------------------------------------------------
262 !
263 !* 3. Outer wall layer coefficients
264 ! ------------------------------
265 !
266 DO jj=1,SIZE(pt_wall,1)
267  !
268  zb(jj,1) = zb(jj,1) + zimpl * xcpd/pexns(jj) * zrho_acf_w(jj)
269  !
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) )
272  !
273  !
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) &
278  + plw_win_to_w(jj) )
279  !
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))
287 
288  !
289 ENDDO
290 !
291 !-------------------------------------------------------------------------------
292 !
293 !* 4. Inside wall layer coefficients
294 ! -----------------------------
295 !
296 DO jj=1,SIZE(pt_wall,1)
297  !
298  IF (hbem=="DEF") THEN
299  !
300  zb(jj,iwall_layer) = zb(jj,iwall_layer) + zimpl * zmtc_o_d_wall_in(jj)
301  !
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)
305  !
306  ELSEIF (hbem=="BEM") THEN
307  !
308  zf_wall_wall(jj) = 1. - pf_wall_mass(jj) - pf_wall_win(jj) - 2.*pf_wall_floor(jj)
309  !
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)))
314  !
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)) + &
318  pradht_in(jj) * ( &
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)) )+ &
324  pload_in_wall(jj)
325  !
326  ENDIF
327  !
328 END DO
329 !
330 !-------------------------------------------------------------------------------
331 !
332 !* 5. heat conduction calculation
333 ! ---------------------------
334 !
335  CALL layer_e_budget( pt_wall, ptstep, zimpl, phc_wall, ptc_wall, pd_wall, &
336  za, zb, zc, zy, pdqs_wall )
337 !
338 !-------------------------------------------------------------------------------
339 !
340 !* 6. diagnostics of flux echanged with the wall
341 ! ------------------------------------------
342 !
343 !
344 !* radiative surface temperature used during the energy balance
345 zts_wall(:) = zimpl * pt_wall(:,1) + zexpl * zts_wall(:)
346 !
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(:))
353 !
354 !* emitted lw flux
355 pemit_lw_wall(:) = xstefan * pt_wall(:,1)**4 + &
356  (1 - pemis_wall(:))/pemis_wall(:) * pabs_lw_wall(:)
357 !
358 !* sensible heat flux to outdoor
359 ph_wall(:) = zrho_acf_w(:) * xcpd/pexns(:) * &
360  ( zimpl*pt_wall(:,1) + zexpl*zts_wall(:) - pt_canyon(:) )
361 !
362 IF (hbem=='BEM') THEN
363  !
364  !compute ZTI_WALL used in flux calculation
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)
367  !
368  !compute IR exchanged fluxes with the roof in the wall balance
369  zrad_wall_roof(:) = pradht_in(:) * (zti_wall(:) - zti_roof(:))
370  !compute the difference with the IR flux echanged between roof and wall for
371  !the roof balance, this difference will be added to the floor
372  zdif_rad_wall_roof(:) = zrad_wall_roof(:) + prad_roof_wall(:)
373 
374  !compute exchanged fluxes with other surfaces for which the balance is done after
375  prad_wall_floor(:) = pradht_in(:) * (zti_wall(:) - pts_floor(:))
376  ! contribution of the difference between the flux from the wall/flux from
377  ! the roof
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(:))
382  !
383  !
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(:)) )
389 !
390 !* wall energy residual imbalance for verification
391 ! -----------------------------------------------
392  pimb_wall(:) = pabs_sw_wall(:) + pabs_lw_wall(:) &
393  - pdqs_wall(:) - ph_wall(:) &
394  + pflx_bld_wall(:)
395 !
396 !
397 END IF
398 !
399 !-------------------------------------------------------------------------------
400 IF (lhook) CALL dr_hook('WALL_LAYER_E_BUDGET',1,zhook_handle)
401 !
402 END SUBROUTINE wall_layer_e_budget
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)