SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
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,PSHGC, PU_WIN, PALB_WIN, PABS_WIN, PUGG_WIN, PTRAN_WIN)
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 
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 REAL, DIMENSION(KI), INTENT(IN) :: pshgc ! solar heat gain coef. of windows
65 REAL, DIMENSION(KI), INTENT(IN) :: pu_win ! window U-factor [K m W-2]
66 REAL, DIMENSION(KI), INTENT(OUT) :: palb_win ! window albedo
67 REAL, DIMENSION(KI), INTENT(OUT) :: pabs_win ! window absortance
68 REAL, DIMENSION(KI), INTENT(OUT) :: pugg_win ! window glass-to-glass U-factor [W m-2 K-1]
69 REAL, DIMENSION(KI), INTENT(OUT) :: ptran_win! window transmittance (-)
70 !
71 REAL, DIMENSION(KI) :: zr_iw ! interior film resistance under winter conditions
72 REAL, DIMENSION(KI) :: zr_ow ! exterior fild resistance uder winter conditions
73 REAL, DIMENSION(KI) :: zr_is ! interior film resistance under summer conditions
74 REAL, DIMENSION(KI) :: zr_os ! exterior fild resistance uder summer conditions
75 REAL, DIMENSION(KI) :: zfrac ! inward flowing fraction
76 REAL, DIMENSION(KI) :: ztran_win_norm ! Window transmittance for normal incident beam
77 REAL, DIMENSION(KI) :: zalb_win_norm ! Window reflectance for normal incident beam
78 REAL,DIMENSION(KI) :: zfac_tran ! transmittance factor of the window to the normal incidence
79 REAL,DIMENSION(KI) :: zfac_alb ! reflectance (albedo) factor of the window to normal incidence
80 REAL(KIND=JPRB) :: zhook_handle
81 
82 REAL:: ta, ra, tbcd, rbcd, td, rd, te, re, tfghi, rfghi, tfh, rfh, tj, rj
83 !
84 
85 !* initialization and determine transmittance and reflectance factor of the window
86 
87 !Curve AT temp Et RA = R temp Et
88 ta = 0.9237767331 ; ra = 1.6911265959
89 tbcd = 0.8802058937 ; rbcd = 1.5239470129
90 td = 0.893430955 ; rd = 1.0888507586
91 te = 0.8743096978 ; re = 1.5494187256
92 tfh = 0.8424427652 ; rfh = 1.0983010317
93 tfghi = 0.8327695761 ; rfghi = 1.3316554732
94 tj = 0.7889001341 ; rj = 1.0837577691
95 
96 WHERE (pu_win <= 1.42) !from 3 building BLD, TOUR and MI-2005
97  !ZONE 1
98  WHERE (pshgc>=0.45)
99  zfac_tran = te
100  zfac_alb = re
101  END WHERE
102  !ZONE 2
103  WHERE (pshgc<0.45 .AND. pshgc>0.35)
104  zfac_tran = tj+(pshgc-0.35)*(te-tj)/(0.45-0.35)
105  zfac_alb = rj+(pshgc-0.35)*(re-rj)/(0.45-0.35)
106  END WHERE
107  !ZONE 3
108  WHERE(pshgc<=0.35)
109  zfac_tran = tj
110  zfac_alb = rj
111  END WHERE
112 END WHERE
113 
114 
115 WHERE (pu_win>1.42 .AND. pu_win<1.70)
116  !ZONE 4
117  WHERE (pshgc>=0.55)
118  zfac_tran = te
119  zfac_alb = re
120  END WHERE
121  !ZONE 5
122  WHERE (pshgc>0.5 .AND. pshgc<0.55)
123  zfac_tran = te+(pu_win-1.42)*((tfghi+(pshgc-0.5)*(te-tfghi)/(0.55-0.50))-te)/(1.70-1.42)
124  zfac_alb = re+(pu_win-1.42)*((rfghi+(pshgc-0.5)*(re-rfghi)/(0.55-0.50))-re)/(1.70-1.42)
125  END WHERE
126  !ZONE 6
127  WHERE (pshgc>=0.45 .AND. pshgc<=0.5)
128  zfac_tran = te+(pu_win-1.42)*(tfghi-te)/(1.70-1.42)
129  zfac_alb = re+(pu_win-1.42)*(rfghi-re)/(1.70-1.42)
130  END WHERE
131  !ZONE 7
132  WHERE (pshgc>0.35 .AND. pshgc<0.45)
133  zfac_tran = (tj+(pshgc-0.35)*(te-tj)/(0.45-0.35))+(pu_win-1.42)*(tfghi-(tj+(pshgc-0.35)*(te-tj)/(0.45-0.35)))/(1.70-1.42)
134 
135  zfac_alb = (rj+(pshgc-0.35)*(re-rj)/(0.45-0.35))+(pu_win-1.42)*(rfghi-(rj+(pshgc-0.35)*(re-rj)/(0.45-0.35)))/(1.70-1.42)
136  END WHERE
137  !ZONE 8
138  WHERE (pshgc>=0.30 .AND. pshgc<=0.35)
139  zfac_tran = tj+(pu_win-1.42)*(tfghi-tj)/(1.70-1.42)
140  zfac_alb = rj+(pu_win-1.42)*(rfghi-rj)/(1.70-1.42)
141  END WHERE
142  !ZONE 9
143  WHERE (pshgc>0.25 .AND. pshgc<0.35)
144  zfac_tran = tj+(pu_win-1.42)*((tfh+(pshgc-0.25)*(tj-tfh)/(0.30-0.25))-tj)/(1.70-1.42)
145  zfac_alb = rj+(pu_win-1.42)*((rfh+(pshgc-0.25)*(rj-rfh)/(0.30-0.25))-rj)/(1.70-1.42)
146  END WHERE
147  !ZONE 10
148  WHERE (pshgc<=0.25)
149  zfac_tran = tj+(pu_win-1.42)*(tfh-tj)/(1.70-1.42)
150  zfac_alb = rj+(pu_win-1.42)*(rfh-rj)/(1.70-1.42)
151  END WHERE
152 
153 
154 END WHERE
155 
156 
157 WHERE (pu_win>=1.70 .AND. pu_win<=3.41)
158  !ZONE 11
159  WHERE (pshgc>=0.55)
160  zfac_tran = te
161  zfac_alb = re
162  END WHERE
163  !ZONE 12
164  WHERE (pshgc > 0.5 .AND. pshgc<0.55)
165  zfac_tran = tfghi+(pshgc-0.50)*(te-tfghi)/(0.55-0.50)
166  zfac_alb = rfghi+(pshgc-0.50)*(re-rfghi)/(0.55-0.50)
167  END WHERE
168  !ZONE 13
169  WHERE (pshgc>=0.30 .AND. pshgc<=0.50)
170  zfac_tran = tfghi
171  zfac_alb = rfghi
172  END WHERE
173 
174  !ZONE 14
175  WHERE (pshgc > 0.25 .AND. pshgc<0.30)
176  zfac_tran = tfh+(pshgc-0.25)*(tfghi-tfh)/(0.30-0.25)
177  zfac_alb = rfghi+(pshgc-0.25)*(rfghi-rfh)/(0.30-0.25)
178  END WHERE
179  !ZONE 15
180  WHERE (pshgc<=0.25)
181  zfac_tran = tfh
182  zfac_alb = rfh
183  END WHERE
184 
185 END WHERE
186 
187 WHERE (pu_win>3.41 .AND. pu_win<4.54)
188  !ZONE 16
189  WHERE (pshgc>=0.65)
190  zfac_tran = te+(pu_win-3.41)*(ta-te)/(4.54-3.41)
191  zfac_alb = re+(pu_win-3.41)*(ra-re)/(4.54-3.41)
192  END WHERE
193  !ZONE 17
194  WHERE (pshgc>0.60 .AND. pshgc<0.65)
195  zfac_tran = te+(pu_win-3.41)*((tbcd+(pshgc-0.60)*(ta-tbcd)/(0.65-0.60))-te)/(4.54-3.41)
196  zfac_alb = re+(pu_win-3.41)*((rbcd+(pshgc-0.60)*(ra-rbcd)/(0.65-0.60))-re)/(4.54-3.41)
197  END WHERE
198  !ZONE 18
199  WHERE (pshgc>=0.55 .AND. pshgc<=0.60)
200  zfac_tran = te+(pu_win-3.41)*(tbcd-te)/(4.54-3.41)
201  zfac_alb = re+(pu_win-3.41)*(rbcd-re)/(4.54-3.41)
202  END WHERE
203  !ZONE 19
204  WHERE (pshgc>0.50 .AND. pshgc<0.55)
205  zfac_tran = (tfghi+(pshgc-0.50)*(te-tfghi)/(0.55-0.50)) + &
206  (pu_win-3.41)*(tbcd-(tfghi+(pshgc-0.50)*(te-tfghi)/(0.55-0.50)))/(4.54-3.41)
207 
208  zfac_alb = (rfghi+(pshgc-0.50)*(re-rfghi)/(0.55-0.50)) + &
209  (pu_win-3.41)*(rbcd-(rfghi+(pshgc-0.50)*(re-rfghi)/(0.55-0.50)))/(4.54-3.41)
210  END WHERE
211  !ZONE 20
212  WHERE (pshgc>=0.45 .AND. pshgc<=0.50)
213  zfac_tran = tfghi+(pu_win-3.41)*(tbcd-tfghi)/(4.54-3.41)
214  zfac_alb = rfghi+(pu_win-3.41)*(rbcd-rfghi)/(4.54-3.41)
215  END WHERE
216  !ZONE 21
217  WHERE (pshgc>0.30 .AND. pshgc<0.45)
218  zfac_tran = tfghi+(pu_win-3.41)*((ta+(pshgc-0.30)*(tbcd-ta)/(0.45-0.30))-tfghi)/(4.54-3.41)
219  zfac_alb = rfghi+(pu_win-3.41)*((ra+(pshgc-0.30)*(rbcd-ra)/(0.45-0.30))-rfghi)/(4.54-3.41)
220  END WHERE
221  !ZONE 22
222  WHERE (pshgc>0.25 .AND. pshgc<0.30)
223  zfac_tran = (tfh+(pshgc-0.25)*(tfghi-tfh)/(0.30-0.25)) + &
224  (pu_win-3.41)*(td-(tfh+(pshgc-0.30)*(tfghi-tfh)/(0.30-0.25)))/(4.54-3.41)
225  zfac_alb = (rfh+(pshgc-0.25)*(rfghi-rfh)/(0.30-0.25)) + &
226  (pu_win-3.41)*(rd-(rfh+(pshgc-0.30)*(rfghi-rfh)/(0.30-0.25)))/(4.54-3.41)
227  END WHERE
228  !ZONE 23
229  WHERE (pshgc<=0.25)
230  zfac_tran = tfh+(pu_win-3.41)*(td-tfh)/(4.54-3.41)
231  zfac_alb = rfh+(pu_win-3.41)*(rd-rfh)/(4.54-3.41)
232  END WHERE
233 
234 END WHERE
235 
236 
237 WHERE (pu_win>=4.54)
238  !ZONE 24
239  WHERE (pshgc>=0.65)
240  zfac_tran = ta
241  zfac_alb = ra
242  END WHERE
243  !ZONE 25
244  WHERE (pshgc >= 0.60 .AND. pshgc<=0.65)
245  zfac_tran = tbcd+(pshgc-0.60)*(ta-tbcd)/(0.65-0.60)
246  zfac_alb = rbcd+(pshgc-0.60)*(ra-rbcd)/(0.65-0.60)
247  END WHERE
248  !ZONE 26
249  WHERE (pshgc>=0.45 .AND. pshgc<=0.60)
250  zfac_tran = tbcd
251  zfac_alb = rbcd
252  END WHERE
253  !ZONE 27
254  WHERE (pshgc >= 0.30 .AND. pshgc<=0.45)
255  zfac_tran = td+(pshgc-0.30)*(tbcd-td)/(0.45-0.30)
256  zfac_alb = rd+(pshgc-0.30)*(rbcd-rd)/(0.45-0.30)
257  END WHERE
258  !ZONE 28
259  WHERE (pshgc<=0.30)
260  zfac_tran = td
261  zfac_alb = rd
262  END WHERE
263 
264 
265 END WHERE
266 
267 !* A. Determine glass-to-glass U-factor
268 ! ---------------------------------
269 !
270 IF (lhook) CALL dr_hook('WINDOW_DATA',0,zhook_handle)
271 !
272 WHERE (pu_win(:) < 5.85)
273  zr_iw(:) = 1. / (0.359073*log(pu_win(:)) + 6.949915)
274 ELSEWHERE
275  zr_iw(:) = 1. / (1.788041* pu_win(:) - 2.886625)
276 END WHERE
277 !
278 zr_ow(:) = 1. / (0.025342*pu_win(:) + 29.163853)
279 !
280 pugg_win(:) = 1./(1./pu_win(:) - zr_iw(:) - zr_ow(:))
281 !
282 !* B. Determine layer solar transmittance
283 ! -----------------------------------
284 !
285 WHERE (pu_win(:) > 4.5)
286  WHERE (pshgc(:) < 0.7206)
287  ztran_win_norm(:) = 0.939998 * pshgc(:)**2 + 0.20332 * pshgc(:)
288  ELSE WHERE
289  ztran_win_norm(:) = 1.30415 * pshgc(:) - 0.30515
290  END WHERE
291 END WHERE
292 
293 WHERE (pu_win(:) < 3.4)
294  WHERE (pshgc(:) <= 0.15)
295  ztran_win_norm(:) = 0.41040 * pshgc(:)
296  ELSE WHERE
297  ztran_win_norm(:) = 0.085775 * pshgc(:)**2 + 0.963954 * pshgc(:) - 0.084958
298  END WHERE
299 END WHERE
300 
301 WHERE (pu_win(:) >= 3.4 .AND. pu_win(:) <=4.5)
302  WHERE(pshgc(:) <= 0.15)
303  ztran_win_norm(:) = 0.5* (0.939998 * pshgc(:)**2 + (0.20332+0.41040) * pshgc(:))
304  ELSE WHERE
305  WHERE(pshgc(:) > 0.15 .AND. pshgc(:) < 0.7206)
306  ztran_win_norm(:) = 0.5 * ((0.939998+0.085775) * pshgc(:)**2 + (0.20332 + 0.963954) * pshgc(:) - 0.084958)
307  ELSE WHERE
308  ztran_win_norm(:) = 0.5*(0.085775 * pshgc(:)**2 + (0.963954+1.30415) * pshgc(:) - (0.084958+0.30515))
309  END WHERE
310  END WHERE
311 END WHERE
312 !
313 !
314 !* C. Determine layer solar reflectance
315 ! ---------------------------------
316 !
317 WHERE (pu_win(:) > 4.5)
318  zr_is(:) = 1. / ( 29.436546*(pshgc(:)-ztran_win_norm(:))**3 &
319  - 21.943415*(pshgc(:)-ztran_win_norm(:))**2 &
320  + 9.945872 *(pshgc(:)-ztran_win_norm(:)) + 7.426151 )
321 !
322  zr_os(:) = 1./ ( 2.225824*(pshgc(:)-ztran_win_norm(:)) + 20.57708 )
323 ELSE WHERE
324  WHERE(pu_win(:) >= 3.4)
325  zr_is(:) = 0.5 * ( &
326  1. / ( 29.436546*(pshgc(:)-ztran_win_norm(:))**3 &
327  - 21.943415*(pshgc(:)-ztran_win_norm(:))**2 &
328  + 9.945872 *(pshgc(:)-ztran_win_norm(:)) + 7.426151 ) &
329  + 1./ (199.8208128*(pshgc(:)-ztran_win_norm(:))**3 &
330  - 90.639733*(pshgc(:)-ztran_win_norm(:))**2 &
331  + 19.737055*(pshgc(:)-ztran_win_norm(:)) + 6.766575) )
332 !
333  zr_os(:) = 0.5 * ( &
334  1./ ( 2.225824*(pshgc(:)-ztran_win_norm(:)) + 20.57708 ) &
335  + 1./ ( 5.763355*(pshgc(:)-ztran_win_norm(:)) + 20.541528 ) )
336 !
337  ELSE WHERE
338  zr_is(:) = 1./ (199.8208128*(pshgc(:)-ztran_win_norm(:))**3 &
339  - 90.639733*(pshgc(:)-ztran_win_norm(:))**2 &
340  + 19.737055*(pshgc(:)-ztran_win_norm(:)) + 6.766575)
341 !
342  zr_os(:) = 1./ ( 5.763355*(pshgc(:)-ztran_win_norm(:)) + 20.541528 )
343  END WHERE
344 !
345 END WHERE
346 !
347 zfrac(:) = (zr_os(:) + 0.5*(1./pugg_win(:))) / &
348  (zr_os(:) + 1./pugg_win(:) + zr_is(:))
349 !
350 zalb_win_norm(:) = 1. - ztran_win_norm(:) - (pshgc(:)-ztran_win_norm(:)) / zfrac(:)
351 !
352 !* D. Determine layer solar absortance
353 ! --------------------------------
354 !
355 
356 ptran_win(:) = ztran_win_norm(:) * zfac_tran
357 palb_win(:) = zalb_win_norm(:) * zfac_alb
358 !
359 pabs_win(:) = 1. - palb_win(:) - ptran_win(:)
360 !
361 IF (lhook) CALL dr_hook('WINDOW_DATA',1,zhook_handle)
362 !
363 END SUBROUTINE window_data
subroutine window_data(KI, PSHGC, PU_WIN, PALB_WIN, PABS_WIN, PUGG_WIN, PTRAN_WIN)
Definition: window_data.F90:6