-
Notifications
You must be signed in to change notification settings - Fork 1.1k
implement Tdew to RH conversions #1744
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
Comments
I would prefer to duplicate very minor models/functions in pvlib rather than expand the list of dependencies. |
I find using metpy annoying due to the requirement of specifying units; thus I agree that it would be nice to have these simple functions in pvlib. |
I agree with Anton that these models and implementations are simple enough that it's better to just copy (with attribution/license) than to introduce a non-trivial dependency. I also agree with Adam that the metpy units requirement is annoying. The dewpoint to relative humidity calculation is essentially exact for this purpose so I don't have any concerns about introducing additional uncertainty. If we agree that we should add this function then I might have someone that would be interested in contributing a PR. |
I suggest looking up the equation in a textbook and writing a new function referencing that. I did this years ago using the meteonorm documentation as reference. |
A coworker shared this reference: http://www.bom.gov.au/climate/averages/climatology/relhum/calc-rh.pdf, which is a calculation of the ratio of vapor to saturation vapor pressures based on ambient and dew point temperatures |
Another reference that may be useful for saturation vapor pressures. PlantPredict uses the AEKR coefficients over water for the magnus form equations. https://www.osti.gov/servlets/purl/548871-PjpxAP/webviewable/ |
I'm currently working on this. There are three different options. MetPy uses Bolton1980, @kurt-rhee mentions PlantPredict uses the AEKR, @mikofski pointed us to the document that uses Abbot 1985. It's unclear to me whether it is preferable to choose one approach over another. Any thoughts? |
Unidata/MetPy#508 also relevant. I suspect all of the above is fine for PV modeling applications. |
Personally I'd love to see all three of them. If they have similar input arguments they could all be bundled in one function that has a
|
I would prefer to see just one good one rather than a range of options since this is peripheral to PV modelling. |
I don't have a strong preference for either implementation, I believe that the model accuracy in either case must be quite rough. If it helps, here is the C# implementation of the equation mentioned above:
|
Thanks @kurt-rhee ! I think it is easy enough to bundle them all in one function and give the option to choose the model, unless one is sufficient or deemed better than others. From what I understand, all three of these models are used often, the uncertainties seem to be similar for different temperature ranges. The AEKR model has the largest range for temperature out of the three. If used in the stated temperature range Bolton and Abbot seem to be as applicable. (I understand as the issue @wholmgren linked also points to this as well) |
More models = more problems. I agree with @adriesse that it's not worth it in this case. My inclination is to copy what MetPy has already implemented. |
I don't have a strong stance to not use MetPy but for PV modelling, AEKR might be the better of the two as it seems to work better above 35C (noting worse below -50C compared to MetPy). |
One approach could be to provide one reasonably validated model obeying a well defined interface with a mechanism that allows users to plug in their own model. |
Copying in the error plot from that MetPy issue... If I understand correctly, @uakkoseo and @kurt-rhee are proposing to implement the model in blue. Let's just do that and move on with life! |
I have a lot of trouble figuring out from this discussion what's what. Is the blue line AEKR? The MetPy discussion links to a WMO report from 1966. I would be content with a formulation that is currently used by some entity like WMO, ECMWF, NOAA, or even Meteonorm. If those entities use different formulations, then feel free to choose randomly from among them!
|
@adriesse thank you, I tried to find some guidance from the entities you listed above. I was able to find NOAA formula following this page to be using Tetens formula |
The AEKR equation was published 27 years ago but not adopted by major institutions. Should pvlib? |
Hey @uakkoseo if you haven't already gotten around to this, I can possibly contribute something in the next week or so. |
@kurt-rhee honestly I was a bit stuck on how to proceed on this! If you have a better grasp on it than me please contribute as I wasn't sure if there was a final agreement on the formula. I won't be able to get back to this earlier than next month or so otherwise. |
Adding comments from the PR to this thread for continuity sake: Reasoning
CaveatsCaveat 1
Caveat 2
|
@kurt-rhee Thanks for reactivating this issue. I don't think there is any controversy about simpleness, nor is this a discussion about user preference. The content of pvlib needs to stand on firm foundations. So, I did some research. Calculating RH from the ratio of two saturation vapor pressures, There are many different equations for The only question remaining is which set of three coefficients to use because there are many sets to choose from. Superficially they all look very similar, but due to the exponential function in the equation, small differences could become significant. The coefficients shown in recent editions of the WMO Guide to Meteorological Instruments and Methods of Observation are: Based on my research, I recommend using these WMO coefficients to create a generic The question about historical significance could be assessed by further investigation (@kurt-rhee?):
|
Ah I totally misunderstood the original asks in the conversation, I'm happy to change the default coefficients to the ones shown above and then change the formulation to the function to allow for users to change the input coefficients as they desire. As for the last two questions:
I'll create a new commit with the desired changes this week! |
+1 to @adriesse's plan; basing our function on the WMO guide seems like the way to go to me. Anton, thank you for figuring out a good path forward here and breaking up the logjam! |
* changed default types to float in solarposition.py * switched to floats in the docstrings and removed type hints * added magnus_tetens equations * line too long in solarposition.py * revert solarposition.py to pre-PR state * set default magnus coefficients per conversation in #1744 * moved equations to atmosphere.py, updated function names to suggested, changed type hints in docstring, changed to suggested coefficient format * moved tests to atmosphere.py tests * changed reference to WMO * dry-bult temperature in the docstring * revert pyproject.toml * remove uv.lock * Update pvlib/atmosphere.py Co-authored-by: Anton Driesse <[email protected]> * fixing flake8 errors for tdew/rh functions I have left the formatting of functions outside of the tdew and rh conversion functions. I can format them to satisfy flake8 linter if that is desired by maintainers. Just let me know how I can help. * Update pvlib/atmosphere.py Co-authored-by: Kevin Anderson <[email protected]> * Update pvlib/atmosphere.py Co-authored-by: Kevin Anderson <[email protected]> * Update pvlib/atmosphere.py Co-authored-by: Kevin Anderson <[email protected]> * Update pvlib/atmosphere.py Co-authored-by: Kevin Anderson <[email protected]> * Update pvlib/atmosphere.py Co-authored-by: Kevin Anderson <[email protected]> * Update pvlib/atmosphere.py Co-authored-by: Kevin Anderson <[email protected]> * added some unit tests for different coefficients and input types * refactored tests, removed magnus_tetens, updated whatsnew * reference and whatsnew * revert line 36 (linter) * Update pvlib/atmosphere.py Co-authored-by: Anton Driesse <[email protected]> * Update docs/sphinx/source/whatsnew/v0.11.2.rst Co-authored-by: Kevin Anderson <[email protected]> * Update pvlib/atmosphere.py Co-authored-by: Kevin Anderson <[email protected]> * Update pvlib/tests/test_atmosphere.py Co-authored-by: Kevin Anderson <[email protected]> * Update pyproject.toml Co-authored-by: Kevin Anderson <[email protected]> * Update pvlib/atmosphere.py Co-authored-by: Kevin Anderson <[email protected]> * Update pvlib/atmosphere.py Co-authored-by: Adam R. Jensen <[email protected]> * Update pvlib/atmosphere.py Co-authored-by: Adam R. Jensen <[email protected]> * Update pvlib/atmosphere.py Co-authored-by: Adam R. Jensen <[email protected]> * Update pvlib/atmosphere.py Co-authored-by: Adam R. Jensen <[email protected]> * added a round-trip test for magnus tetens Added a new test to show that you can calculate relative humidity from dewpoint and then calculate dewpoint from relative humidity and it will be the same as the original dewpoint values * temperature -> temp_air; dewpoint -> temp_dew * miscellaneous other cleanup * tests: put assertions next to calculations * linter --------- Co-authored-by: Kurt Rhee <[email protected]> Co-authored-by: Anton Driesse <[email protected]> Co-authored-by: Kurt Rhee <[email protected]> Co-authored-by: Kevin Anderson <[email protected]> Co-authored-by: Adam R. Jensen <[email protected]>
Uh oh!
There was an error while loading. Please reload this page.
Is your feature request related to a problem? Please describe.
In case weather file doesn't have RH or Pwat, I would like to be able to use Tdew to calculate spectral mismatch
Describe the solution you'd like
This capability is already implemented in MetPy
relative_humidity_from_dewpoint
Describe alternatives you've considered
reimplement in pvlib? import metpy and call it? ignore b/c most weather files already include RH or Pwat, or uncertainty in chain of conversions too much?
Additional context
I thought this topic came up somewhere else but I couldn't find it in google group, discussions, or issues/pr's
The text was updated successfully, but these errors were encountered: