Changeset 3136 for palm/trunk


Ignore:
Timestamp:
Jul 16, 2018 2:48:21 PM (6 years ago)
Author:
suehring
Message:

Limit roughness for heat and moisture in case it exceeds the model-assumed surface-layer height; Limit surface resistance to positive values.

Location:
palm/trunk/SOURCE
Files:
2 edited

Legend:

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

    r3133 r3136  
    2525! -----------------
    2626! $Id$
     27! Limit also roughness length for heat and moisture where necessary;
     28! Limit surface resistance to positive values
     29!
     30! 3133 2018-07-16 11:46:50Z maronga
    2731! Bugfix for last commit.
    2832!
    29 ! 3127 2018-07-15 08:01:25Z maronga
    3033! Some adjustments for pavement parameters
    3134! Limit magnus formula to avoid negative q_s (leads to model crash)
     
    21502153                            (surf%qsws(m) + 1.0E-20)  - surf%r_a(m)
    21512154       ENDIF
    2152 
     2155!
     2156!--    Limit resistance resistance
     2157       surf%r_s(m) = MAX( surf%r_s(m), 1.0_wp )
    21532158!
    21542159!--    Calculate change in liquid water reservoir due to dew fall or
     
    45314536       ENDDO
    45324537!
    4533 !--    Check if roughness length exceed surface-layer height and decrease
    4534 !--    local roughness length where necessary.
     4538!--    Check if roughness length for momentum, heat, or moisture exceed
     4539!--    surface-layer height and decrease local roughness length where
     4540!--    necessary.
    45354541       DO  m = 1, surf_lsm_h%ns
    45364542          IF ( surf_lsm_h%z0(m) >= surf_lsm_h%z_mo(m) )  THEN
     
    45434549                            surf_lsm_h%i(m), surf_lsm_h%j(m)
    45444550             CALL message( 'land_surface_model_mod', 'PA0503',                 &
     4551                            0, 0, 0, 6, 0 )
     4552          ENDIF
     4553          IF ( surf_lsm_h%z0h(m) >= surf_lsm_h%z_mo(m) )  THEN
     4554         
     4555             surf_lsm_h%z0h(m) = 0.9_wp * surf_lsm_h%z_mo(m)
     4556             surf_lsm_h%z0q(m) = 0.9_wp * surf_lsm_h%z_mo(m)
     4557             
     4558             WRITE( message_string, * ) 'z0h exceeds surface-layer height ' // &
     4559                            'at horizontal natural surface and is ' //         &
     4560                            'decreased appropriately at grid point (i,j) = ',  &
     4561                            surf_lsm_h%i(m), surf_lsm_h%j(m)
     4562             CALL message( 'land_surface_model_mod', 'PA0507',                 &
    45454563                            0, 0, 0, 6, 0 )
    45464564          ENDIF
     
    45614579                            0, 0, 0, 6, 0 )
    45624580             ENDIF
     4581             IF ( surf_lsm_v(l)%z0h(m) >= surf_lsm_v(l)%z_mo(m) )  THEN
     4582         
     4583                surf_lsm_v(l)%z0h(m) = 0.9_wp * surf_lsm_v(l)%z_mo(m)
     4584                surf_lsm_v(l)%z0q(m) = 0.9_wp * surf_lsm_v(l)%z_mo(m)
     4585             
     4586                WRITE( message_string, * ) 'z0h exceeds surface-layer height '//&
     4587                            'at vertical natural surface and is ' //           &
     4588                            'decreased appropriately at grid point (i,j) = ',  &
     4589                            surf_lsm_v(l)%i(m)+surf_lsm_v(l)%ioff,             &
     4590                            surf_lsm_v(l)%j(m)+surf_lsm_v(l)%joff
     4591                CALL message( 'land_surface_model_mod', 'PA0507',              &
     4592                            0, 0, 0, 6, 0 )
     4593             ENDIF
    45634594          ENDDO
    45644595       ENDDO     
    4565 
    4566 
    45674596
    45684597    END SUBROUTINE lsm_init
  • palm/trunk/SOURCE/urban_surface_mod.f90

    r3123 r3136  
    2828! -----------------
    2929! $Id$
     30! Limit also roughness length for heat and moisture where necessary
     31!
     32! 3123 2018-07-12 16:21:53Z suehring
    3033! Correct working precision for INTEGER number
    3134!
     
    46024605!
    46034606!--    Check for consistent initialization.
    4604 !--    Check if roughness length exceed surface-layer height and decrease
    4605 !--    local roughness length where necessary.
     4607!--    Check if roughness length for momentum, or heat, exceed surface-layer
     4608!--    height and decrease local roughness length where necessary.
    46064609       DO  m = 1, surf_usm_h%ns
    46074610          IF ( surf_usm_h%z0(m) >= surf_usm_h%z_mo(m) )  THEN
     
    46164619                            0, 0, 0, 6, 0 )
    46174620          ENDIF
     4621          IF ( surf_usm_h%z0h(m) >= surf_usm_h%z_mo(m) )  THEN
     4622         
     4623             surf_usm_h%z0h(m) = 0.9_wp * surf_usm_h%z_mo(m)
     4624             surf_usm_h%z0q(m) = 0.9_wp * surf_usm_h%z_mo(m)
     4625             
     4626             WRITE( message_string, * ) 'z0h exceeds surface-layer height ' // &
     4627                            'at horizontal urban surface and is ' //           &
     4628                            'decreased appropriately at grid point (i,j) = ',  &
     4629                            surf_usm_h%i(m), surf_usm_h%j(m)
     4630             CALL message( 'urban_surface_model_mod', 'PA0507',                &
     4631                            0, 0, 0, 6, 0 )
     4632          ENDIF         
    46184633       ENDDO
    46194634       
     
    46304645                            surf_usm_v(l)%j(m)+surf_usm_v(l)%joff
    46314646                CALL message( 'urban_surface_model_mod', 'PA0503',             &
     4647                            0, 0, 0, 6, 0 )
     4648             ENDIF
     4649             IF ( surf_usm_v(l)%z0h(m) >= surf_usm_v(l)%z_mo(m) )  THEN
     4650         
     4651                surf_usm_v(l)%z0h(m) = 0.9_wp * surf_usm_v(l)%z_mo(m)
     4652                surf_usm_v(l)%z0q(m) = 0.9_wp * surf_usm_v(l)%z_mo(m)
     4653             
     4654                WRITE( message_string, * ) 'z0h exceeds surface-layer height '//&
     4655                            'at vertical urban surface and is ' //             &
     4656                            'decreased appropriately at grid point (i,j) = ',  &
     4657                            surf_usm_v(l)%i(m)+surf_usm_v(l)%ioff,             &
     4658                            surf_usm_v(l)%j(m)+surf_usm_v(l)%joff
     4659                CALL message( 'urban_surface_model_mod', 'PA0507',             &
    46324660                            0, 0, 0, 6, 0 )
    46334661             ENDIF
Note: See TracChangeset for help on using the changeset viewer.