Changeset 2608 for palm/trunk/SOURCE/land_surface_model_mod.f90
- Timestamp:
- Nov 13, 2017 2:04:26 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/land_surface_model_mod.f90
r2575 r2608 25 25 ! ----------------- 26 26 ! $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 27 32 ! Pavement parameterization revised 28 33 ! … … 1410 1415 SUBROUTINE lsm_energy_balance( horizontal, l ) 1411 1416 1412 1417 USE diagnostic_quantities_mod, & 1418 ONLY: magnus 1419 1413 1420 USE pegrid 1414 1421 … … 1648 1655 f2 = 1.0E-20_wp 1649 1656 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 1654 1662 ! 1655 1663 !-- f3: correction for vapour pressure deficit … … 1657 1665 ! 1658 1666 !-- Calculate vapour pressure 1659 e = qv1 * surface_pressure / 0.622_wp1667 e = qv1 * surface_pressure / ( qv1 + 0.622_wp ) 1660 1668 f3 = EXP ( - surf%g_d(m) * (e_s - e) ) 1661 1669 ELSE … … 1698 1706 ! 1699 1707 !-- Calculate saturation specific humidity 1700 q_s = 0.622_wp * e_s / surface_pressure1708 q_s = 0.622_wp * e_s / ( surface_pressure - e_s ) 1701 1709 ! 1702 1710 !-- In case of dewfall, set evapotranspiration to zero … … 1733 1741 ! 1734 1742 !-- 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_pressure1743 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 ) 1740 1748 ! 1741 1749 !-- Add LW up so that it can be removed in prognostic equation … … 1988 1996 SUBROUTINE calc_q_surface 1989 1997 1998 USE diagnostic_quantities_mod 1999 1990 2000 IMPLICIT NONE 1991 2001 … … 1997 2007 j = surf%j(m) 1998 2008 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) ) 2006 2012 2007 2013 ! 2008 2014 !-- Calculate specific humidity at saturation 2009 q_s = 0.622_wp * e_s / surface_pressure2015 q_s = 0.622_wp * e_s / ( surface_pressure - e_s ) 2010 2016 2011 2017 resistance = surf%r_a(m) / ( surf%r_a(m) + surf%r_s(m) )
Note: See TracChangeset
for help on using the changeset viewer.