4

I am calculating RH (%) using this well accepted equation:

$RH =e \times \frac{100}{es(T)}$

where $e$ is the vapour pressure and $es(T)$ is the saturated vapour pressure at temperature $T$.

I have observed $e$ (ranging from 0$-$30 hPa). I calculate $es$ in R using one of the following equations (depending on the wet bulb temperature $Tw$ in relation to zero (to account for vapour pressure over liquid or solid water)):

f.es1 <- function(T) 6.107 * exp(17.38 * T/(239. + T))    # Tw >= 0 
f.es2 <- function(T) 6.107 * exp(22.44 * T/(272.4 + T))   # Tw < 0

I have noticed that $RH$ (using the first equation above) is extremely large in some cases (e.g., 4352.567). This is occurring when $e$ is 0.6 and $es$ is 0.01378497.

I know I can scale the RH data to between 1:100, but I'm wondering if there is a better way of dealing with this? It is happening when $e$ and $es$ are extremely small. I'm guessing this is over really dry areas perhaps? Is there a better way of calculating $RH$ for these places?

This is some information about the dataset:

1 variables (excluding dimension variables):
    short vap[lon,lat,time]   (Chunking: [2160,30,1])  
        standard_name: vapor_pressure
        long_name: vapor_pressure
        units: kPa
        add_offset: 0
        scale_factor: 0.01
        _FillValue: -32768
        missing_value: -32768
        description: Vapor Pressure
        dimensions: lon lat time
        coordinate_system: WGS84,EPSG:4326

3 dimensions: time Size:12 *** is unlimited *** standard_name: time long_name: time units: days since 1900-01-01 00:00:00 calendar: gregorian axis: T lon Size:2160 standard_name: longitude long_name: longitude units: degrees_east axis: X lat Size:1080 standard_name: latitude long_name: latitude units: degrees_north axis: Y

5 global attributes: CDI: Climate Data Interface version 1.9.9rc1 (https://mpimet.mpg.de/cdi) Conventions: CF-1.6 history: Wed Sep 15 14:21:54 2021: cdo remapcon,r2160x1080 TerraClimate19812010_vap.nc WCvap_terraclimate_1981_2010.nc method: These layers from TerraClimate were creating using climatically aided interpolation of monthly anomalies from the CRU Ts4.0 and Japanese 55-year Reanalysis (JRA-55) datasets with WorldClim v2.0 climatologies. CDO: Climate Data Operators version 1.9.9rc1 (https://mpimet.mpg.de/cdo)

Headings in the picture below:

  • ind_e = e

  • ind_T_1500 = Temperature (at 3pm)

  • ind_es = Saturated vapour pressure

  • ind_Rh1500 = Relative humidity calculated for 3pm.

  • ind_Tx = Tmax

  • ind_Tn = Tmin

enter image description here

This is the updated dataframe (below). The e is slightly lower generally, but it still seems incorrect.

This is the updated dataframe

matlabcat
  • 199
  • 6
  • 2
    That 0.01378497 value of $es$ corresponds to a temperature of -58.173 °C . I suspect you are doing something wrong in your calculations. – David Hammen Sep 15 '21 at 23:21
  • 1
    Looks like you're using a version of Teten's Equation then (in hPa)? Agree with David, your es seems way too low, the slight difference in coefficients shouldn't matter.
    T should be in Celsius. https://www.omnicalculator.com/chemistry/vapour-pressure-of-water suggests your e values are of the right order of magnitude. es should basically always be > e (except for supersaturation on a microscale for curved surfaces, and that's only a few percent if I remember right)
    – JeopardyTempest Sep 15 '21 at 23:26
  • @DavidHammen That temperature is correct. I am trying to calculate relative humidity on a global scale. The temperature you refer to is from Antarctica. Does that change anything? – matlabcat Sep 16 '21 at 08:41
  • 1
    Ok, then your problem is the vapor pressures you have. Page 13 of https://nvlpubs.nist.gov/nistpubs/jres/81A/jresv81An1p5_A1b.pdf shows ice saturation pressure of 0.01 around -60C. But that means vapor pressure can only be basically <= that same value. So now the issue seems be where you're getting your vapor pressures, as 0.6 is way too high for -60C temperature. – JeopardyTempest Sep 16 '21 at 08:46
  • @JeopardyTempest Ok. Perhaps I have made a mistake indexing the e that creates the RH. The data came from here: [link] (http://thredds.northwestknowledge.net:8080/thredds/catalog/TERRACLIMATE_ALL/summaries/catalog.html) so it should be good. Just so I'm clear, in this application of the equations, I should be using hPa right? – matlabcat Sep 16 '21 at 09:08
  • @Fred Thanks, I have seen all these equations before, but I'm not sure they help my issue here. – matlabcat Sep 16 '21 at 14:22
  • The equation you gave is using mb (= hPa), yes (it's based off the scale of the multiplier out front, the 6.107 is for mb. If you are getting these odd results when applying the equation near the Antarctic where T is indeed nearer -60C, then the issue doesn't seem to be the calculation at all, but the data. Would take quite a bit more to dig into those files and figure out what's going on. Do you perhaps have a summary listing of what's in that dataset? Or is very thoroughly described in the headers of the files? – JeopardyTempest Sep 16 '21 at 14:34
  • @JeopardyTempest I have included the description in the nc climatology file for vapour pressure. I don't think I am incorrect in my indexing.i.e. I think the values I refer to above are correct....which means that there could be an issue with the data. The paper describing the data mentions this: Climatological data for several voxels from the WorldClim dataset near perennial sea ice or glaciers primarily in Antarctica and Greenland had exceptionally large, and likely unrealistic, vapor pressure deficits (>0.5 kPa). This probably implies that vapour pressure is also suspect, right? – matlabcat Sep 16 '21 at 19:44
  • I would think a vapor pressure deficit would indicate that they're saying their vapor pressures are too low, not too high like we're finding. But looks like you won't even have a saturation vapor pressure of 5 mb until you get up near -2C... so it'd be a very limited range to have issues > .5kPa over such ice. Can you check the T, e, date and such for some of your extreme RH (extremely high e)? That might point a finger somewhere? – JeopardyTempest Sep 16 '21 at 22:13
  • I'm hoping you've converted those vapor pressures provided to hPa (mb) already before saying it was 0.6... or that's really 6 mb and you're off by another order of magnitude yet! – JeopardyTempest Sep 16 '21 at 22:16
  • @JeopardyTempest Yes, I converted them when I pulled them down. So at least I think I am dealing with the correct magnitude of data. It ranges from 0-~40 hPa depending on the month. – matlabcat Sep 17 '21 at 09:44
  • 1
    @JeopardyTempest I added a screenshot of some of the highest calculated RH values and their corresponding e, es and temperature. The temperature being used is one that was calculated from a formula using the Daily temperature range (T_1500=Tx - 0.116*DTR, where DTR is the daily temperature range) to provide a temperature for 3pm. The e derived from Terraclimate is a result of the average temperature, but that couldn't make a huge difference I would imagine? – matlabcat Sep 17 '21 at 14:51
  • Perhaps that's where some of the challenges are coming from... it's starting to be more about the specific nuances of the dataset which I know nothing about. But my concerns are whether you really are matching like with like. Do you have hourly e (doesn't look like it)? e can vary a bit over the course of a day (though likely not to this scale). So I'd focus mainly on concerns with the T calculation... do you have any errors in your calculation (output Tx [I'm guessing is max temp] and DTR)? That would seem the likely spot of errors of this scale. – JeopardyTempest Sep 18 '21 at 10:19
  • Beyond that, the validity of this 0.116 calculation to get 3 PM... seems questionable too, though perhaps not the source of such large errors so much as trying to bring unrealistic precision. Why would you need 3 PM temp (unless q is somehow being specified as 3 PM?) The diurnal temperature range certainly isn't that consistent in weather. – JeopardyTempest Sep 18 '21 at 10:20
  • If all you have is T max, T min and a daily e, I'm not sure whether you'll really be able to get a daily (or hourly) RH... after all RH varies greatly most days just because T does, and in many ways isn't a very useful measure of moisture meteorologically. If you have specific need for RH, then perhaps we should look at that challenge. Though this really can't be the source of the error, given it seems be more like 60C. The scale of e and of T just isn't matching at all. If the Tmin and Tmax are really in the large negatives, it suggests something is amiss with e. – JeopardyTempest Sep 18 '21 at 10:20
  • @JeopardyTempest No. I don't have hourly e. I have a gridded monthly climatology for e. I have not incorporated any measure of error in the calculation of Temperature at 3pm. The idea is to approximate RH at that time of the day (on average for a month) using the average maximum and minimum temperatures (also a monthly climatology) along with e. (You are right re: Tx being the maximum temperature.) – matlabcat Sep 20 '21 at 12:13
  • @JeopardyTempest The equation is just an empirical relationship used to approximate temperature at 3pm.Since I'm dealing with monthly data, it is just supposed to be an approximation. – matlabcat Sep 20 '21 at 12:16
  • @JeopardyTempest I think I should have been more clear on the type of data I had from the start. Everything (Tmax,Tmin and e) are monthly gridded climatologies. You are correct that that is all the data I have to approximate RH at 3pm (I'm also approximating it for the morning). I agree with you that something may be amiss with e..in extremely cold areas (Antarctic, Greenland for example..as they are where I get the most 'extreme' RH outputs after my calculations. – matlabcat Sep 20 '21 at 12:20
  • Ok, actually seems a bit more reasonable to be doing to a larger climatology like that (though still quite unsure such a empirical relationship is close to reasonable to apply in such far-flung places that typically alternate between minimal sunlight and near-persistent sunlight). But anyways, again, it really shouldn't be a factor in your issue. Can you get print the base data Tx and Tn hopefully for the points the other values above? Because that's where something seems to be greatly awry. e just doesn't seem in the ballpark of what the T suggest, more than just minor errors. – JeopardyTempest Sep 21 '21 at 12:25
  • @JeopardyTempest Thanks for taking the time to look at this. I have updated the image above to incorporate maximum and minimum temperature for the indexed points. – matlabcat Sep 21 '21 at 13:01
  • Sorry I'm not being much more help, I was never the fastest problem solver :( So it definitely looks to be e that's the huge problem (if indeed the temperatures are reasonable... you say Antarctic, Greenland, seems reasonable). It looks like es is legitimate for those temperatures... e should always be less than es. Their note about large vapor pressure deficits doesn't seem to explain it (that should lead to abnormally low e). So I'd carefully check I was matching up coordinates/arrays properly, wasn't converting to hPa/mb incorrectly, dates are the same, etc. – JeopardyTempest Sep 21 '21 at 13:13
  • The fact your e have such a round value whereas the Tx and Tn aren't also is very suspicious to me. It just isn't a minor error, those e would be only possible for temperatures >= -30C, miles above from the temperatures you have. – JeopardyTempest Sep 21 '21 at 13:15
  • @JeopardyTempest I realised that I made a slight error with the temperature data I was reading in. I have updated it (and the table above) but as you can see, it's not THAT different. I am checking that I am matching up coordinates/arrays properly again. Re:the round values of 'e': these are derived straight from the Terraclim dataset (i.e. I am not calculating these values). So the rounding of 'e' versus the decimal places in my temperature data are not connected. – matlabcat Sep 21 '21 at 14:43
  • Indeed, no big deal there. The issue is still e. – JeopardyTempest Sep 21 '21 at 16:45
  • Went back and looked at the northwestknowledge link. I see q files but not e. Are you getting them elsewhere, or are you converting q to e (they aren't the same)? It's confusing because your metadata sounds like vapor pressure (e), but q is specific humidity (a unitless ratio). Perhaps that's where things have gone wrong, or are you getting it a different place that I've missed? – JeopardyTempest Sep 21 '21 at 16:59
  • The file I downloaded is TerraClimate19812010_vap.nc which is a climotology of vapor pressure. This is 'e' right? – matlabcat Sep 21 '21 at 19:19
  • Sorry, didn't look far enough down, and missearched. Yeah, sounds like. – JeopardyTempest Sep 22 '21 at 03:57
  • And you're likewise downloading the 19812010 tmax and tmin files? And the grids and times are matching? I'm quite perplexed. It just seems like a crazy amount to be off by, an order of magnitude. I guess make sure other RH values around the globe make sense (generally higher near ocean areas and mountains, lower over deserts, and seasonal patterns match expectations in various spots [I'd imagine lower during winter in many mid latitude spots, but might help to verify vs reality too]), and if so, you have to decide where to go next if data really is badly broken at those afield locations :-/ – JeopardyTempest Sep 22 '21 at 04:07
  • @JeopardyTempest Yes, I downloaded the tmin and tmax from there too. The files were too large to all be read in r on my machine, so I 'coarsened' them using a first order conservative mapping cdo (remapcon), but this interpolation shouldn't have changed the values to the extent that you 're saying 'e' is out? – matlabcat Sep 22 '21 at 13:23

0 Answers0