SURFEX v8.1
General documentation of Surfex
window_data.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 window_data(KI, B)
7 ! #############################################################
8 !
9 !
10 !!**** *WINDOW_DATA*
11 !!
12 !! PURPOSE
13 !! -------
14 !
15 ! Computes the radiative properties of the window
16 !
17 !
18 !!** METHOD
19 !! ------
20 !! uses U_WIN (window conductivity) and SHGC (window solar heat gain coef)
21 !! to compute the normal incident transmittance/reflectance
22 !! a factor to normal incident tran/ref is applied to take into account all
23 !! possible incidence between 18deg and 72deg
24 !!
25 !!
26 !! EXTERNAL
27 !! --------
28 !!
29 !!
30 !! IMPLICIT ARGUMENTS
31 !! ------------------
32 !!
33 !! MODD_CST
34 !!
35 !!
36 !! REFERENCE
37 !! ---------
38 !!
39 !! Simple Window Model from EnergyPlus Engineering Reference V7, 2012, p. 217.
40 !!
41 !! AUTHOR
42 !! ------
43 !!
44 !! B. Bueno * Meteo-France *
45 !!
46 !! MODIFICATIONS
47 !! -------------
48 !! Original 11/10
49 !! G. Pigeon & J. Le Bras 09/12 apply new factor to normal incident tran/ref
50 !-------------------------------------------------------------------------------
51 !
52 !* 0. DECLARATIONS
53 ! ------------
54 !
55 USE modd_bem_n, ONLY : bem_t
56 !
57 !
58 USE yomhook ,ONLY : lhook, dr_hook
59 USE parkind1 ,ONLY : jprb
60 !
61 IMPLICIT NONE
62 !
63 INTEGER, INTENT(IN) :: KI ! number of points
64 TYPE(bem_t), INTENT(INOUT) :: B
65 !
66 REAL, DIMENSION(KI) :: ZR_IW ! interior film resistance under winter conditions
67 REAL, DIMENSION(KI) :: ZR_OW ! exterior fild resistance uder winter conditions
68 REAL, DIMENSION(KI) :: ZR_IS ! interior film resistance under summer conditions
69 REAL, DIMENSION(KI) :: ZR_OS ! exterior fild resistance uder summer conditions
70 REAL, DIMENSION(KI) :: ZFRAC ! inward flowing fraction
71 REAL, DIMENSION(KI) :: ZTRAN_WIN_NORM ! Window transmittance for normal incident beam
72 REAL, DIMENSION(KI) :: ZALB_WIN_NORM ! Window reflectance for normal incident beam
73 REAL,DIMENSION(KI) :: ZFAC_TRAN ! transmittance factor of the window to the normal incidence
74 REAL,DIMENSION(KI) :: ZFAC_ALB ! reflectance (albedo) factor of the window to normal incidence
75 REAL(KIND=JPRB) :: ZHOOK_HANDLE
76 
77 REAL:: TA, RA, TBCD, RBCD, TD, RD, TE, RE, TFGHI, RFGHI, TFH, RFH, TJ, RJ
78 !
79 
80 !* initialization and determine transmittance and reflectance factor of the window
81 
82 !Curve AT temp Et RA = R temp Et
83 ta = 0.9237767331 ; ra = 1.6911265959
84 tbcd = 0.8802058937 ; rbcd = 1.5239470129
85 td = 0.893430955 ; rd = 1.0888507586
86 te = 0.8743096978 ; re = 1.5494187256
87 tfh = 0.8424427652 ; rfh = 1.0983010317
88 tfghi = 0.8327695761 ; rfghi = 1.3316554732
89 tj = 0.7889001341 ; rj = 1.0837577691
90 
91 WHERE (b%XU_WIN <= 1.42) !from 3 building BLD, TOUR and MI-2005
92  !ZONE 1
93  WHERE (b%XSHGC>=0.45)
94  zfac_tran = te
95  zfac_alb = re
96  END WHERE
97  !ZONE 2
98  WHERE (b%XSHGC<0.45 .AND. b%XSHGC>0.35)
99  zfac_tran = tj+(b%XSHGC-0.35)*(te-tj)/(0.45-0.35)
100  zfac_alb = rj+(b%XSHGC-0.35)*(re-rj)/(0.45-0.35)
101  END WHERE
102  !ZONE 3
103  WHERE(b%XSHGC<=0.35)
104  zfac_tran = tj
105  zfac_alb = rj
106  END WHERE
107 END WHERE
108 
109 
110 WHERE (b%XU_WIN>1.42 .AND. b%XU_WIN<1.70)
111  !ZONE 4
112  WHERE (b%XSHGC>=0.55)
113  zfac_tran = te
114  zfac_alb = re
115  END WHERE
116  !ZONE 5
117  WHERE (b%XSHGC>0.5 .AND. b%XSHGC<0.55)
118  zfac_tran = te+(b%XU_WIN-1.42)*((tfghi+(b%XSHGC-0.5)*(te-tfghi)/(0.55-0.50))-te)/(1.70-1.42)
119  zfac_alb = re+(b%XU_WIN-1.42)*((rfghi+(b%XSHGC-0.5)*(re-rfghi)/(0.55-0.50))-re)/(1.70-1.42)
120  END WHERE
121  !ZONE 6
122  WHERE (b%XSHGC>=0.45 .AND. b%XSHGC<=0.5)
123  zfac_tran = te+(b%XU_WIN-1.42)*(tfghi-te)/(1.70-1.42)
124  zfac_alb = re+(b%XU_WIN-1.42)*(rfghi-re)/(1.70-1.42)
125  END WHERE
126  !ZONE 7
127  WHERE (b%XSHGC>0.35 .AND. b%XSHGC<0.45)
128  zfac_tran = (tj+(b%XSHGC-0.35)*(te-tj)/(0.45-0.35))+ &
129  (b%XU_WIN-1.42)*(tfghi-(tj+(b%XSHGC-0.35)*(te-tj)/(0.45-0.35)))/(1.70-1.42)
130 
131  zfac_alb = (rj+(b%XSHGC-0.35)*(re-rj)/(0.45-0.35))+&
132  (b%XU_WIN-1.42)*(rfghi-(rj+(b%XSHGC-0.35)*(re-rj)/(0.45-0.35)))/(1.70-1.42)
133  END WHERE
134  !ZONE 8
135  WHERE (b%XSHGC>=0.30 .AND. b%XSHGC<=0.35)
136  zfac_tran = tj+(b%XU_WIN-1.42)*(tfghi-tj)/(1.70-1.42)
137  zfac_alb = rj+(b%XU_WIN-1.42)*(rfghi-rj)/(1.70-1.42)
138  END WHERE
139  !ZONE 9
140  WHERE (b%XSHGC>0.25 .AND. b%XSHGC<0.35)
141  zfac_tran = tj+(b%XU_WIN-1.42)*((tfh+(b%XSHGC-0.25)*(tj-tfh)/(0.30-0.25))-tj)/(1.70-1.42)
142  zfac_alb = rj+(b%XU_WIN-1.42)*((rfh+(b%XSHGC-0.25)*(rj-rfh)/(0.30-0.25))-rj)/(1.70-1.42)
143  END WHERE
144  !ZONE 10
145  WHERE (b%XSHGC<=0.25)
146  zfac_tran = tj+(b%XU_WIN-1.42)*(tfh-tj)/(1.70-1.42)
147  zfac_alb = rj+(b%XU_WIN-1.42)*(rfh-rj)/(1.70-1.42)
148  END WHERE
149 
150 
151 END WHERE
152 
153 
154 WHERE (b%XU_WIN>=1.70 .AND. b%XU_WIN<=3.41)
155  !ZONE 11
156  WHERE (b%XSHGC>=0.55)
157  zfac_tran = te
158  zfac_alb = re
159  END WHERE
160  !ZONE 12
161  WHERE (b%XSHGC > 0.5 .AND. b%XSHGC<0.55)
162  zfac_tran = tfghi+(b%XSHGC-0.50)*(te-tfghi)/(0.55-0.50)
163  zfac_alb = rfghi+(b%XSHGC-0.50)*(re-rfghi)/(0.55-0.50)
164  END WHERE
165  !ZONE 13
166  WHERE (b%XSHGC>=0.30 .AND. b%XSHGC<=0.50)
167  zfac_tran = tfghi
168  zfac_alb = rfghi
169  END WHERE
170 
171  !ZONE 14
172  WHERE (b%XSHGC > 0.25 .AND. b%XSHGC<0.30)
173  zfac_tran = tfh+(b%XSHGC-0.25)*(tfghi-tfh)/(0.30-0.25)
174  zfac_alb = rfghi+(b%XSHGC-0.25)*(rfghi-rfh)/(0.30-0.25)
175  END WHERE
176  !ZONE 15
177  WHERE (b%XSHGC<=0.25)
178  zfac_tran = tfh
179  zfac_alb = rfh
180  END WHERE
181 
182 END WHERE
183 
184 WHERE (b%XU_WIN>3.41 .AND. b%XU_WIN<4.54)
185  !ZONE 16
186  WHERE (b%XSHGC>=0.65)
187  zfac_tran = te+(b%XU_WIN-3.41)*(ta-te)/(4.54-3.41)
188  zfac_alb = re+(b%XU_WIN-3.41)*(ra-re)/(4.54-3.41)
189  END WHERE
190  !ZONE 17
191  WHERE (b%XSHGC>0.60 .AND. b%XSHGC<0.65)
192  zfac_tran = te+(b%XU_WIN-3.41)*((tbcd+(b%XSHGC-0.60)*(ta-tbcd)/(0.65-0.60))-te)/(4.54-3.41)
193  zfac_alb = re+(b%XU_WIN-3.41)*((rbcd+(b%XSHGC-0.60)*(ra-rbcd)/(0.65-0.60))-re)/(4.54-3.41)
194  END WHERE
195  !ZONE 18
196  WHERE (b%XSHGC>=0.55 .AND. b%XSHGC<=0.60)
197  zfac_tran = te+(b%XU_WIN-3.41)*(tbcd-te)/(4.54-3.41)
198  zfac_alb = re+(b%XU_WIN-3.41)*(rbcd-re)/(4.54-3.41)
199  END WHERE
200  !ZONE 19
201  WHERE (b%XSHGC>0.50 .AND. b%XSHGC<0.55)
202  zfac_tran = (tfghi+(b%XSHGC-0.50)*(te-tfghi)/(0.55-0.50)) + &
203  (b%XU_WIN-3.41)*(tbcd-(tfghi+(b%XSHGC-0.50)*(te-tfghi)/(0.55-0.50)))/(4.54-3.41)
204 
205  zfac_alb = (rfghi+(b%XSHGC-0.50)*(re-rfghi)/(0.55-0.50)) + &
206  (b%XU_WIN-3.41)*(rbcd-(rfghi+(b%XSHGC-0.50)*(re-rfghi)/(0.55-0.50)))/(4.54-3.41)
207  END WHERE
208  !ZONE 20
209  WHERE (b%XSHGC>=0.45 .AND. b%XSHGC<=0.50)
210  zfac_tran = tfghi+(b%XU_WIN-3.41)*(tbcd-tfghi)/(4.54-3.41)
211  zfac_alb = rfghi+(b%XU_WIN-3.41)*(rbcd-rfghi)/(4.54-3.41)
212  END WHERE
213  !ZONE 21
214  WHERE (b%XSHGC>0.30 .AND. b%XSHGC<0.45)
215  zfac_tran = tfghi+(b%XU_WIN-3.41)*((ta+(b%XSHGC-0.30)*(tbcd-ta)/(0.45-0.30))-tfghi)/(4.54-3.41)
216  zfac_alb = rfghi+(b%XU_WIN-3.41)*((ra+(b%XSHGC-0.30)*(rbcd-ra)/(0.45-0.30))-rfghi)/(4.54-3.41)
217  END WHERE
218  !ZONE 22
219  WHERE (b%XSHGC>0.25 .AND. b%XSHGC<0.30)
220  zfac_tran = (tfh+(b%XSHGC-0.25)*(tfghi-tfh)/(0.30-0.25)) + &
221  (b%XU_WIN-3.41)*(td-(tfh+(b%XSHGC-0.30)*(tfghi-tfh)/(0.30-0.25)))/(4.54-3.41)
222  zfac_alb = (rfh+(b%XSHGC-0.25)*(rfghi-rfh)/(0.30-0.25)) + &
223  (b%XU_WIN-3.41)*(rd-(rfh+(b%XSHGC-0.30)*(rfghi-rfh)/(0.30-0.25)))/(4.54-3.41)
224  END WHERE
225  !ZONE 23
226  WHERE (b%XSHGC<=0.25)
227  zfac_tran = tfh+(b%XU_WIN-3.41)*(td-tfh)/(4.54-3.41)
228  zfac_alb = rfh+(b%XU_WIN-3.41)*(rd-rfh)/(4.54-3.41)
229  END WHERE
230 
231 END WHERE
232 
233 
234 WHERE (b%XU_WIN>=4.54)
235  !ZONE 24
236  WHERE (b%XSHGC>=0.65)
237  zfac_tran = ta
238  zfac_alb = ra
239  END WHERE
240  !ZONE 25
241  WHERE (b%XSHGC >= 0.60 .AND. b%XSHGC<=0.65)
242  zfac_tran = tbcd+(b%XSHGC-0.60)*(ta-tbcd)/(0.65-0.60)
243  zfac_alb = rbcd+(b%XSHGC-0.60)*(ra-rbcd)/(0.65-0.60)
244  END WHERE
245  !ZONE 26
246  WHERE (b%XSHGC>=0.45 .AND. b%XSHGC<=0.60)
247  zfac_tran = tbcd
248  zfac_alb = rbcd
249  END WHERE
250  !ZONE 27
251  WHERE (b%XSHGC >= 0.30 .AND. b%XSHGC<=0.45)
252  zfac_tran = td+(b%XSHGC-0.30)*(tbcd-td)/(0.45-0.30)
253  zfac_alb = rd+(b%XSHGC-0.30)*(rbcd-rd)/(0.45-0.30)
254  END WHERE
255  !ZONE 28
256  WHERE (b%XSHGC<=0.30)
257  zfac_tran = td
258  zfac_alb = rd
259  END WHERE
260 
261 
262 END WHERE
263 
264 !* A. Determine glass-to-glass U-factor
265 ! ---------------------------------
266 !
267 IF (lhook) CALL dr_hook('WINDOW_DATA',0,zhook_handle)
268 !
269 WHERE (b%XU_WIN(:) < 5.85)
270  zr_iw(:) = 1. / (0.359073*log(b%XU_WIN(:)) + 6.949915)
271 ELSEWHERE
272  zr_iw(:) = 1. / (1.788041* b%XU_WIN(:) - 2.886625)
273 END WHERE
274 !
275 zr_ow(:) = 1. / (0.025342*b%XU_WIN(:) + 29.163853)
276 !
277 b%XUGG_WIN(:) = 1./(1./b%XU_WIN(:) - zr_iw(:) - zr_ow(:))
278 !
279 !* B. Determine layer solar transmittance
280 ! -----------------------------------
281 !
282 WHERE (b%XU_WIN(:) > 4.5)
283  WHERE (b%XSHGC(:) < 0.7206)
284  ztran_win_norm(:) = 0.939998 * b%XSHGC(:)**2 + 0.20332 * b%XSHGC(:)
285  ELSE WHERE
286  ztran_win_norm(:) = 1.30415 * b%XSHGC(:) - 0.30515
287  END WHERE
288 END WHERE
289 
290 WHERE (b%XU_WIN(:) < 3.4)
291  WHERE (b%XSHGC(:) <= 0.15)
292  ztran_win_norm(:) = 0.41040 * b%XSHGC(:)
293  ELSE WHERE
294  ztran_win_norm(:) = 0.085775 * b%XSHGC(:)**2 + 0.963954 * b%XSHGC(:) - 0.084958
295  END WHERE
296 END WHERE
297 
298 WHERE (b%XU_WIN(:) >= 3.4 .AND. b%XU_WIN(:) <=4.5)
299  WHERE(b%XSHGC(:) <= 0.15)
300  ztran_win_norm(:) = 0.5* (0.939998 * b%XSHGC(:)**2 + (0.20332+0.41040) * b%XSHGC(:))
301  ELSE WHERE
302  WHERE(b%XSHGC(:) > 0.15 .AND. b%XSHGC(:) < 0.7206)
303  ztran_win_norm(:) = 0.5 * &
304  ((0.939998+0.085775) * b%XSHGC(:)**2 + (0.20332 + 0.963954) * b%XSHGC(:) - 0.084958)
305  ELSE WHERE
306  ztran_win_norm(:) = 0.5 * &
307  (0.085775 * b%XSHGC(:)**2 + (0.963954+1.30415) * b%XSHGC(:) - (0.084958+0.30515))
308  END WHERE
309  END WHERE
310 END WHERE
311 !
312 !
313 !* C. Determine layer solar reflectance
314 ! ---------------------------------
315 !
316 WHERE (b%XU_WIN(:) > 4.5)
317  zr_is(:) = 1. / ( 29.436546*(b%XSHGC(:)-ztran_win_norm(:))**3 &
318  - 21.943415*(b%XSHGC(:)-ztran_win_norm(:))**2 &
319  + 9.945872 *(b%XSHGC(:)-ztran_win_norm(:)) + 7.426151 )
320 !
321  zr_os(:) = 1./ ( 2.225824*(b%XSHGC(:)-ztran_win_norm(:)) + 20.57708 )
322 ELSE WHERE
323  WHERE(b%XU_WIN(:) >= 3.4)
324  zr_is(:) = 0.5 * ( &
325  1. / ( 29.436546*(b%XSHGC(:)-ztran_win_norm(:))**3 &
326  - 21.943415*(b%XSHGC(:)-ztran_win_norm(:))**2 &
327  + 9.945872 *(b%XSHGC(:)-ztran_win_norm(:)) + 7.426151 ) &
328  + 1./ (199.8208128*(b%XSHGC(:)-ztran_win_norm(:))**3 &
329  - 90.639733*(b%XSHGC(:)-ztran_win_norm(:))**2 &
330  + 19.737055*(b%XSHGC(:)-ztran_win_norm(:)) + 6.766575) )
331 !
332  zr_os(:) = 0.5 * ( &
333  1./ ( 2.225824*(b%XSHGC(:)-ztran_win_norm(:)) + 20.57708 ) &
334  + 1./ ( 5.763355*(b%XSHGC(:)-ztran_win_norm(:)) + 20.541528 ) )
335 !
336  ELSE WHERE
337  zr_is(:) = 1./ (199.8208128*(b%XSHGC(:)-ztran_win_norm(:))**3 &
338  - 90.639733*(b%XSHGC(:)-ztran_win_norm(:))**2 &
339  + 19.737055*(b%XSHGC(:)-ztran_win_norm(:)) + 6.766575)
340 !
341  zr_os(:) = 1./ ( 5.763355*(b%XSHGC(:)-ztran_win_norm(:)) + 20.541528 )
342  END WHERE
343 !
344 END WHERE
345 !
346 zfrac(:) = (zr_os(:) + 0.5*(1./b%XUGG_WIN(:))) / &
347  (zr_os(:) + 1./b%XUGG_WIN(:) + zr_is(:))
348 !
349 zalb_win_norm(:) = 1. - ztran_win_norm(:) - (b%XSHGC(:)-ztran_win_norm(:)) / zfrac(:)
350 !
351 !* D. Determine layer solar absortance
352 ! --------------------------------
353 !
354 
355 b%XTRAN_WIN(:) = ztran_win_norm(:) * zfac_tran
356 b%XALB_WIN(:) = zalb_win_norm(:) * zfac_alb
357 !
358 b%XABS_WIN(:) = 1. - b%XALB_WIN(:) - b%XTRAN_WIN(:)
359 !
360 IF (lhook) CALL dr_hook('WINDOW_DATA',1,zhook_handle)
361 !
362 END SUBROUTINE window_data
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
subroutine window_data(KI, B)
Definition: window_data.F90:7