Changeset 4747 for palm/trunk


Ignore:
Timestamp:
Oct 16, 2020 9:19:57 AM (4 years ago)
Author:
pavelkrc
Message:

Fix window absorptivity calculation (correctly account for 2-sided reflection)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/urban_surface_mod.f90

    r4738 r4747  
    2222! Current revisions:
    2323! -----------------
    24 ! 
    25 ! 
     24!
     25!
    2626! Former revisions:
    2727! -----------------
    2828! $Id$
     29! Fix window absorptivity calculation (correctly account for 2-sided reflection)
     30!
     31! 4738 2020-10-14 08:05:07Z maronga
    2932! Updating building data base (on behalf of Sascha Rissmann)
    3033!
     
    51525155    INTEGER(iwp)  ::  i,j,k,kw, m    !< running indices
    51535156
    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
    51555159
    51565160    REAL(wp), DIMENSION(nzb_wall:nzt_wall)  ::  wall_mod        !<
     
    52575261!--    During spinup the tempeature inside window layers is not calculated to make larger timesteps possible
    52585262       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)
    52605277!
    52615278!--       Prognostic equation for ground/roof window temperature t_window takes absorption
     
    52675284                                * surf%ddz_window(nzb_wall+1,m)                                   &
    52685285                                + surf%wghf_eb_window(m)                                          &
    5269                                 + surf%rad_sw_in(m)                                               &
     5286                                + surf%rad_sw_in(m) * win_nonrefl_1side                           &
    52705287                                * ( 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) ) )                              &
    52725289                              ) * surf%ddz_window_stag(nzb_wall,m)
    52735290
     
    52885305                           * ( t_window%val(kw,m) - t_window%val(kw-1,m) )                        &
    52895306                           * surf%ddz_window(kw,m)                                                &
    5290                            + surf%rad_sw_in(m)                                                    &
     5307                           + surf%rad_sw_in(m) * win_nonrefl_1side                                &
    52915308                           * ( 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) ) )                      &
    52945310                             ) * surf%ddz_window_stag(kw,m)
    52955311
     
    53015317                                 * surf%ddz_window(nzt_wall,m)                                    &
    53025318                                 + 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) ) )          &
    53095322                                   ) * surf%ddz_window_stag(nzt_wall,m)
    53105323
Note: See TracChangeset for help on using the changeset viewer.