Ignore:
Timestamp:
Nov 13, 2017 2:04:26 PM (7 years ago)
Author:
schwenkel
Message:

Inital revision of diagnostic_quantities_mod allows unified calculation of magnus equation and saturion mixing ratio

File:
1 edited

Legend:

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

    r2575 r2608  
    2525! -----------------
    2626! $Id$
     27! Calculation of magnus equation in external module (diagnostic_quantities_mod).
     28! Adjust calculation of vapor pressure and saturation mixing ratio that it is
     29! consistent with formulations in other parts of PALM.
     30!
     31! 2575 2017-10-24 09:57:58Z maronga
    2732! Pavement parameterization revised
    2833!
     
    14101415 SUBROUTINE lsm_energy_balance( horizontal, l )
    14111416
    1412  
     1417    USE diagnostic_quantities_mod,                                             &
     1418        ONLY:  magnus
     1419
    14131420    USE pegrid
    14141421
     
    16481655          f2 = 1.0E-20_wp
    16491656       ENDIF
    1650 !
    1651 !--    Calculate water vapour pressure at saturation
    1652        e_s = 0.01_wp * 610.78_wp * EXP( 17.269_wp * ( surf_t_surface%var_1d(m) &
    1653                      - 273.16_wp ) / ( surf_t_surface%var_1d(m) - 35.86_wp ) )
     1657
     1658!
     1659!--    Calculate water vapour pressure at saturation and convert to hPa
     1660       e_s = 0.01_wp * magnus( surf_t_surface%var_1d(m) )
     1661
    16541662!
    16551663!--    f3: correction for vapour pressure deficit
     
    16571665!
    16581666!--       Calculate vapour pressure
    1659           e  = qv1 * surface_pressure / 0.622_wp
     1667          e  = qv1 * surface_pressure / ( qv1 + 0.622_wp )
    16601668          f3 = EXP ( - surf%g_d(m) * (e_s - e) )
    16611669       ELSE
     
    16981706!
    16991707!--    Calculate saturation specific humidity
    1700        q_s = 0.622_wp * e_s / surface_pressure
     1708       q_s = 0.622_wp * e_s / ( surface_pressure - e_s )
    17011709!
    17021710!--    In case of dewfall, set evapotranspiration to zero
     
    17331741!
    17341742!--    Calculate derivative of q_s for Taylor series expansion
    1735        e_s_dt = e_s * ( 17.269_wp / ( surf_t_surface%var_1d(m) - 35.86_wp) -   &
    1736                         17.269_wp*( surf_t_surface%var_1d(m) - 273.16_wp)      &
    1737                        / ( surf_t_surface%var_1d(m) - 35.86_wp)**2 )
    1738 
    1739        dq_s_dt = 0.622_wp * e_s_dt / surface_pressure
     1743       e_s_dt = e_s * ( 17.62_wp / ( surf_t_surface%var_1d(m) - 29.65_wp) -   &
     1744                        17.62_wp*( surf_t_surface%var_1d(m) - 273.15_wp)      &
     1745                       / ( surf_t_surface%var_1d(m) - 29.65_wp)**2 )
     1746
     1747       dq_s_dt = 0.622_wp * e_s_dt / ( surface_pressure - e_s_dt )
    17401748!
    17411749!--    Add LW up so that it can be removed in prognostic equation
     
    19881996    SUBROUTINE calc_q_surface
    19891997
     1998       USE diagnostic_quantities_mod
     1999
    19902000       IMPLICIT NONE
    19912001
     
    19972007          j   = surf%j(m)
    19982008          k   = surf%k(m)
    1999 
    2000 !
    2001 !--       Calculate water vapour pressure at saturation
    2002           e_s = 0.01_wp * 610.78_wp * EXP( 17.269_wp *                         &
    2003                                  ( surf_t_surface_p%var_1d(m) - 273.16_wp ) /  &
    2004                                  ( surf_t_surface_p%var_1d(m) - 35.86_wp  )    &
    2005                                          )
     2009!
     2010!--       Calculate water vapour pressure at saturation and convert to hPa
     2011          e_s = 0.01_wp * magnus( surf_t_surface_p%var_1d(m) )                   
    20062012
    20072013!
    20082014!--       Calculate specific humidity at saturation
    2009           q_s = 0.622_wp * e_s / surface_pressure
     2015          q_s = 0.622_wp * e_s / ( surface_pressure - e_s )
    20102016
    20112017          resistance = surf%r_a(m) / ( surf%r_a(m) + surf%r_s(m) )
Note: See TracChangeset for help on using the changeset viewer.