SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
urban_lw_coef.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 urban_lw_coef(PGR, PBLD, PLW_RAD, &
7  pemis_r, psvf_r, pemis_w, psvf_w, pemis_g, &
8  proad, pgarden, pesnow_r, &
9  pts_sr, pts_w_a, pts_w_b, pts_r, pts_g, pts_win, &
10  plw_wa_to_wb, plw_wa_to_r, plw_wb_to_r, &
11  plw_wa_to_nr,plw_wb_to_nr, &
12  plw_wa_to_g, plw_wb_to_g, &
13  plw_wa_to_win, plw_wb_to_win, &
14  plw_r_to_wa, plw_r_to_wb, plw_r_to_win, &
15  plw_g_to_wa, plw_g_to_wb, plw_g_to_win, &
16  plw_s_to_wa, plw_s_to_wb, plw_s_to_r, &
17  plw_s_to_nr, plw_s_to_g, plw_s_to_win, &
18  plw_win_to_wa, plw_win_to_wb, plw_win_to_r, &
19  plw_win_to_nr, plw_win_to_g, &
20  plw_nr_to_wa, plw_nr_to_wb, plw_nr_to_win )
21 ! ##########################################################################
22 !
23 !!**** *URBAN_LW_COEF*
24 !!
25 !! PURPOSE
26 !! -------
27 !
28 ! Computes the coefficients before each of the temperatures in the
29 ! radiative budgets
30 !
31 !
32 !!** METHOD
33 ! ------
34 !
35 !
36 !
37 !
38 !
39 !! EXTERNAL
40 !! --------
41 !!
42 !!
43 !! IMPLICIT ARGUMENTS
44 !! ------------------
45 !!
46 !! MODD_CST
47 !!
48 !!
49 !! REFERENCE
50 !! ---------
51 !!
52 !!
53 !! AUTHOR
54 !! ------
55 !!
56 !! V. Masson * Meteo-France *
57 !!
58 !! MODIFICATIONS
59 !! -------------
60 !! Original 08/09/98
61 !-------------------------------------------------------------------------------
62 !
63 !* 0. DECLARATIONS
64 ! ------------
65 !
66 USE modd_csts,ONLY : xstefan
67 USE modd_surf_par,ONLY : xundef
68 !
69 USE yomhook ,ONLY : lhook, dr_hook
70 USE parkind1 ,ONLY : jprb
71 !
72 IMPLICIT NONE
73 !
74 !* 0.1 declarations of arguments
75 !
76 !
77 !
78 REAL, DIMENSION(:), INTENT(IN) :: pgr ! glazing ratio
79 REAL, DIMENSION(:), INTENT(IN) :: pbld ! building density
80 REAL, DIMENSION(:), INTENT(IN) :: plw_rad ! incoming LW radiation
81 REAL, DIMENSION(:), INTENT(IN) :: pemis_r ! road emissivity
82 REAL, DIMENSION(:), INTENT(IN) :: psvf_r ! road sky view factor
83 REAL, DIMENSION(:), INTENT(IN) :: pemis_w ! wall emissivity
84 REAL, DIMENSION(:), INTENT(IN) :: psvf_w ! wall sky view factor
85 REAL, DIMENSION(:), INTENT(IN) :: pemis_g ! GARDEN area emissivity
86 REAL, DIMENSION(:), INTENT(IN) :: proad ! road fraction
87 REAL, DIMENSION(:), INTENT(IN) :: pgarden ! GARDEN area fraction
88 REAL, DIMENSION(:), INTENT(IN) :: pesnow_r ! road snow emissivity
89 !
90 REAL, DIMENSION(:), INTENT(IN) :: pts_w_a ! wall A surface temperature
91 REAL, DIMENSION(:), INTENT(IN) :: pts_w_b ! wall B surface temperature
92 REAL, DIMENSION(:), INTENT(IN) :: pts_r ! road surface tempeature
93 REAL, DIMENSION(:), INTENT(IN) :: pts_g ! garden surface temperature
94 REAL, DIMENSION(:), INTENT(IN) :: pts_win ! window surface temperature
95 REAL, DIMENSION(:), INTENT(IN) :: pts_sr ! snow surface temperature
96 !
97 REAL, DIMENSION(:), INTENT(OUT) :: plw_wa_to_wb! L.W. interactions wall->opposite wall
98 REAL, DIMENSION(:), INTENT(OUT) :: plw_wa_to_r ! L.W. interactions wall->road for road balance
99 REAL, DIMENSION(:), INTENT(OUT) :: plw_wb_to_r ! L.W. interactions wall->road for road balance
100 REAL, DIMENSION(:), INTENT(OUT) :: plw_wa_to_nr ! L.W. interactions wall->snow for snow balance
101 REAL, DIMENSION(:), INTENT(OUT) :: plw_wb_to_nr ! L.W. interactions wall->snow for snow balance
102 REAL, DIMENSION(:), INTENT(OUT) :: plw_wa_to_g ! L.W. interactions wall->GARDEN areas for garden balance
103 REAL, DIMENSION(:), INTENT(OUT) :: plw_wb_to_g ! L.W. interactions wall->GARDEN areas for garden balance
104 REAL, DIMENSION(:), INTENT(OUT) :: plw_wa_to_win! L.W. interactions wall->win for window balance
105 REAL, DIMENSION(:), INTENT(OUT) :: plw_wb_to_win! L.W. interactions wall->win for window balance
106 !
107 REAL, DIMENSION(:), INTENT(OUT) :: plw_r_to_wa ! L.W. interactions road->wall for wall balance
108 REAL, DIMENSION(:), INTENT(OUT) :: plw_r_to_wb ! L.W. interactions road->wall for wall balance
109 REAL, DIMENSION(:), INTENT(OUT) :: plw_r_to_win ! L.W. interactions road->win for win balance
110 !
111 REAL, DIMENSION(:), INTENT(OUT) :: plw_g_to_wa ! L.W. interactions GARDEN areas->wall for wall balance
112 REAL, DIMENSION(:), INTENT(OUT) :: plw_g_to_wb ! L.W. interactions GARDEN areas->wall for wall balance
113 REAL, DIMENSION(:), INTENT(OUT) :: plw_g_to_win ! L.W. interactions GARDEN areas->road for window balance
114 !
115 REAL, DIMENSION(:), INTENT(OUT) :: plw_s_to_wa ! L.W. interactions sky->wall for wall balance
116 REAL, DIMENSION(:), INTENT(OUT) :: plw_s_to_wb ! L.W. interactions sky->wall for wall balance
117 REAL, DIMENSION(:), INTENT(OUT) :: plw_s_to_r ! L.W. interactions sky->road for raod balance
118 REAL, DIMENSION(:), INTENT(OUT) :: plw_s_to_nr ! L.W. interactions sky->snow for snow balance
119 REAL, DIMENSION(:), INTENT(OUT) :: plw_s_to_g ! L.W. interactions sky->GARDEN areas for garden balance
120 REAL, DIMENSION(:), INTENT(OUT) :: plw_s_to_win ! L.W. interactions sky->win for window balance
121 !
122 REAL, DIMENSION(:), INTENT(OUT) :: plw_win_to_wa ! L.W. interactions win->wall for wall balance
123 REAL, DIMENSION(:), INTENT(OUT) :: plw_win_to_wb ! L.W. interactions win->wall for wall balance
124 REAL, DIMENSION(:), INTENT(OUT) :: plw_win_to_r ! L.W. interactions win->road for road balance
125 REAL, DIMENSION(:), INTENT(OUT) :: plw_win_to_nr ! L.W. interactions win->GARDEN areas for snow balance
126 REAL, DIMENSION(:), INTENT(OUT) :: plw_win_to_g ! L.W. interactions win->GARDEN areas for garden balance
127 !
128 REAL, DIMENSION(:), INTENT(OUT) :: plw_nr_to_wa! L.W. interactions snow(road)->wall for wall balance
129 REAL, DIMENSION(:), INTENT(OUT) :: plw_nr_to_wb! L.W. interactions snow(road)->wall for wall balance
130 REAL, DIMENSION(:), INTENT(OUT) :: plw_nr_to_win ! L.W. interactions snow(road)->WIN areas for window balance
131 !
132 !* 0.2 declarations of local variables
133 !
134 REAL, DIMENSION(SIZE(PBLD)) :: zt_s ! sky temperature
135 !
136 REAL, DIMENSION(SIZE(PBLD)) :: zemis_win
137 REAL, DIMENSION(SIZE(PBLD)) :: zf_w_w
138 REAL, DIMENSION(SIZE(PBLD)) :: zf_r_w
139 REAL, DIMENSION(SIZE(PBLD)) :: zf_r_win
140 REAL, DIMENSION(SIZE(PBLD)) :: zf_w_r
141 REAL, DIMENSION(SIZE(PBLD)) :: zf_w_g
142 REAL, DIMENSION(SIZE(PBLD)) :: zf_w_win
143 REAL, DIMENSION(SIZE(PBLD)) :: zf_w_nr
144 REAL, DIMENSION(SIZE(PBLD)) :: zf_win_w
145 REAL, DIMENSION(SIZE(PBLD)) :: zf_win_r
146 REAL, DIMENSION(SIZE(PBLD)) :: zf_win_g
147 REAL, DIMENSION(SIZE(PBLD)) :: zf_win_nr
148 REAL, DIMENSION(SIZE(PBLD)) :: zf_g_w
149 REAL, DIMENSION(SIZE(PBLD)) :: zf_g_win
150 !
151 REAL :: ze1, ze2, zf, zt1, zt2, zlw
152 zlw(ze1,ze2,zf,zt1,zt2) = 4.*xstefan*ze1*ze2*zf*((zt1+zt2)/2.)**3
153 !
154 INTEGER :: jj
155 REAL(KIND=JPRB) :: zhook_handle
156 !-------------------------------------------------------------------------------
157 IF (lhook) CALL dr_hook('URBAN_LW_COEF',0,zhook_handle)
158 !
159 zt_s(:) = (plw_rad(:)/xstefan)**0.25
160 !
161 DO jj=1,SIZE(proad)
162  !
163  zemis_win(jj) = 0.84 !from Energy Plus Engineering Reference, p219
164  ! see http://apps1.eere.energy.gov/buildings/energyplus/
165  !
166  zf_w_r(jj) = psvf_w(jj) * (proad(jj) /(1.-pbld(jj)))
167  zf_w_g(jj) = psvf_w(jj) * (pgarden(jj)/(1.-pbld(jj)))
168  zf_w_nr(jj) = psvf_w(jj)
169  !
170  zf_win_r(jj) = zf_w_r(jj)
171  zf_win_g(jj) = zf_w_g(jj)
172  zf_win_nr(jj) = zf_w_nr(jj)
173  !
174  zf_r_w(jj) = (1 - psvf_r(jj))*(1.-pgr(jj)) * 0.5
175  zf_r_win(jj) = (1 - psvf_r(jj))*pgr(jj)
176  !
177  zf_g_w(jj) = zf_r_w(jj)
178  zf_g_win(jj) = zf_r_win(jj)
179  !
180  zf_win_w(jj) = (1.-2.*psvf_w(jj))*(1.-pgr(jj))
181  zf_w_w(jj) = (1.-2.*psvf_w(jj))*(1.-pgr(jj))
182  zf_w_win(jj) = (1.-2.*psvf_w(jj))*pgr(jj)
183  !
184  !
185  plw_wa_to_wb(jj)=zlw(pemis_w(jj),pemis_w(jj),zf_w_w(jj),pts_w_a(jj),pts_w_b(jj))
186  !
187  plw_wa_to_r(jj) = zlw(pemis_w(jj),pemis_r(jj),zf_r_w(jj),pts_w_a(jj),pts_r(jj))
188  plw_wb_to_r(jj) = zlw(pemis_w(jj),pemis_r(jj),zf_r_w(jj),pts_w_b(jj),pts_r(jj))
189  plw_r_to_wa(jj) = zlw(pemis_r(jj),pemis_w(jj),zf_w_r(jj),pts_r(jj),pts_w_a(jj))
190  plw_r_to_wb(jj) = zlw(pemis_r(jj),pemis_w(jj),zf_w_r(jj),pts_r(jj),pts_w_b(jj))
191  !
192  plw_wa_to_g(jj) = zlw(pemis_w(jj),pemis_g(jj),zf_g_w(jj),pts_w_a(jj),pts_g(jj))
193  plw_wb_to_g(jj) = zlw(pemis_w(jj),pemis_g(jj),zf_g_w(jj),pts_w_b(jj),pts_g(jj))
194  plw_g_to_wa(jj) = zlw(pemis_g(jj),pemis_w(jj),zf_w_g(jj),pts_g(jj),pts_w_a(jj))
195  plw_g_to_wb(jj) = zlw(pemis_g(jj),pemis_w(jj),zf_w_g(jj),pts_g(jj),pts_w_b(jj))
196  !
197  !
198  IF (pts_sr(jj) .EQ. xundef) THEN
199  plw_wa_to_nr(jj) = 0.
200  plw_wb_to_nr(jj) = 0.
201  plw_nr_to_wa(jj) = 0.
202  plw_nr_to_wb(jj) = 0.
203  !
204  plw_win_to_nr(jj) = 0.
205  plw_nr_to_win(jj) = 0
206  !
207  plw_s_to_nr(jj) = 0.
208  ELSE
209  plw_wa_to_nr(jj) = zlw(pemis_w(jj),pesnow_r(jj),zf_r_w(jj),pts_w_a(jj),pts_sr(jj))
210  plw_wb_to_nr(jj) = zlw(pemis_w(jj),pesnow_r(jj),zf_r_w(jj),pts_w_b(jj),pts_sr(jj))
211  plw_nr_to_wa(jj) = zlw(pesnow_r(jj),pemis_w(jj),zf_w_nr(jj),pts_sr(jj),pts_w_a(jj))
212  plw_nr_to_wb(jj) = zlw(pesnow_r(jj),pemis_w(jj),zf_w_nr(jj),pts_sr(jj),pts_w_b(jj))
213  !
214  plw_win_to_nr(jj)= zlw(zemis_win(jj),pesnow_r(jj),zf_r_win(jj),pts_win(jj),pts_sr(jj))
215  plw_nr_to_win(jj)= zlw(pesnow_r(jj),zemis_win(jj),zf_win_nr(jj),pts_sr(jj),pts_win(jj))
216  !
217  plw_s_to_nr(jj) = zlw(1.,pesnow_r(jj),psvf_r(jj),zt_s(jj),pts_sr(jj))
218  ENDIF
219  !
220  plw_win_to_r(jj)= zlw(zemis_win(jj),pemis_r(jj),zf_r_win(jj),pts_win(jj),pts_r(jj))
221  plw_r_to_win(jj)= zlw(pemis_r(jj),zemis_win(jj),zf_win_r(jj),pts_r(jj),pts_win(jj))
222  !
223  plw_win_to_g(jj)= zlw(zemis_win(jj),pemis_g(jj),zf_g_win(jj),pts_win(jj),pts_g(jj))
224  plw_g_to_win(jj)= zlw(pemis_g(jj),zemis_win(jj),zf_win_g(jj),pts_g(jj),pts_win(jj))
225  !
226  plw_win_to_wa(jj) = zlw(zemis_win(jj),pemis_w(jj),zf_w_win(jj),pts_win(jj),pts_w_a(jj))
227  plw_win_to_wb(jj) = zlw(zemis_win(jj),pemis_w(jj),zf_w_win(jj),pts_win(jj),pts_w_b(jj))
228  plw_wa_to_win(jj) = zlw(pemis_w(jj),zemis_win(jj),zf_win_w(jj),pts_w_a(jj),pts_win(jj))
229  plw_wb_to_win(jj) = zlw(pemis_w(jj),zemis_win(jj),zf_win_w(jj),pts_w_b(jj),pts_win(jj))
230  !
231  plw_s_to_win(jj) = zlw(1.,zemis_win(jj),psvf_w(jj),zt_s(jj),pts_win(jj))
232  !
233  plw_s_to_wa(jj) = zlw(1.,pemis_w(jj),psvf_w(jj),zt_s(jj),pts_w_a(jj))
234  plw_s_to_wb(jj) = zlw(1.,pemis_w(jj),psvf_w(jj),zt_s(jj),pts_w_b(jj))
235  !
236  plw_s_to_g(jj) = zlw(1.,pemis_g(jj),psvf_r(jj),zt_s(jj),pts_g(jj))
237  plw_s_to_r(jj) = zlw(1.,pemis_r(jj),psvf_r(jj),zt_s(jj),pts_r(jj))
238  plw_s_to_nr(jj) = zlw(1.,pesnow_r(jj),psvf_r(jj),zt_s(jj),pts_sr(jj))
239  !
240 ENDDO
241 !-------------------------------------------------------------------------------
242 IF (lhook) CALL dr_hook('URBAN_LW_COEF',1,zhook_handle)
243 !
244 END SUBROUTINE urban_lw_coef
245 
subroutine urban_lw_coef(PGR, PBLD, PLW_RAD, PEMIS_R, PSVF_R, PEMIS_W, PSVF_W, PEMIS_G, PROAD, PGARDEN, PESNOW_R, PTS_SR, PTS_W_A, PTS_W_B, PTS_R, PTS_G, PTS_WIN, PLW_WA_TO_WB, PLW_WA_TO_R, PLW_WB_TO_R, PLW_WA_TO_NR, PLW_WB_TO_NR, PLW_WA_TO_G, PLW_WB_TO_G, PLW_WA_TO_WIN, PLW_WB_TO_WIN, PLW_R_TO_WA, PLW_R_TO_WB, PLW_R_TO_WIN, PLW_G_TO_WA, PLW_G_TO_WB, PLW_G_TO_WIN, PLW_S_TO_WA, PLW_S_TO_WB, PLW_S_TO_R, PLW_S_TO_NR, PLW_S_TO_G, PLW_S_TO_WIN, PLW_WIN_TO_WA, PLW_WIN_TO_WB, PLW_WIN_TO_R, PLW_WIN_TO_NR, PLW_WIN_TO_G, PLW_NR_TO_WA, PLW_NR_TO_WB, PLW_NR_TO_WIN)