Changeset 4747 for palm/trunk
- Timestamp:
- Oct 16, 2020 9:19:57 AM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/urban_surface_mod.f90
r4738 r4747 22 22 ! Current revisions: 23 23 ! ----------------- 24 ! 25 ! 24 ! 25 ! 26 26 ! Former revisions: 27 27 ! ----------------- 28 28 ! $Id$ 29 ! Fix window absorptivity calculation (correctly account for 2-sided reflection) 30 ! 31 ! 4738 2020-10-14 08:05:07Z maronga 29 32 ! Updating building data base (on behalf of Sascha Rissmann) 30 33 ! … … 5152 5155 INTEGER(iwp) :: i,j,k,kw, m !< running indices 5153 5156 5154 REAL(wp) :: win_absorp !< absorption coefficient from transmissivity 5157 REAL(wp) :: win_absorp !< absorption coefficient from transmissivity 5158 REAL(wp) :: win_nonrefl_1side !< non-reflected fraction after outer glass boundary 5155 5159 5156 5160 REAL(wp), DIMENSION(nzb_wall:nzt_wall) :: wall_mod !< … … 5257 5261 !-- During spinup the tempeature inside window layers is not calculated to make larger timesteps possible 5258 5262 IF ( .NOT. during_spinup ) THEN 5259 win_absorp = -log( surf%transmissivity(m) ) / surf%zw_window(nzt_wall,m) 5263 ! 5264 !-- Reflectivity in glass windows is considered as equal on frontal and rear side of the 5265 !-- glass, which together make total reflectivity (albedo for win fraction). 5266 win_nonrefl_1side = 1.0 - ( surf%albedo(m,ind_wat_win) + surf%transmissivity(m) & 5267 + 1.0_wp & 5268 - sqrt( ( surf%albedo(m,ind_wat_win) & 5269 + surf%transmissivity(m) + 1.0_wp ) ** 2 & 5270 - 4 * surf%albedo(m,ind_wat_win) ) ) / 2.0_wp 5271 ! 5272 !-- Absorption coefficient is calculated using zw from internal tranmissivity, which only 5273 !-- considers absorption without the effects of reflection. 5274 win_absorp = -log( ( surf%transmissivity(m) + surf%albedo(m,ind_wat_win) - 1.0_wp & 5275 + win_nonrefl_1side ) / win_nonrefl_1side ) & 5276 / surf%zw_window(nzt_wall,m) 5260 5277 ! 5261 5278 !-- Prognostic equation for ground/roof window temperature t_window takes absorption … … 5267 5284 * surf%ddz_window(nzb_wall+1,m) & 5268 5285 + surf%wghf_eb_window(m) & 5269 + surf%rad_sw_in(m) 5286 + surf%rad_sw_in(m) * win_nonrefl_1side & 5270 5287 * ( 1.0_wp - exp( -win_absorp & 5271 * surf%zw_window(nzb_wall,m) ) ) - surf%rad_sw_out(m)&5288 * surf%zw_window(nzb_wall,m) ) ) & 5272 5289 ) * surf%ddz_window_stag(nzb_wall,m) 5273 5290 … … 5288 5305 * ( t_window%val(kw,m) - t_window%val(kw-1,m) ) & 5289 5306 * surf%ddz_window(kw,m) & 5290 + surf%rad_sw_in(m) 5307 + surf%rad_sw_in(m) * win_nonrefl_1side & 5291 5308 * ( exp( -win_absorp * surf%zw_window(kw-1,m) ) & 5292 - exp(-win_absorp * surf%zw_window(kw,m) ) & 5293 ) - surf%rad_sw_out(m) & 5309 - exp( -win_absorp * surf%zw_window(kw, m) ) ) & 5294 5310 ) * surf%ddz_window_stag(kw,m) 5295 5311 … … 5301 5317 * surf%ddz_window(nzt_wall,m) & 5302 5318 + surf%iwghf_eb_window(m) & 5303 + surf%rad_sw_in(m) & 5304 * ( exp( -win_absorp & 5305 * surf%zw_window(nzt_wall-1,m) ) & 5306 - exp( -win_absorp & 5307 * surf%zw_window(nzt_wall,m) ) & 5308 ) - surf%rad_sw_out(m) & 5319 + surf%rad_sw_in(m) * win_nonrefl_1side & 5320 * ( exp( -win_absorp * surf%zw_window(nzt_wall-1,m) ) & 5321 - exp( -win_absorp * surf%zw_window(nzt_wall, m) ) ) & 5309 5322 ) * surf%ddz_window_stag(nzt_wall,m) 5310 5323
Note: See TracChangeset
for help on using the changeset viewer.