SURFEX v8.1
General documentation of Surfex
window_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 window_e_budget(B, PEMIS_WIN, PLW_W_TO_WIN, PLW_R_TO_WIN, PLW_G_TO_WIN, &
6  PLW_NR_TO_WIN, PLW_S_TO_WIN, PRAD_RF_WIN, PRAD_WL_WIN, &
7  PABS_SW_WIN, PLW_RAD, PAC_WL, PRADHT_IN, PTS_FL, PRHOA, &
8  PDN_RD, PT_CANYON, PTS_WL, PTS_RD, PTSN_RD, PTS_GD, &
9  PRAD_WIN_FL, PRAD_WIN_MA, PCONV_WIN_BLD, PEMIT_LW_WIN, &
10  PABS_LW_WIN, PLOAD_IN_WIN)
11 !###################################################################################################################################
12 !
13 !!**** *WINDOW_E_BUDGET*
14 !!
15 !! PURPOSE
16 !! -------
17 !
18 ! Computes the evoultion of window temperature
19 !
20 !
21 !!** METHOD
22 ! ------
23 !
24 ! window is supposed double pane with no thermal capacity
25 ! a steady state energy balance is applied to both layers that exchanges U_WIN(T1 - T2)
26 !
27 !! EXTERNAL
28 !! --------
29 !!
30 !!
31 !! IMPLICIT ARGUMENTS
32 !! ------------------
33 !!
34 !! MODD_CST
35 !!
36 !!
37 !! REFERENCE
38 !! ---------
39 !!
40 !!
41 !! AUTHOR
42 !! ------
43 !!
44 !! B. Bueno * Meteo-France *
45 !!
46 !! MODIFICATIONS
47 !! -------------
48 !! Original 04/2011
49 !! G. Pigeon 10/11/2011 exteranlized window balance from wall_layer_e_budget to window_e_budget and use fluxes from layers for
50 ! which the balance has been computed before (roof and wall) and returns the fluxes to the compartments
51 ! computed afterwards (floor, mass, bld)
52 !! G. Pigeon 09/2012 new indoor conv. coef
53 !! G. Pigeon 10/2012 separate abs from outdoor on both side of window
54 !! + add loads for indoor face of the window
55 !-------------------------------------------------------------------------------
56 !
57 !* 0. DECLARATIONS
58 ! ------------
59 !
60 USE modd_bem_n, ONLY : bem_t
61 !
62 USE modd_csts,ONLY : xcpd, xstefan
63 USE mode_conv_doe
64 USE yomhook ,ONLY : lhook, dr_hook
65 USE parkind1 ,ONLY : jprb
66 !
67 IMPLICIT NONE
68 !
69 !* 0.1 declarations of arguments
70 !
71 TYPE(bem_t), INTENT(INOUT) :: B
72 !
73 REAL, DIMENSION(:), INTENT(IN) :: PEMIS_WIN ! window emissivity
74 REAL, DIMENSION(:), INTENT(IN) :: PLW_W_TO_WIN ! Radiative heat trasfer coeff window-wall outdoor
75  ! [W K-1 m-2]
76 REAL, DIMENSION(:), INTENT(IN) :: PLW_R_TO_WIN ! Radiative heat trasfer coeff window-road
77  ! [W K-1 m-2]
78 REAL, DIMENSION(:), INTENT(IN) :: PLW_G_TO_WIN ! Radiative heat trasfer coeff window-garden
79 REAL, DIMENSION(:), INTENT(IN) :: PLW_NR_TO_WIN! Radiative heat trasfer coeff window-snow
80 REAL, DIMENSION(:), INTENT(IN) :: PLW_S_TO_WIN ! Radiative heat trasfer coeff window-sky
81  ! [W K-1 m-2]
82 REAL, DIMENSION(:), INTENT(IN) :: PRAD_RF_WIN ! rad. fluxes from roof to win [W m-2(roof)]
83 REAL, DIMENSION(:), INTENT(IN) :: PRAD_WL_WIN ! rad. fluxes from wall to win [W m-2(roof)]
84 REAL, DIMENSION(:), INTENT(IN) :: PABS_SW_WIN ! window absorbed shortwave radiation [W m-2]
85 REAL, DIMENSION(:), INTENT(IN) :: PLW_RAD ! atmospheric infrared radiation
86 REAL, DIMENSION(:), INTENT(IN) :: PAC_WL ! aerodynamical conductance between wall and canyon
87 REAL, DIMENSION(:), INTENT(IN) :: PRADHT_IN ! Indoor radiant heat transfer coefficient
88  ! [W K-1 m-2]
89 REAL, DIMENSION(:), INTENT(IN) :: PTS_FL ! floor layers temperatures [K]
90 REAL, DIMENSION(:), INTENT(IN) :: PRHOA ! rho
91 REAL, DIMENSION(:), INTENT(IN) :: PDN_RD ! snow-covered fraction on roads
92 REAL, DIMENSION(:), INTENT(IN) :: PT_CANYON ! air canyon temperature
93 REAL, DIMENSION(:), INTENT(IN) :: PTS_WL ! wall outdoor surface temperature
94 REAL, DIMENSION(:), INTENT(IN) :: PTS_RD ! road surface temperature
95 REAL, DIMENSION(:), INTENT(IN) :: PTSN_RD ! road snow temperature
96 REAL, DIMENSION(:), INTENT(IN) :: PTS_GD ! green area surface temperature
97 REAL, DIMENSION(:), INTENT(OUT) :: PRAD_WIN_FL ! rad. fluxes from window to floor [W m-2(window)]
98 REAL, DIMENSION(:), INTENT(OUT) :: PRAD_WIN_MA ! rad. fluxes from window to mass [W m-2(window)]
99 REAL, DIMENSION(:), INTENT(OUT) :: PCONV_WIN_BLD ! conv. fluxes from window to bld [W m-2(window)]
100 REAL, DIMENSION(:), INTENT(OUT) :: PEMIT_LW_WIN ! Longwave radiation emitted by the window [W m-2(window)]
101 REAL, DIMENSION(:), INTENT(OUT) :: PABS_LW_WIN ! Longwave radiation absorbed by the window [W m-2(window)]
102 REAL, DIMENSION(:), INTENT(IN) :: PLOAD_IN_WIN ! solar + internal heat gain
103 !
104 !* 0.2 declarations of local variables
105 !
106 REAL, DIMENSION(SIZE(PT_CANYON)) :: ZT_SKY ! sky temperature [K]
107 REAL, DIMENSION(SIZE(PT_CANYON)) :: ZA12 !
108 REAL, DIMENSION(SIZE(PT_CANYON)) :: ZB2 ! auxiliar variables for window temperature
109 REAL, DIMENSION(SIZE(PT_CANYON)) :: ZB1 ! calculations
110 REAL, DIMENSION(SIZE(PT_CANYON)) :: ZA21 !
111 REAL, DIMENSION(SIZE(PT_CANYON)) :: ZCHTC_IN_WIN ! indoor convective heat transfer coef. window [W m-2 K-1]
112 INTEGER :: JJ
113 
114 !* Preliminaries
115 ! -------------
116 zchtc_in_win = chtc_vert_doe(b%XT_WIN2, b%XTI_BLD)
117 DO jj=1,SIZE(zchtc_in_win)
118  zchtc_in_win(jj) = max(1., zchtc_in_win(jj))
119 ENDDO
120 
121 !* 1. Sky temperature
122 ! ---------------
123 zt_sky(:) = (plw_rad(:)/xstefan)**0.25
124 !
125 za12(:) = zchtc_in_win(:) &
126  + pradht_in(:) * b%XF_WIN_MASS (:) &
127  + pradht_in(:) * b%XF_WIN_FLOOR(:) &
128  + b%XUGG_WIN(:)
129 !
130 zb1(:) = zchtc_in_win(:) * b%XTI_BLD (:) &
131  + pradht_in(:) * b%XF_WIN_MASS(:) * b%XT_MASS(:,1) &
132  + b%XF_WIN_WALL (:) * prad_wl_win(:) &
133  + b%XF_WIN_FLOOR(:) * prad_rf_win(:) &
134  + pradht_in(:) * b%XF_WIN_FLOOR(:)* pts_fl(:) &
135  + pload_in_win(:) + pabs_sw_win(:) /2.
136 !
137 za21(:) = - pac_wl(:) * prhoa(:)*xcpd &
138  - plw_s_to_win(:) &
139  - plw_w_to_win(:) &
140  - plw_r_to_win(:) *(1.-pdn_rd(:))&
141  - plw_g_to_win(:) &
142  - plw_nr_to_win(:) * pdn_rd(:) &
143  - b%XUGG_WIN(:)
144 !
145 zb2(:) = - pac_wl(:) * prhoa(:)*xcpd*pt_canyon(:) &
146  - plw_s_to_win(:) * zt_sky(:) &
147  - plw_w_to_win(:) * pts_wl(:) &
148  - plw_r_to_win(:) *(1.-pdn_rd(:)) * pts_rd(:) &
149  - plw_nr_to_win(:) * pdn_rd(:) * ptsn_rd(:) &
150  - pabs_sw_win(:) /2.
151 !
152 IF (SIZE(pts_gd)>0) THEN
153  zb2(:) = zb2(:) - plw_g_to_win(:) * pts_gd(:)
154 ENDIF
155 !
156 ! compute outdoor temperature
157 b%XT_WIN1(:) = ( zb2(:) - zb1(:)*b%XUGG_WIN(:)/za12(:) ) / &
158  ( za21(:) + b%XUGG_WIN(:)**2/za12(:) )
159 !
160 ! compute indoor temperature
161 b%XT_WIN2(:) = (zb1(:) + b%XUGG_WIN(:)*b%XT_WIN1(:) ) / za12(:)
162 !
163 ! outdoor infrared radiation absorded by the window
164 pabs_lw_win(:) = plw_s_to_win(:) * (zt_sky(:) - b%XT_WIN1(:)) + &
165  (1.-pdn_rd(:)) * plw_r_to_win(:) * (pts_rd(:) - b%XT_WIN1(:)) + &
166  plw_w_to_win(:) * (pts_wl(:) - b%XT_WIN1(:)) + &
167  pdn_rd(:) * plw_nr_to_win(:) * (ptsn_rd(:) - b%XT_WIN1(:))
168 !
169 IF (SIZE(pts_gd)>0) THEN
170  pabs_lw_win(:) = pabs_lw_win(:) + plw_g_to_win(:) * (pts_gd(:) - b%XT_WIN1(:))
171 ENDIF
172 !
173 ! outdoor infrared radiation emited by the window
174 pemit_lw_win(:) = xstefan * b%XT_WIN1(:)**4 + (1 - pemis_win(:))/pemis_win(:) * pabs_lw_win(:)
175 !
176 prad_win_fl(:) = pradht_in(:) * (b%XT_WIN2(:) - pts_fl(:))
177 prad_win_ma(:) = pradht_in(:) * (b%XT_WIN2(:) - b%XT_MASS(:,1))
178 pconv_win_bld(:) = zchtc_in_win(:) * (b%XT_WIN2(:) - b%XTI_BLD(:))
179 !
180 END SUBROUTINE window_e_budget
real, save xcpd
Definition: modd_csts.F90:63
real, save xstefan
Definition: modd_csts.F90:59
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
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)