Changeset 3091


Ignore:
Timestamp:
Jun 28, 2018 4:20:35 PM (3 years ago)
Author:
suehring
Message:

Limit aerodynamic resistance at vertial building walls; check for roughness not exceeding surface-layer height

Location:
palm/trunk/SOURCE
Files:
2 edited

Legend:

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

    r3051 r3091  
    2525! -----------------
    2626! $Id$
     27! Add check for local roughness length not exceeding surface-layer height and
     28! limit roughness length where necessary.
     29!
     30! 3051 2018-05-30 17:43:55Z suehring
    2731! Bugfix in surface-element loops for pavement surfaces
    2832!
     
    44994503!
    45004504!--    Finally, make some consistency checks.
    4501 !--    Ceck for eck for illegal combination of LAI and vegetation coverage.
     4505!--    Ceck for illegal combination of LAI and vegetation coverage.
    45024506       IF ( ANY( .NOT. surf_lsm_h%pavement_surface  .AND.                      &
    45034507                 surf_lsm_h%lai == 0.0_wp  .AND.  surf_lsm_h%c_veg == 1.0_wp ) &
     
    45174521          ENDIF
    45184522       ENDDO
     4523!
     4524!--    Check if roughness length exceed surface-layer height and decrease
     4525!--    local roughness length where necessary.
     4526       DO  m = 1, surf_lsm_h%ns
     4527          IF ( surf_lsm_h%z0(m) >= surf_lsm_h%z_mo(m) )  THEN
     4528         
     4529             surf_lsm_h%z0(m) = 0.9_wp * surf_lsm_h%z_mo(m)
     4530             
     4531             WRITE( message_string, * ) 'z0 exceeds surface-layer height ' //  &
     4532                            'at horizontal natural surface and is ' //         &
     4533                            'decreased appropriately at grid point (i,j) = ',  &
     4534                            surf_lsm_h%i(m), surf_lsm_h%j(m)
     4535             CALL message( 'land_surface_model_mod', 'PA0503',                 &
     4536                            0, 0, 0, 6, 0 )
     4537          ENDIF
     4538       ENDDO
     4539       
     4540       DO  l = 0, 3
     4541          DO  m = 1, surf_lsm_v(l)%ns
     4542             IF ( surf_lsm_v(l)%z0(m) >= surf_lsm_v(l)%z_mo(m) )  THEN
     4543         
     4544                surf_lsm_v(l)%z0(m) = 0.9_wp * surf_lsm_v(l)%z_mo(m)
     4545             
     4546                WRITE( message_string, * ) 'z0 exceeds surface-layer height '//&
     4547                            'at vertical natural surface and is ' //           &
     4548                            'decreased appropriately at grid point (i,j) = ',  &
     4549                            surf_lsm_v(l)%i(m)+surf_lsm_v(l)%ioff,             &
     4550                            surf_lsm_v(l)%j(m)+surf_lsm_v(l)%joff
     4551                CALL message( 'land_surface_model_mod', 'PA0503',              &
     4552                            0, 0, 0, 6, 0 )
     4553             ENDIF
     4554          ENDDO
     4555       ENDDO     
    45194556
    45204557
  • palm/trunk/SOURCE/urban_surface_mod.f90

    r3065 r3091  
    2828! -----------------
    2929! $Id$
     30! - Limit aerodynamic resistance at vertical walls.
     31! - Add check for local roughness length not exceeding surface-layer height and
     32!   limit roughness length where necessary.
     33!
     34! 3065 2018-06-12 07:03:02Z Giersch
    3035! Unused array dxdir was removed, dz was replaced by dzu to consider vertical
    3136! grid stretching
     
    45774582            ENDIF
    45784583        ENDIF
     4584!
     4585!--    Check for consistent initialization.
     4586!--    Check if roughness length exceed surface-layer height and decrease
     4587!--    local roughness length where necessary.
     4588       DO  m = 1, surf_usm_h%ns
     4589          IF ( surf_usm_h%z0(m) >= surf_usm_h%z_mo(m) )  THEN
     4590         
     4591             surf_usm_h%z0(m) = 0.9_wp * surf_usm_h%z_mo(m)
     4592             
     4593             WRITE( message_string, * ) 'z0 exceeds surface-layer height ' //  &
     4594                            'at horizontal urban surface and is ' //           &
     4595                            'decreased appropriately at grid point (i,j) = ',  &
     4596                            surf_usm_h%i(m), surf_usm_h%j(m)
     4597             CALL message( 'urban_surface_model_mod', 'PA0503',                &
     4598                            0, 0, 0, 6, 0 )
     4599          ENDIF
     4600       ENDDO
     4601       
     4602       DO  l = 0, 3
     4603          DO  m = 1, surf_usm_v(l)%ns
     4604             IF ( surf_usm_v(l)%z0(m) >= surf_usm_v(l)%z_mo(m) )  THEN
     4605         
     4606                surf_usm_v(l)%z0(m) = 0.9_wp * surf_usm_v(l)%z_mo(m)
     4607             
     4608                WRITE( message_string, * ) 'z0 exceeds surface-layer height '//&
     4609                            'at vertical urban surface and is ' //             &
     4610                            'decreased appropriately at grid point (i,j) = ',  &
     4611                            surf_usm_v(l)%i(m)+surf_usm_v(l)%ioff,             &
     4612                            surf_usm_v(l)%j(m)+surf_usm_v(l)%joff
     4613                CALL message( 'urban_surface_model_mod', 'PA0503',             &
     4614                            0, 0, 0, 6, 0 )
     4615             ENDIF
     4616          ENDDO
     4617       ENDDO   
    45794618
    45804619!--     Intitialization of the surface and wall/ground/roof temperature
     
    74647503                              0.01_wp ) )                                      &
    74657504                           )  - 4.0_wp  )
    7466 
     7505!
     7506!--          Limit aerodynamic resistance
     7507             IF ( surf_usm_v(l)%r_a(m) < 1.0_wp )                              &
     7508                surf_usm_v(l)%r_a(m)        = 1.0_wp         
     7509                           
    74677510             f_shf         = rho_cp / surf_usm_v(l)%r_a(m)
    74687511             f_shf_window  = rho_cp / surf_usm_v(l)%r_a(m)
     
    74897532                                     lambda_surface_window * t_window_v(l)%t(nzb_wall,m)
    74907533
    7491               coef_green_1 = surf_usm_v(l)%rad_net_l(m) +                            & ! coef +1 corresponds to -lwout included in calculation of radnet_l
     7534              coef_green_1 = surf_usm_v(l)%rad_net_l(m) +                      & ! coef +1 corresponds to -lwout included in calculation of radnet_l
    74927535              ( 3.0_wp + 1.0_wp ) * surf_usm_v(l)%emissivity(ind_pav_green,m) *&
    74937536                                     sigma_sb * t_surf_green_v(l)%t(m) ** 4 +  & 
Note: See TracChangeset for help on using the changeset viewer.