SURFEX v8.1
General documentation of Surfex
facade_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 SUBROUTINE facade_e_budget(TOP, T, B, DMT, PTSTEP, PDN_RD, PRHOA, PAC_WL, PAC_BLD, &
6  PLW_RAD, PPS, PEXNS, PT_CANYON, PTS_RD, PTSN_RD, PTS_GD, &
7  PTS_FL, PLW_WA_TO_WB, PLW_R_TO_WA, PLW_R_TO_WB, &
8  PLW_G_TO_WA, PLW_G_TO_WB, PLW_S_TO_WA, PLW_S_TO_WB, &
9  PLW_NR_TO_WA,PLW_NR_TO_WB, PLW_WIN_TO_WA, PLW_WIN_TO_WB, &
10  PLW_S_TO_WIN, PLW_WA_TO_WIN, PLW_WB_TO_WIN, PLW_R_TO_WIN,&
11  PLW_G_TO_WIN, PLW_NR_TO_WIN, PFLX_BLD_WL_A, PDQS_WL_A, &
12  PFLX_BLD_WL_B, PDQS_WL_B, PEMIT_LW_FAC, PIMB_WL, &
13  PRADHT_IN, PRAD_RF_WL, PRAD_RF_WIN, PRAD_WL_FL, &
14  PRAD_WL_MA, PRAD_WIN_FL, PRAD_WIN_MA, PCONV_WL_BLD, &
15  PCONV_WIN_BLD, PAC_WIN, PLOAD_IN_WL, PLOAD_IN_WIN )
16 !
17 ! ##########################################################################
18 !
19 !!**** *FACADE_E_BUDGET*
20 !!
21 !! PURPOSE
22 !! -------
23 !
24 ! Computes the evolution of wall and window temperature from
25 ! wall_layer_e_budget et window_e_budget
26 !
27 !
28 !!** METHOD
29 ! ------
30 !
31 !! EXTERNAL
32 !! --------
33 !!
34 !!
35 !! IMPLICIT ARGUMENTS
36 !! ------------------
37 !!
38 !! MODD_CST
39 !!
40 !!
41 !! REFERENCE
42 !! ---------
43 !!
44 !!
45 !! AUTHOR
46 !! ------
47 !!
48 !! G. Pigeon * Meteo-France *
49 !!
50 !! MODIFICATIONS
51 !! -------------
52 !! Original 10/11/2011
53 !! G. Pigeon /09/2012: new conv. coef for indoor/outdoor
54 !! G. Pigeon /10/2012: new arg. : solar heat load for indoor
55 !-------------------------------------------------------------------------------
56 !
57 !* 0. DECLARATIONS
58 ! ------------
59 !
61 USE modd_teb_n, ONLY : teb_t
62 USE modd_bem_n, ONLY : bem_t
64 !
65 USE modd_surf_par, ONLY : xundef
66 USE modd_csts, ONLY : xcpd
67 !
68 USE modi_wall_layer_e_budget
69 USE modi_window_e_budget
70 USE yomhook ,ONLY : lhook, dr_hook
71 USE parkind1 ,ONLY : jprb
72 !
73 IMPLICIT NONE
74 !
75 !* 0.1 declarations of arguments
76 !
77 TYPE(teb_options_t), INTENT(INOUT) :: TOP
78 TYPE(teb_t), INTENT(INOUT) :: T
79 TYPE(bem_t), INTENT(INOUT) :: B
80 TYPE(diag_misc_teb_t), INTENT(INOUT) :: DMT
81 !
82 REAL, INTENT(IN) :: PTSTEP ! time step
83 REAL, DIMENSION(:), INTENT(IN) :: PDN_RD ! snow-covered fraction on roads
84 REAL, DIMENSION(:), INTENT(IN) :: PRHOA ! rho
85 REAL, DIMENSION(:), INTENT(IN) :: PAC_WL ! aerodynamical conductance
86 ! ! between wall and canyon
87 REAL, DIMENSION(:), INTENT(IN) :: PAC_BLD ! aerodynamical conductance
88  ! inside the building itself
89 REAL, DIMENSION(:), INTENT(IN) :: PLW_RAD ! atmospheric infrared radiation
90 REAL, DIMENSION(:), INTENT(IN) :: PPS ! pressure at the surface
91 REAL, DIMENSION(:), INTENT(IN) :: PEXNS ! surface Exner function
92 REAL, DIMENSION(:), INTENT(IN) :: PT_CANYON ! air canyon temperature
93 REAL, DIMENSION(:), INTENT(IN) :: PTS_RD ! road surface temperature
94 REAL, DIMENSION(:), INTENT(IN) :: PTSN_RD ! road snow temperature
95 REAL, DIMENSION(:), INTENT(IN) :: PTS_GD ! green area surface temperature
96 REAL, DIMENSION(:), INTENT(IN) :: PTS_FL ! floor layers temperatures [K]
97 !
98 REAL, DIMENSION(:), INTENT(IN) :: PLW_WA_TO_WB ! LW interactions wall -> wall (both versions)
99 REAL, DIMENSION(:), INTENT(IN) :: PLW_R_TO_WA ! LW interactions road -> wall ; DEF formulation
100 REAL, DIMENSION(:), INTENT(IN) :: PLW_R_TO_WB ! LW interactions road -> wall ; DEF formulation
101 REAL, DIMENSION(:), INTENT(IN) :: PLW_G_TO_WA ! LW interactions garden -> wall ; DEF formulation
102 REAL, DIMENSION(:), INTENT(IN) :: PLW_G_TO_WB ! LW interactions garden -> wall ; DEF formulation
103 REAL, DIMENSION(:), INTENT(IN) :: PLW_S_TO_WA ! LW interactions sky -> wall
104 REAL, DIMENSION(:), INTENT(IN) :: PLW_S_TO_WB ! LW interactions sky -> wall
105 REAL, DIMENSION(:), INTENT(IN) :: PLW_NR_TO_WA ! LW interactions road(snow) -> wall
106 REAL, DIMENSION(:), INTENT(IN) :: PLW_NR_TO_WB ! LW interactions road(snow) -> wall
107 REAL, DIMENSION(:), INTENT(IN) :: PLW_WA_TO_WIN! Radiative heat trasfer coeff wall-window
108  ! [W K-1 m-2]
109 REAL, DIMENSION(:), INTENT(IN) :: PLW_WB_TO_WIN! Radiative heat trasfer coeff wall-window
110  ! [W K-1 m-2]
111 REAL, DIMENSION(:), INTENT(IN) :: PLW_S_TO_WIN ! Radiative heat trasfer coeff window-sky
112  ! [W K-1 m-2]
113 REAL, DIMENSION(:), INTENT(IN) :: PLW_WIN_TO_WA! Radiative heat trasfer coeff window-wall
114  ! [W K-1 m-2]
115 REAL, DIMENSION(:), INTENT(IN) :: PLW_WIN_TO_WB! Radiative heat trasfer coeff window-wall
116  ! [W K-1 m-2]
117 REAL, DIMENSION(:), INTENT(IN) :: PLW_R_TO_WIN ! Radiative heat trasfer coeff window-road
118  ! [W K-1 m-2]
119 REAL, DIMENSION(:), INTENT(IN) :: PLW_G_TO_WIN ! Radiative heat trasfer coeff window-garden
120 REAL, DIMENSION(:), INTENT(IN) :: PLW_NR_TO_WIN! Radiative heat trasfer coeff window-snow
121 !
122 REAL, DIMENSION(:), INTENT(OUT) :: PFLX_BLD_WL_A! flux from bld to wall
123 REAL, DIMENSION(:), INTENT(INOUT) :: PDQS_WL_A ! heat storage inside the wall
124 REAL, DIMENSION(:), INTENT(OUT) :: PFLX_BLD_WL_B! flux from bld to wall
125 REAL, DIMENSION(:), INTENT(INOUT) :: PDQS_WL_B ! heat storage inside the wall
126 REAL, DIMENSION(:), INTENT(OUT) :: PEMIT_LW_FAC ! LW flux emitted by the facade (W/m2 of facade)
127 REAL, DIMENSION(:), INTENT(OUT) :: PIMB_WL ! wall residual energy imbalance
128  ! for verification [W m-2]
129 REAL, DIMENSION(:), INTENT(IN) :: PRADHT_IN ! Indoor radiant heat transfer coefficient
130  ! [W K-1 m-2]
131 REAL, DIMENSION(:), INTENT(IN) :: PRAD_RF_WL ! rad. fluxes from roof to wall [W m-2(roof)]
132 REAL, DIMENSION(:), INTENT(IN) :: PRAD_RF_WIN ! rad. fluxes from roof to win [W m-2(roof)]
133 REAL, DIMENSION(:), INTENT(OUT) :: PRAD_WL_FL! rad. fluxes from wall to floor [W m-2(wall)]
134 REAL, DIMENSION(:), INTENT(OUT) :: PRAD_WL_MA ! rad. fluxes from wall to mass [W m-2(wall)]
135 REAL, DIMENSION(:), INTENT(OUT) :: PRAD_WIN_FL ! rad. fluxes from window to floor [W m-2(win)]
136 REAL, DIMENSION(:), INTENT(OUT) :: PRAD_WIN_MA ! rad. fluxes from window to mass [W m-2(win)]
137 REAL, DIMENSION(:), INTENT(OUT) :: PCONV_WL_BLD ! conv. fluxes from wall to bld [W m-2(wall)]
138 REAL, DIMENSION(:), INTENT(OUT) :: PCONV_WIN_BLD ! conv. fluxes from window to bld [W m-2(wind.)]
139 REAL, DIMENSION(:), INTENT(IN) :: PAC_WIN ! window aerodynamic conductance
140 !
141 REAL, DIMENSION(:), INTENT(IN) :: PLOAD_IN_WL ! solar + inter. heat gains W/m2 [wall]
142 REAL, DIMENSION(:), INTENT(IN) :: PLOAD_IN_WIN ! solar + inter. heat gains W/m2 [win]
143 !* 0.2 declarations of local variables
144 !
145 REAL, DIMENSION(SIZE(B%XTI_BLD)) :: ZRAD_WL_WIN ! rad. fluxes between averaged wall and win [W m-2(wall)]
146 REAL, DIMENSION(SIZE(B%XTI_BLD)) :: ZRAD_WL_A_WIN ! rad. fluxes between one wall and win [W m-2(wall)]
147 REAL, DIMENSION(SIZE(B%XTI_BLD)) :: ZEMIS_WIN ! window emissivity
148 REAL, DIMENSION(SIZE(B%XTI_BLD)) :: ZEMIT_LW_WIN ! Longwave radiation emitted by the window [W m-2(window)]
149 REAL, DIMENSION(SIZE(B%XTI_BLD)) :: ZEMIT_LW_WL_A ! Longwave radiation emitted by the wall [W m-2(wall)]
150 REAL, DIMENSION(SIZE(B%XTI_BLD)) :: ZEMIT_LW_WL_B ! Longwave radiation emitted by the wall [W m-2(wall)]
151 REAL, DIMENSION(SIZE(B%XTI_BLD)) :: ZTS_WL_A ! surface temperature of wall A at previous time-step
152 REAL, DIMENSION(SIZE(B%XTI_BLD)) :: ZTS_WL_B ! surface temperature of wall B at previous time-step
153 REAL, DIMENSION(SIZE(B%XTI_BLD)) :: ZTI_WL_A ! internal temperature of wall A at previous time-step
154 REAL, DIMENSION(SIZE(B%XTI_BLD)) :: ZTI_WL_B ! internal temperature of wall B at previous time-step
155 REAL, DIMENSION(SIZE(B%XTI_BLD)) :: ZTS_WL ! surface temperature of averaged wall at new time-step
156 REAL, DIMENSION(SIZE(B%XTI_BLD)) :: ZIMB_WL ! wall residual energy imbalance for verification [W m-2]
157 REAL, DIMENSION(SIZE(B%XTI_BLD)) :: ZRAD_WL_FL! rad. fluxes from wall to floor [W m-2(wall)]
158 REAL, DIMENSION(SIZE(B%XTI_BLD)) :: ZRAD_WL_MA ! rad. fluxes from wall to mass [W m-2(wall)]
159 REAL, DIMENSION(SIZE(B%XTI_BLD)) :: ZCONV_WL_BLD ! conv. fluxes from wall to bld [W m-2(wall)]
160 REAL, DIMENSION(SIZE(B%XTI_BLD)) :: ZLW_W_TO_WIN ! Radiative heat trasfer coeff wall-window [W K-1 m-2]
161 INTEGER :: IWL
162 REAL(KIND=JPRB) :: ZHOOK_HANDLE
163 !-------------------------------------------------------------------------------
164 IF (lhook) CALL dr_hook('FACADE_E_BUDGET',0,zhook_handle)
165 !-------------------------------------------------------------------------------
166 prad_wl_fl= xundef
167 prad_wl_ma = xundef
168 prad_win_fl = xundef
169 prad_win_ma = xundef
170 pconv_wl_bld = xundef
171 pconv_win_bld = xundef
172 !
173 !* surface temperature of the opposite wall
174 ! ----------------------------------------
175 !
176 zts_wl_a(:) = t%XT_WALL_A(:,1)
177 zts_wl_b(:) = t%XT_WALL_B(:,1)
178 iwl = SIZE(t%XT_WALL_A,2)
179 zti_wl_a(:) = t%XT_WALL_A(:,iwl)
180 zti_wl_b(:) = t%XT_WALL_B(:,iwl)
181 !
182 ! *Convection heat transfer coefficients [W m-2 K-1] from EP Engineering Reference
183 ! --------------------------------------------------------------------------------
184 !
185 !
186 ! *opaque balance of the facade for wall A
187 ! ---------------------------------------
188 !
189  CALL wall_layer_e_budget(top, t, b, t%XT_WALL_A, zts_wl_b, zti_wl_b, ptstep, pdn_rd, &
190  prhoa, pac_wl, pac_bld, plw_rad, pps, pexns, dmt%XABS_SW_WALL_A,&
191  pt_canyon, pts_rd, ptsn_rd, pts_gd, pts_fl, plw_wa_to_wb, &
192  plw_r_to_wa, plw_g_to_wa, plw_nr_to_wa, plw_win_to_wa, &
193  plw_s_to_wa, pflx_bld_wl_a, pdqs_wl_a, dmt%XABS_LW_WALL_A, &
194  zemit_lw_wl_a, dmt%XH_WALL_A, zimb_wl, pradht_in, prad_rf_wl, &
195  zrad_wl_a_win, zrad_wl_fl, zrad_wl_ma, zconv_wl_bld, &
196  pload_in_wl)
197 !
198 pimb_wl = 0.5 * zimb_wl
199 prad_wl_fl = 0.5 * zrad_wl_fl
200 prad_wl_ma = 0.5 * zrad_wl_ma
201 pconv_wl_bld = 0.5 * zconv_wl_bld
202 zrad_wl_win = 0.5 * zrad_wl_a_win
203 !
204 ! *opaque balance of the facade for wall B
205 ! ---------------------------------------
206 !
207 IF (top%CWALL_OPT/='UNIF') THEN
208  CALL wall_layer_e_budget(top, t, b, t%XT_WALL_B, zts_wl_a, zti_wl_a, ptstep, pdn_rd, &
209  prhoa, pac_wl, pac_bld, plw_rad, pps, pexns, dmt%XABS_SW_WALL_B, &
210  pt_canyon, pts_rd, ptsn_rd, pts_gd, pts_fl, plw_wa_to_wb, &
211  plw_r_to_wb, plw_g_to_wb, plw_nr_to_wb, plw_win_to_wb, &
212  plw_s_to_wb, pflx_bld_wl_b, pdqs_wl_b, dmt%XABS_LW_WALL_B, &
213  zemit_lw_wl_b, dmt%XH_WALL_B, zimb_wl, pradht_in, prad_rf_wl,&
214  zrad_wl_a_win, zrad_wl_fl, zrad_wl_ma, zconv_wl_bld, &
215  pload_in_wl )
216 ELSE
217  t%XT_WALL_B = t%XT_WALL_A
218  dmt%XH_WALL_B = dmt%XH_WALL_A
219  dmt%XABS_LW_WALL_B = dmt%XABS_LW_WALL_A
220  pdqs_wl_b = pdqs_wl_a
221  pflx_bld_wl_b = pflx_bld_wl_a
222  zemit_lw_wl_b = zemit_lw_wl_a
223 END IF
224 !
225 pimb_wl = pimb_wl + 0.5 * zimb_wl
226 prad_wl_fl = prad_wl_fl + 0.5 * zrad_wl_fl
227 prad_wl_ma = prad_wl_ma + 0.5 * zrad_wl_ma
228 pconv_wl_bld = pconv_wl_bld + 0.5 * zconv_wl_bld
229 zrad_wl_win = zrad_wl_win + 0.5 * zrad_wl_a_win
230 !
231 !-------------------------------------------------------------------------------
232 !
233 ! *Energy Balance for windows (averaged on both walls)
234 ! ---------------------------------------------------
235 !
236 IF (top%CBEM == 'DEF') THEN
237  zemit_lw_win(:) = 0.
238 END IF
239 !
240 IF (top%CBEM == 'BEM') THEN
241  zemis_win(:) = 0.84 ! From Engineering Reference documentation p219
242  ! (see http://apps1.eere.energy.gov/buildings/energyplus/
243  zlw_w_to_win(:) = plw_wa_to_win(:) + plw_wb_to_win(:)
244  zts_wl(:) = xundef
245  WHERE (zlw_w_to_win(:)>0.) &
246  zts_wl(:) = ( plw_wa_to_win(:)*t%XT_WALL_A(:,1)+plw_wb_to_win(:)*t%XT_WALL_B(:,1) ) / zlw_w_to_win(:)
247  CALL window_e_budget(b, zemis_win, zlw_w_to_win, plw_r_to_win, plw_g_to_win, plw_nr_to_win, &
248  plw_s_to_win, prad_rf_win, zrad_wl_win, dmt%XABS_SW_WIN, plw_rad, pac_win, &
249  pradht_in, pts_fl, prhoa, pdn_rd, pt_canyon, zts_wl, pts_rd, ptsn_rd, &
250  pts_gd, prad_win_fl, prad_win_ma, pconv_win_bld, zemit_lw_win, &
251  dmt%XABS_LW_WIN, pload_in_win )
252 ENDIF
253 
254 !* wall, and win emitted LW radiation on snow-free surfaces
255 ! ----------------------------------------------------------------
256 !
257 !
258 pemit_lw_fac(:) = 0.5*(zemit_lw_wl_a(:)+zemit_lw_wl_b(:)) * (1-b%XGR(:)) + zemit_lw_win(:) * b%XGR(:)
259 !
260 !-------------------------------------------------------------------------------
261 IF (lhook) CALL dr_hook('FACADE_E_BUDGET',1,zhook_handle)
262 END SUBROUTINE facade_e_budget
real, save xcpd
Definition: modd_csts.F90:63
subroutine facade_e_budget(TOP, T, B, DMT, PTSTEP, PDN_RD, PRHOA, PAC_WL, PAC_BLD, PLW_RAD, PPS, PEXNS, PT_CANYON, PTS_RD, PTSN_RD, PTS_GD, PTS_FL, PLW_WA_TO_WB, PLW_R_TO_WA, PLW_R_TO_WB, PLW_G_TO_WA, PLW_G_TO_WB, PLW_S_TO_WA, PLW_S_TO_WB, PLW_NR_TO_WA, PLW_NR_TO_WB, PLW_WIN_TO_WA, PLW_WIN_TO_WB, PLW_S_TO_WIN, PLW_WA_TO_WIN, PLW_WB_TO_WIN, PLW_R_TO_WIN, PLW_G_TO_WIN, PLW_NR_TO_WIN, PFLX_BLD_WL_A, PDQS_WL_A, PFLX_BLD_WL_B, PDQS_WL_B, PEMIT_LW_FAC, PIMB_WL, PRADHT_IN, PRAD_RF_WL, PRAD_RF_WIN, PRAD_WL_FL, PRAD_WL_MA, PRAD_WIN_FL, PRAD_WIN_MA, PCONV_WL_BLD, PCONV_WIN_BLD, PAC_WIN, PLOAD_IN_WL, PLOAD_IN_WIN)
real, parameter xundef
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
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 window_e_budget(B, PEMIS_WIN, PLW_W_TO_WIN, PLW_R_TO_WIN, PLW_G_TO_WIN, PLW_NR_TO_WIN, PLW_S_TO_WIN, PRAD_RF_WIN, PRAD_WL_WIN, PABS_SW_WIN, PLW_RAD, PAC_WL, PRADHT_IN, PTS_FL, PRHOA, PDN_RD, PT_CANYON, PTS_WL, PTS_RD, PTSN_RD, PTS_GD, PRAD_WIN_FL, PRAD_WIN_MA, PCONV_WIN_BLD, PEMIT_LW_WIN, PABS_LW_WIN, PLOAD_IN_WIN)