Ignore:
Timestamp:
Jul 30, 2020 2:54:34 PM (4 years ago)
Author:
suehring
Message:

Land-surface model: bugfix in level 3 initialization of root-area-density; Avoid double classifiation of vertical walls (at surfaces that are alo covered by buildings); Land/urban surface: bugfix in resistance calculation - avoid potential divisions by zero; init_grid: in case of ASCII topography flag grid points as terrain and building to allow application of land/urban-surface model

File:
1 edited

Legend:

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

    r4602 r4630  
    2727! -----------------
    2828! $Id$
     29! - Bugfix in resistance calculation - avoid potential divisions by zero
     30! - Minor formatting adjustment
     31!
     32! 4602 2020-07-14 14:49:45Z suehring
    2933! Add missing initialization of albedo type with values given from static input file
    3034!
     
    463467    INTEGER(iwp) ::  wall_category = 2               !< default category for wall surface over pedestrian zone
    464468
     469    REAL(wp)     ::  d_roughness_concrete            !< inverse roughness length of average concrete surface
    465470    REAL(wp)     ::  roughness_concrete = 0.001_wp   !< roughness length of average concrete surface
    466471
     
    35833588    ENDIF
    35843589!
     3590!-- Calculate constant values
     3591    d_roughness_concrete = 1.0_wp / roughness_concrete
     3592!
    35853593!-- Flag surface elements belonging to the ground floor level. Therefore, use terrain height array
    35863594!-- from file, if available. This flag is later used to control initialization of surface attributes.
     
    75397547                  q_s,                     &  !< saturation specific humidity
    75407548                  rho_lv,                  &  !< frequently used parameter for green layers
    7541                   tend                      !< tendency
     7549                  tend,                    &  !< tendency
     7550                  ueff                        !< limited near-surface wind speed - used for calculation of resistance
    75427551
    75437552
     
    80468055!--        normal component is obtained by simple linear interpolation. (An alternative would be an
    80478056!--        logarithmic interpolation.) Parameter roughness_concrete (default value = 0.001) is used
    8048 !--        to calculation of roughness relative to concrete
    8049            surf_usm_v(l)%r_a(m) = rho_cp / ( surf_usm_v(l)%z0(m) / roughness_concrete              &
    8050                                   * ( 11.8_wp + 4.2_wp                                             &
    8051                                       * SQRT( MAX( ( ( u(k,j,i) + u(k,j,i+1) ) * 0.5_wp )**2 +     &
    8052                                           ( ( v(k,j,i) + v(k,j+1,i) ) * 0.5_wp )**2 +              &
    8053                                           ( ( w(k,j,i) + w(k-1,j,i) ) * 0.5_wp )**2, 0.01_wp ) )   &
    8054                                     )  - 4.0_wp  )
     8057!--        to calculation of roughness relative to concrete. Note, wind velocity is limited
     8058!--        to avoid division by zero. The nominator can become <= 0.0 for values z0 < 3*10E-4.
     8059           ueff        = MAX ( SQRT( ( ( u(k,j,i) + u(k,j,i+1) ) * 0.5_wp )**2 +                   &
     8060                                     ( ( v(k,j,i) + v(k,j+1,i) ) * 0.5_wp )**2 +                   &
     8061                                     ( ( w(k,j,i) + w(k-1,j,i) ) * 0.5_wp )**2 ),                  &
     8062                               1.0_wp / 4.2_wp                                                     &
     8063                               * ( 4.0_wp / ( surf_usm_v(l)%z0(m) * d_roughness_concrete )         &
     8064                               - 11.8_wp ),                                                        &
     8065                               0.1_wp                                                              &
     8066                              )
     8067
     8068           surf_usm_v(l)%r_a(m) = rho_cp / ( surf_usm_v(l)%z0(m) * d_roughness_concrete            &
     8069                                  * ( 11.8_wp + 4.2_wp * ueff )  - 4.0_wp  )
    80558070!
    80568071!--        Limit aerodynamic resistance
Note: See TracChangeset for help on using the changeset viewer.