Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update saturation_vapor_pressure #508

Open
dopplershift opened this issue Jul 18, 2017 · 7 comments · May be fixed by #3726
Open

Update saturation_vapor_pressure #508

dopplershift opened this issue Jul 18, 2017 · 7 comments · May be fixed by #3726
Assignees
Labels
Area: Calc Pertains to calculations Subarea: Thermo Pertains to thermodynamic calculations and their physical correctness Type: Enhancement Enhancement to existing functionality
Milestone

Comments

@dopplershift
Copy link
Member

Found this paper which describes how to properly use Clausius-Clapyron to calculate saturation vapor pressure. Should update our calculations to:

  • Use this formulation for saturation vapor pressure
  • Add latent heat of vaporization for water vapor as a function of temperature
  • Update some of liquid water/water vapor constants from this paper or other better sources
@dopplershift dopplershift added Area: Calc Pertains to calculations Type: Enhancement Enhancement to existing functionality labels Jul 18, 2017
@dopplershift dopplershift added this to the Fall 2017 milestone Jul 18, 2017
@tjwixtrom
Copy link
Contributor

tjwixtrom commented Jul 20, 2017

I have conducted testing on this version of e_s, comparing the original MetPy implementation, the implementation in the Koutsoyiannis 2012, the Koutsoyiannis 2012 using MetPy constants, and Koutsoyiannis 2012 using MetPy constants and a variable Lv to the WMO accepted fit. The differences between these can be seen in the attached plots
e_s_methods
diff
The WMO formula (which is a statistical fit) can be found here:
wmo_188e.pdf

Based on my testing, it looks like we should change to either the WMO fit (which is not bad to code) or the Koutsoyiannis equation with current MetPy constants (changing the constants has no significant effect). Is there another source beside WMO that we could compare to?

For reference, changing the e_s equation will cause 15 tests to break.

@tjwixtrom
Copy link
Contributor

Per request from @jrleeman, here are additional plots with percent change from WMO.
percent_change_2
percent_change

@jrleeman jrleeman modified the milestones: Fall 2017, Winter 2017 Oct 26, 2017
@jrleeman jrleeman removed this from the 0.7 milestone Nov 15, 2017
@dopplershift dopplershift added this to the Spring 2018 milestone Nov 15, 2017
@dopplershift
Copy link
Member Author

These resources are also relevant, since they reproduce some text book material.

emanuel-reproduction.tar.gz

@jrleeman jrleeman self-assigned this Feb 21, 2018
@jrleeman jrleeman removed this from the 0.8 milestone Apr 11, 2018
@sgdecker
Copy link
Contributor

There are some alternatives to Koutsoyiannis:

  1. Huang (2018)
  2. Eqs. (4), (6-9), (11-12) from Romps (2017)
  3. Flatau et al. (1992)

I'll try to code these up for comparison with the above, including a comparison of computational efficiency.

@sgdecker
Copy link
Contributor

I coded more than the above, and the Flatau algorithm is the fastest, and also the most accurate for many input temperatures, or at least within the uncertainty of the reference datasets otherwise. For my "truth" I averaged the Goff, Wexler, Murphy and Koop, and Wagner and Pruss reference values.
apxabsdif
apxreldif

The code used to generate these figures and other diagnostics is at https://gist.github.com/sgdecker/12811e797b4a1df267a7be7cce8201ba

@jrleeman
Copy link
Contributor

jrleeman commented Jul 2, 2018

Thanks for doing this @sgdecker! I've got a reference dataset I'll compare to and we'll figure out what direction to head here.

@deeplycloudy
Copy link
Collaborator

deeplycloudy commented Oct 2, 2018

I'm the party responsible for emanuel-reproduction.tar.gz. At the time I sent it to @dopplershift, I hadn't been able to sort out how Emanuel got his numbers. It turns out that the texbook uses variable latent heat of fusion but a constant specific heat of liquid water c_L. At cold temperatures, c_L increases quite rapidly, leading to large errors in Emanuel's calculations at those cold temperatures. Updated notebook attached, showing the reproduction of the incorrect table.
Moist processes Fal18.ipynb.zip

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: Calc Pertains to calculations Subarea: Thermo Pertains to thermodynamic calculations and their physical correctness Type: Enhancement Enhancement to existing functionality
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants