nomogram 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,534 @@
1
+ # SPDX-FileCopyrightText: 2026 Miki
2
+ # SPDX-License-Identifier: BSD-3-Clause
3
+ #
4
+ # Humidity of air: demonstration formulations (the full set of saturation
5
+ # vapour pressure formulations comes later). Hand-written, validated when
6
+ # loaded by nomogram.catalog. Entries whose details were not checked
7
+ # against the source carry status = "to-confirm".
8
+
9
+ # --- Quantity kinds defined by nomogram -----------------------------------
10
+
11
+ [kinds.SaturationVapourPressureOverWater]
12
+ label = "Saturation Vapour Pressure over Water"
13
+ specialization_of = "VapourPressure"
14
+ description = "Pressure of water vapour in equilibrium with a plane surface of pure liquid water."
15
+ # The Wikidata item covers saturation over water and over ice: broader.
16
+ matches = [
17
+ { target = "http://www.wikidata.org/entity/Q2387102", relation = "broad", verified = 2026-10-14 },
18
+ ]
19
+
20
+ # --- References -----------------------------------------------------------
21
+
22
+ [references.sonntag1990]
23
+ authors = "Sonntag, D."
24
+ year = 1990
25
+ title = "Important new values of the physical constants of 1986, vapour pressure formulations based on the ITS-90, and psychrometer formulae"
26
+ container = "Zeitschrift für Meteorologie"
27
+ status = "to-confirm"
28
+ note = "Volume (40 or 70) and pages (340-344) to confirm against the original."
29
+
30
+ [references.iapws_sr1_86]
31
+ authors = "IAPWS"
32
+ year = 1992
33
+ title = "Revised Supplementary Release on Saturation Properties of Ordinary Water Substance (SR1-86(1992))"
34
+ url = "https://iapws.org/technical-guidance/release/Supp-sat"
35
+ status = "verified"
36
+ note = "Equation (1), coefficients, range (section 6) and Table 1 read in the official release."
37
+
38
+ [references.wagner_pruss1993]
39
+ authors = "Wagner, W.; Pruß, A."
40
+ year = 1993
41
+ title = "International equations for the saturation properties of ordinary water substance. Revised according to the international temperature scale of 1990"
42
+ container = "Journal of Physical and Chemical Reference Data 22, 783"
43
+ status = "to-confirm"
44
+ note = "Article behind IAPWS SR1-86(1992); DOI not checked."
45
+
46
+ [references.alduchov_eskridge1996]
47
+ authors = "Alduchov, O. A.; Eskridge, R. E."
48
+ year = 1996
49
+ title = "Improved Magnus form approximation of saturation vapor pressure"
50
+ container = "Journal of Applied Meteorology 35, 601-609"
51
+ url = "https://www.osti.gov/servlets/purl/548871"
52
+ status = "verified"
53
+ note = "Read in the report version (OSTI 548871, DOE/ER/61011--T6): Table II (formulas), Table III (maximum relative errors)."
54
+
55
+ [references.tetens1930]
56
+ authors = "Tetens, O."
57
+ year = 1930
58
+ title = "Über einige meteorologische Begriffe"
59
+ container = "Zeitschrift für Geophysik 6, 297-309"
60
+ status = "to-confirm"
61
+ note = "Original not read. Alduchov and Eskridge (1996) quote 6.11 x 10^(7.5 t/(237.3 + t)); Lawrence (2005, not read) is said to give 6.1066 hPa: the constant differs between secondary sources."
62
+
63
+ [references.buck1981]
64
+ authors = "Buck, A. L."
65
+ year = 1981
66
+ title = "New equations for computing vapor pressure and enhancement factor"
67
+ container = "Journal of Applied Meteorology 20, 1527-1532"
68
+ status = "to-confirm"
69
+ note = "Original not read; formulas as quoted by Alduchov and Eskridge (1996, Table II)."
70
+
71
+ [references.hyland_wexler1983]
72
+ authors = "Hyland, R. W.; Wexler, A."
73
+ year = 1983
74
+ title = "Formulations for the thermodynamic properties of the saturated phases of H2O from 173.15 K to 473.15 K"
75
+ container = "ASHRAE Transactions 89(2A), 500-519"
76
+ status = "to-confirm"
77
+ note = "Original not read; coefficients as given by ASHRAE (2017) through PsychroLib (commit 3066345)."
78
+
79
+ [references.psychrolib]
80
+ authors = "PsychroLib contributors"
81
+ title = "PsychroLib: psychrometric functions (Python source, commit 3066345dc8cf91bf59134147cf917f982c1fce13)"
82
+ url = "https://github.com/psychrometrics/psychrolib"
83
+ status = "verified"
84
+ note = "GetSatVapPres read in the source; it switches from ice to water at the triple point, where ASHRAE uses the freezing point."
85
+
86
+ [references.voemel_vp]
87
+ authors = "Vömel, H."
88
+ title = "Saturation vapor pressure formulations"
89
+ container = "NCAR Earth Observing Laboratory (formerly CIRES), web page"
90
+ url = "https://cires1.colorado.edu/~voemel/vp.html"
91
+ status = "verified"
92
+ note = "Consulted 2026-10-14, copy kept in the local reference store. A secondary source: formulas as quoted, originals not read."
93
+
94
+ [references.bolton1980]
95
+ authors = "Bolton, D."
96
+ year = 1980
97
+ title = "The computation of equivalent potential temperature"
98
+ container = "Monthly Weather Review 108, 1046-1053"
99
+ status = "to-confirm"
100
+ note = "Original not read; formula as quoted by Vömel."
101
+
102
+ [references.murray1967]
103
+ authors = "Murray, F. W."
104
+ year = 1967
105
+ title = "On the computation of saturation vapor pressure"
106
+ container = "Journal of Applied Meteorology 6, 203-204"
107
+ status = "to-confirm"
108
+ note = "Original not read; formula as quoted by Vömel."
109
+
110
+ [references.buck1996]
111
+ authors = "Buck Research Instruments"
112
+ year = 1996
113
+ title = "Model CR-1A Hygrometer, Operating Manual"
114
+ status = "to-confirm"
115
+ note = "Grey literature, not read; formula as quoted by Vömel, who calls it an update of Buck (1981)."
116
+
117
+ [references.goff_gratch1946]
118
+ authors = "Goff, J. A.; Gratch, S."
119
+ year = 1946
120
+ title = "Low-pressure properties of water from -160 to 212 F"
121
+ container = "Transactions of the American Society of Heating and Ventilating Engineers 52, 95-122"
122
+ status = "to-confirm"
123
+ note = "Original not read."
124
+
125
+ [references.smithsonian1984]
126
+ authors = "Smithsonian Institution"
127
+ year = 1984
128
+ title = "Smithsonian Meteorological Tables"
129
+ status = "to-confirm"
130
+ note = "Cited by Vömel for the Goff-Gratch equation (after Goff and Gratch, 1946); edition not checked."
131
+
132
+ [references.goff1957]
133
+ authors = "Goff, J. A."
134
+ year = 1957
135
+ title = "Saturation pressure of water on the new Kelvin temperature scale"
136
+ container = "Transactions of the American Society of Heating and Ventilating Engineers"
137
+ status = "to-confirm"
138
+ note = "Title and container from memory, not checked; cited by Vömel with WMO (2012)."
139
+
140
+ [references.gibbins1990]
141
+ authors = "Gibbins, C. J."
142
+ year = 1990
143
+ title = "A survey and comparison of relationships for the determination of the saturation vapour pressure over plane surfaces of pure water and of pure ice"
144
+ container = "Annales Geophysicae 8, 859-885"
145
+ status = "to-confirm"
146
+ note = "Not read; cited by Vömel for the range of the Goff-Gratch equation."
147
+
148
+ [references.preston_thomas1990]
149
+ authors = "Preston-Thomas, H."
150
+ year = 1990
151
+ title = "The International Temperature Scale of 1990 (ITS-90)"
152
+ container = "Metrologia 27, 3-10"
153
+ doi = "10.1088/0026-1394/27/1/002"
154
+ status = "to-confirm"
155
+ note = "Text and Table 6 (differences between ITS-90 and IPTS-68) read in a copy of the text, not in the journal; DOI not checked."
156
+
157
+ [references.wmo2024]
158
+ authors = "World Meteorological Organization"
159
+ year = 2024
160
+ title = "Guide to Instruments and Methods of Observation (WMO-No. 8), Volume I, Annex 4.B"
161
+ doi = "10.59327/WMO/CIMO/1"
162
+ status = "to-confirm"
163
+ note = "Primary text not read; formula and range cross-checked with WMO training material. Notation e_w to confirm in the text."
164
+
165
+ [references.iapws95]
166
+ authors = "IAPWS"
167
+ year = 2018
168
+ title = "Revised Release on the IAPWS Formulation 1995 for the Thermodynamic Properties of Ordinary Water Substance for General and Scientific Use (R6-95(2018))"
169
+ url = "https://iapws.org/documents/release/IAPWS-95"
170
+ status = "verified"
171
+
172
+ [references.ashrae2017]
173
+ authors = "ASHRAE"
174
+ year = 2017
175
+ title = "ASHRAE Handbook - Fundamentals, chapter 1: Psychrometrics"
176
+ status = "to-confirm"
177
+ note = "Cited through the tests of PsychroLib; notation p_ws to confirm in the text."
178
+
179
+ [references.ams_glossary]
180
+ authors = "American Meteorological Society"
181
+ title = "Glossary of Meteorology: vapor density"
182
+ url = "https://glossary.ametsoc.org/wiki/Absolute_humidity"
183
+ status = "verified"
184
+
185
+ [references.cengel_boles]
186
+ authors = "Çengel, Y. A.; Boles, M. A."
187
+ title = "Thermodynamics: An Engineering Approach, chapter 14: Gas-vapor mixtures and air-conditioning"
188
+ status = "to-confirm"
189
+ note = "Edition and year not checked; definition read in lecture material based on the book."
190
+
191
+ # --- Physical constants ---------------------------------------------------
192
+
193
+ [constants.R_v_iapws95]
194
+ identifier = "R_v"
195
+ value = 461.51805
196
+ unit = "J-PER-KiloGM-K"
197
+ description = "Specific gas constant of water vapour"
198
+ reference = "iapws95"
199
+ # The Wikidata item is the specific gas constant of any gas: broader.
200
+ matches = [
201
+ { target = "http://www.wikidata.org/entity/Q94372268", relation = "broad", verified = 2026-10-14 },
202
+ ]
203
+
204
+ # --- Notations ------------------------------------------------------------
205
+
206
+ [notations.wmo]
207
+ label = "WMO Guide to Instruments and Methods of Observation"
208
+ symbols = { e_s = 'e_{\mathrm{w}}', rho_v = '\rho_{\mathrm{v}}' }
209
+ reference = "wmo2024"
210
+
211
+ [notations.ashrae]
212
+ label = "ASHRAE Handbook - Fundamentals"
213
+ symbols = { e_s = 'p_{\mathrm{ws}}', RH = '\phi' }
214
+ reference = "ashrae2017"
215
+
216
+ # --- Ambiguous trade terms ------------------------------------------------
217
+
218
+ [trade_terms.absolute_humidity]
219
+ term = "absolute humidity"
220
+ language = "en"
221
+ matches = [
222
+ { target = "http://www.wikidata.org/entity/Q1048298", relation = "close", verified = 2026-10-14 },
223
+ ]
224
+
225
+ [[trade_terms.absolute_humidity.meanings]]
226
+ community = "meteorology, physics"
227
+ kind = "MassConcentrationOfWaterVapour"
228
+ definition = "Mass of water vapour per volume of moist air."
229
+ sources = ["ams_glossary"]
230
+
231
+ [[trade_terms.absolute_humidity.meanings]]
232
+ community = "chemical engineering, HVAC"
233
+ kind = "MassRatioOfWaterVapourToDryGas"
234
+ definition = "Mass of water vapour per mass of dry air."
235
+ sources = ["cengel_boles"]
236
+
237
+ # --- Temperature scales ---------------------------------------------------
238
+
239
+ [temperature_scales.its90]
240
+ label = "International Temperature Scale of 1990 (ITS-90)"
241
+ reference = "preston_thomas1990"
242
+
243
+ [temperature_scales.ipts68]
244
+ label = "International Practical Temperature Scale of 1968 (IPTS-68)"
245
+ reference = "preston_thomas1990"
246
+ # Table 6 of the ITS-90 text: [t90 / degC, (t90 - t68) / K].
247
+ differences = [
248
+ [-190.0, 0.008],
249
+ [-180.0, 0.008],
250
+ [-170.0, 0.010],
251
+ [-160.0, 0.012],
252
+ [-150.0, 0.013],
253
+ [-140.0, 0.014],
254
+ [-130.0, 0.014],
255
+ [-120.0, 0.014],
256
+ [-110.0, 0.013],
257
+ [-100.0, 0.013],
258
+ [-90.0, 0.012],
259
+ [-80.0, 0.012],
260
+ [-70.0, 0.011],
261
+ [-60.0, 0.010],
262
+ [-50.0, 0.009],
263
+ [-40.0, 0.008],
264
+ [-30.0, 0.006],
265
+ [-20.0, 0.004],
266
+ [-10.0, 0.002],
267
+ [0.0, 0.000],
268
+ [10.0, -0.002],
269
+ [20.0, -0.005],
270
+ [30.0, -0.007],
271
+ [40.0, -0.010],
272
+ [50.0, -0.013],
273
+ [60.0, -0.016],
274
+ [70.0, -0.018],
275
+ [80.0, -0.021],
276
+ [90.0, -0.024],
277
+ [100.0, -0.026],
278
+ [110.0, -0.028],
279
+ [120.0, -0.030],
280
+ [130.0, -0.032],
281
+ [140.0, -0.034],
282
+ [150.0, -0.036],
283
+ [160.0, -0.037],
284
+ [170.0, -0.038],
285
+ [180.0, -0.039],
286
+ [190.0, -0.039],
287
+ [200.0, -0.040],
288
+ [210.0, -0.040],
289
+ [220.0, -0.040],
290
+ [230.0, -0.040],
291
+ [240.0, -0.040],
292
+ [250.0, -0.040],
293
+ [260.0, -0.040],
294
+ [270.0, -0.039],
295
+ [280.0, -0.039],
296
+ [290.0, -0.039],
297
+ [300.0, -0.039],
298
+ [310.0, -0.039],
299
+ [320.0, -0.039],
300
+ [330.0, -0.040],
301
+ [340.0, -0.040],
302
+ [350.0, -0.041],
303
+ [360.0, -0.042],
304
+ [370.0, -0.043],
305
+ [380.0, -0.045],
306
+ [390.0, -0.046],
307
+ ]
308
+
309
+ # --- Formulations ---------------------------------------------------------
310
+
311
+ [formulations.sonntag1990_magnus]
312
+ label = "Magnus form, Sonntag (1990) coefficients"
313
+ expression = "C * exp(A * t / (B + t))"
314
+ fixed_units = true
315
+ references = ["sonntag1990", "wmo2024", "alduchov_eskridge1996"]
316
+ note = "Coefficients adopted by the WMO guide and quoted as SA90 by Alduchov and Eskridge (1996, Table II), who find a maximum relative error of 0.597 % against GG46, WE76 and SO90 between -40 and 50 degC (Table III). Not to be confused with Sonntag's own formulation (sonntag1990)."
317
+ output = { identifier = "e_s", kind = "SaturationVapourPressureOverWater", unit = "HectoPA", description = "Saturation vapour pressure over water" }
318
+ inputs = [
319
+ { identifier = "t", kind = "CelsiusTemperature", unit = "DEG_C", description = "Celsius temperature", temperature_scale = "its90", scale_basis = "stated" },
320
+ ]
321
+ coefficients = { A = 17.62, B = 243.12, C = 6.112 }
322
+
323
+ [[formulations.sonntag1990_magnus.domains]]
324
+ basis = "stated"
325
+ bounds = { t = [-45.0, 60.0] }
326
+ criterion = "Uncertainty within 0.6 % (k=2), as quoted by the WMO guide."
327
+ reference = "wmo2024"
328
+
329
+ [formulations.mass_concentration_ideal_gas]
330
+ label = "Mass concentration of water vapour, ideal gas law"
331
+ expression = "RH * e_s / (R_v * T)"
332
+ fixed_units = false
333
+ references = ["iapws95"]
334
+ note = "Water vapour treated as an ideal gas; e_s must be taken at the temperature T."
335
+ output = { identifier = "rho_v", kind = "MassConcentrationOfWaterVapour", unit = "KiloGM-PER-M3", description = "Mass concentration of water vapour (absolute humidity, meteorological sense)" }
336
+ inputs = [
337
+ { identifier = "RH", kind = "RelativeHumidity", unit = "UNITLESS", description = "Relative humidity" },
338
+ { identifier = "e_s", kind = "SaturationVapourPressureOverWater", unit = "PA", description = "Saturation vapour pressure over water at T" },
339
+ { identifier = "T", kind = "ThermodynamicTemperature", unit = "K", description = "Thermodynamic temperature" },
340
+ ]
341
+ constants = ["R_v_iapws95"]
342
+
343
+ [formulations.iapws_sr1_86]
344
+ label = "IAPWS SR1-86(1992), Wagner and Pruß equation"
345
+ expression = "p_c * exp(T_c / T * (a1 * (1 - T / T_c) + a2 * (1 - T / T_c) ** 1.5 + a3 * (1 - T / T_c) ** 3 + a4 * (1 - T / T_c) ** 3.5 + a5 * (1 - T / T_c) ** 4 + a6 * (1 - T / T_c) ** 7.5))"
346
+ fixed_units = true
347
+ references = ["iapws_sr1_86", "wagner_pruss1993"]
348
+ note = "Reference formulation for comparisons. Reproduces Table 1 of the release: 611.657 Pa at 273.16 K, 101325 Pa at 373.1243 K."
349
+ output = { identifier = "e_s", kind = "SaturationVapourPressureOverWater", unit = "PA", description = "Saturation vapour pressure over water" }
350
+ inputs = [
351
+ { identifier = "T", kind = "ThermodynamicTemperature", unit = "K", description = "Thermodynamic temperature (ITS-90)", temperature_scale = "its90", scale_basis = "stated" },
352
+ ]
353
+
354
+ [formulations.iapws_sr1_86.coefficients]
355
+ T_c = { value = 647.096, unit = "K", note = "Critical temperature" }
356
+ p_c = { value = 22.064e6, unit = "PA", note = "Critical pressure" }
357
+ a1 = -7.85951783
358
+ a2 = 1.84408259
359
+ a3 = -11.7866497
360
+ a4 = 22.6807411
361
+ a5 = -15.9618719
362
+ a6 = 1.80122502
363
+
364
+ [[formulations.iapws_sr1_86.domains]]
365
+ basis = "stated"
366
+ bounds = { T = [273.16, 647.096] }
367
+ criterion = "Vapour-liquid equilibrium from the triple point to the critical point, endorsed by IAPWS (section 6)."
368
+ reference = "iapws_sr1_86"
369
+
370
+ [formulations.sonntag1990]
371
+ label = "Sonntag (1990) formulation over water (SO90)"
372
+ expression = "exp(a0 / T + a1 + a2 * T + a3 * T ** 2 + a4 * ln(T))"
373
+ fixed_units = true
374
+ references = ["sonntag1990", "alduchov_eskridge1996", "voemel_vp"]
375
+ note = "As quoted by Alduchov and Eskridge (1996, equation 7); T on ITS-90. Vömel gives the same coefficients under Sonntag (1994): the year differs between secondary sources. Range not read in the original."
376
+ output = { identifier = "e_s", kind = "SaturationVapourPressureOverWater", unit = "HectoPA", description = "Saturation vapour pressure over water" }
377
+ inputs = [
378
+ { identifier = "T", kind = "ThermodynamicTemperature", unit = "K", description = "Thermodynamic temperature (ITS-90)", temperature_scale = "its90", scale_basis = "stated" },
379
+ ]
380
+ coefficients = { a0 = -6096.9385, a1 = 16.635794, a2 = -2.711193e-2, a3 = 1.673952e-5, a4 = 2.433502 }
381
+
382
+ [formulations.alduchov_eskridge1996]
383
+ label = "Magnus form, Alduchov and Eskridge (1996) AEKR coefficients"
384
+ expression = "C * exp(A * t / (B + t))"
385
+ fixed_units = true
386
+ references = ["alduchov_eskridge1996"]
387
+ note = "Fitted to three formulations on different temperature scales (GG46, WE76, SO90): no scale is assigned."
388
+ output = { identifier = "e_s", kind = "SaturationVapourPressureOverWater", unit = "HectoPA", description = "Saturation vapour pressure over water" }
389
+ inputs = [
390
+ { identifier = "t", kind = "CelsiusTemperature", unit = "DEG_C", description = "Celsius temperature" },
391
+ ]
392
+ coefficients = { A = 17.625, B = 243.04, C = 6.1094 }
393
+
394
+ [[formulations.alduchov_eskridge1996.domains]]
395
+ basis = "stated"
396
+ bounds = { t = [-40.0, 50.0] }
397
+ criterion = "Maximum relative error 0.384 % against GG46, WE76 and SO90 (Table III)."
398
+ reference = "alduchov_eskridge1996"
399
+
400
+ [formulations.tetens1930]
401
+ label = "Tetens (1930), as quoted by Alduchov and Eskridge (1996)"
402
+ expression = "C * 10 ** (A * t / (B + t))"
403
+ fixed_units = true
404
+ references = ["tetens1930", "alduchov_eskridge1996"]
405
+ note = "Base-10 form (TE30). Maximum relative error 3.214 % against GG46, WE76 and SO90 between -40 and 50 degC (Alduchov and Eskridge 1996, Table III). The constant C differs between secondary sources (see the reference)."
406
+ output = { identifier = "e_s", kind = "SaturationVapourPressureOverWater", unit = "HectoPA", description = "Saturation vapour pressure over water" }
407
+ inputs = [
408
+ { identifier = "t", kind = "CelsiusTemperature", unit = "DEG_C", description = "Celsius temperature" },
409
+ ]
410
+ coefficients = { A = 7.5, B = 237.3, C = 6.11 }
411
+
412
+ [formulations.buck1981_magnus]
413
+ label = "Magnus form, Buck (1981) coefficients (BU81)"
414
+ expression = "C * exp(A * t / (B + t))"
415
+ fixed_units = true
416
+ references = ["buck1981", "alduchov_eskridge1996", "voemel_vp"]
417
+ note = "Maximum relative error 1.458 % against GG46, WE76 and SO90 between -40 and 50 degC (Alduchov and Eskridge 1996, Table III)."
418
+ output = { identifier = "e_s", kind = "SaturationVapourPressureOverWater", unit = "HectoPA", description = "Saturation vapour pressure over water" }
419
+ inputs = [
420
+ { identifier = "t", kind = "CelsiusTemperature", unit = "DEG_C", description = "Celsius temperature", temperature_scale = "ipts68", scale_basis = "inferred-from-date" },
421
+ ]
422
+ coefficients = { A = 17.502, B = 240.97, C = 6.1121 }
423
+
424
+ [formulations.buck1981]
425
+ label = "Buck (1981) equation (BU-2)"
426
+ expression = "C * exp(t * (A - t / D) / (t + B))"
427
+ fixed_units = true
428
+ references = ["buck1981", "alduchov_eskridge1996"]
429
+ note = "Maximum relative error 0.493 % against GG46, WE76 and SO90 between -40 and 50 degC (Alduchov and Eskridge 1996, Table III)."
430
+ output = { identifier = "e_s", kind = "SaturationVapourPressureOverWater", unit = "HectoPA", description = "Saturation vapour pressure over water" }
431
+ inputs = [
432
+ { identifier = "t", kind = "CelsiusTemperature", unit = "DEG_C", description = "Celsius temperature", temperature_scale = "ipts68", scale_basis = "inferred-from-date" },
433
+ ]
434
+ coefficients = { A = 18.729, B = 257.87, C = 6.1121, D = 227.3 }
435
+
436
+ [formulations.hyland_wexler1983]
437
+ label = "Hyland and Wexler (1983) formulation over water"
438
+ expression = "exp(C8 / T + C9 + C10 * T + C11 * T ** 2 + C12 * T ** 3 + C13 * ln(T))"
439
+ fixed_units = true
440
+ references = ["hyland_wexler1983", "ashrae2017", "psychrolib", "voemel_vp"]
441
+ note = "ASHRAE Handbook - Fundamentals (2017), chapter 1, equation 6, through PsychroLib; same coefficients in Vömel. Range not read in the original. Temperature scale ITS-90, inferred from numbers: published in 1983 (IPTS-68 era), but these coefficients agree with IAPWS (ITS-90) within 0.022 % from 0 to 100 degC without conversion and drift to 0.09 % with the IPTS-68 conversion, which suggests ASHRAE moved them to ITS-90; to confirm in ASHRAE."
442
+ output = { identifier = "e_s", kind = "SaturationVapourPressureOverWater", unit = "PA", description = "Saturation vapour pressure over water" }
443
+ inputs = [
444
+ { identifier = "T", kind = "ThermodynamicTemperature", unit = "K", description = "Thermodynamic temperature", temperature_scale = "its90", scale_basis = "inferred-from-numbers" },
445
+ ]
446
+ coefficients = { C8 = -5.8002206e3, C9 = 1.3914993, C10 = -4.8640239e-2, C11 = 4.1764768e-5, C12 = -1.4452093e-8, C13 = 6.5459673 }
447
+
448
+ [formulations.bolton1980]
449
+ label = "Magnus form, Bolton (1980) coefficients"
450
+ expression = "C * exp(A * t / (t + B))"
451
+ fixed_units = true
452
+ references = ["bolton1980", "voemel_vp"]
453
+ output = { identifier = "e_s", kind = "SaturationVapourPressureOverWater", unit = "HectoPA", description = "Saturation vapour pressure over water" }
454
+ inputs = [
455
+ { identifier = "t", kind = "CelsiusTemperature", unit = "DEG_C", description = "Celsius temperature", temperature_scale = "ipts68", scale_basis = "inferred-from-date" },
456
+ ]
457
+ coefficients = { A = 17.67, B = 243.5, C = 6.112 }
458
+
459
+ [formulations.murray1967]
460
+ label = "Magnus-Tetens form, Murray (1967)"
461
+ expression = "C * exp(A * (T - T_0) / (T - B))"
462
+ fixed_units = true
463
+ references = ["murray1967", "voemel_vp"]
464
+ note = "Written in kelvin with an offset of 273.16 K (the triple point), not 273.15 K: at the triple point it gives C exactly."
465
+ output = { identifier = "e_s", kind = "SaturationVapourPressureOverWater", unit = "HectoPA", description = "Saturation vapour pressure over water" }
466
+ inputs = [
467
+ { identifier = "T", kind = "ThermodynamicTemperature", unit = "K", description = "Thermodynamic temperature" },
468
+ ]
469
+
470
+ [formulations.murray1967.coefficients]
471
+ A = 17.269388
472
+ B = { value = 35.86, unit = "K" }
473
+ C = { value = 6.1078, unit = "HectoPA" }
474
+ T_0 = { value = 273.16, unit = "K", note = "Triple point of water" }
475
+
476
+ [formulations.buck1996]
477
+ label = "Buck (1996) equation"
478
+ expression = "C * exp((A - t / D) * t / (B + t))"
479
+ fixed_units = true
480
+ references = ["buck1996", "voemel_vp"]
481
+ note = "Update of the Buck (1981) equation (buck1981), with different coefficients."
482
+ output = { identifier = "e_s", kind = "SaturationVapourPressureOverWater", unit = "HectoPA", description = "Saturation vapour pressure over water" }
483
+ inputs = [
484
+ { identifier = "t", kind = "CelsiusTemperature", unit = "DEG_C", description = "Celsius temperature", temperature_scale = "its90", scale_basis = "inferred-from-date" },
485
+ ]
486
+ coefficients = { A = 18.678, B = 257.14, C = 6.1121, D = 234.5 }
487
+
488
+ [formulations.goff_gratch1946]
489
+ label = "Goff-Gratch equation over water (Smithsonian Tables form)"
490
+ expression = "10 ** (a1 * (T_s / T - 1) + a2 * log10(T_s / T) + a3 * (10 ** (a4 * (1 - T / T_s)) - 1) + a5 * (10 ** (a6 * (T_s / T - 1)) - 1) + log10(e_st))"
491
+ fixed_units = true
492
+ references = ["goff_gratch1946", "smithsonian1984", "voemel_vp"]
493
+ note = "Referred to the steam point T_s = 373.16 K (as in Vömel and in Alduchov and Eskridge 1996, who call the original paper GG45). Generally considered the reference equation in meteorology (Vömel)."
494
+ output = { identifier = "e_s", kind = "SaturationVapourPressureOverWater", unit = "HectoPA", description = "Saturation vapour pressure over water" }
495
+ inputs = [
496
+ { identifier = "T", kind = "ThermodynamicTemperature", unit = "K", description = "Thermodynamic temperature" },
497
+ ]
498
+
499
+ [formulations.goff_gratch1946.coefficients]
500
+ a1 = -7.90298
501
+ a2 = 5.02808
502
+ a3 = -1.3816e-7
503
+ a4 = 11.344
504
+ a5 = 8.1328e-3
505
+ a6 = -3.49149
506
+ T_s = { value = 373.16, unit = "K", note = "Steam point" }
507
+ e_st = { value = 1013.246, unit = "HectoPA", note = "Saturation pressure at the steam point" }
508
+
509
+ [[formulations.goff_gratch1946.domains]]
510
+ basis = "stated"
511
+ bounds = { T = [223.15, 375.15] }
512
+ criterion = "-50 to 102 degC, range of the equation over liquid water according to Gibbins (1990), as quoted by Vömel."
513
+ reference = "gibbins1990"
514
+
515
+ [formulations.goff1957]
516
+ label = "Goff (1957) equation over water, triple point form (WMO)"
517
+ expression = "10 ** (b1 * (1 - T_1 / T) + b2 * log10(T / T_1) + b3 * (1 - 10 ** (b4 * (T / T_1 - 1))) + b5 * (10 ** (b6 * (1 - T_1 / T)) - 1) + b7)"
518
+ fixed_units = true
519
+ references = ["goff1957", "voemel_vp", "alduchov_eskridge1996"]
520
+ note = "Attribution differs between secondary sources: Vömel calls it Goff (1957), recommended by WMO; Alduchov and Eskridge (1996, equation 3) call it GG46 (Goff and Gratch 1946), recommended by WMO in 1966, and write ln where the numbers require log10."
521
+ output = { identifier = "e_s", kind = "SaturationVapourPressureOverWater", unit = "HectoPA", description = "Saturation vapour pressure over water" }
522
+ inputs = [
523
+ { identifier = "T", kind = "ThermodynamicTemperature", unit = "K", description = "Thermodynamic temperature" },
524
+ ]
525
+
526
+ [formulations.goff1957.coefficients]
527
+ b1 = 10.79574
528
+ b2 = -5.02800
529
+ b3 = 1.50475e-4
530
+ b4 = -8.2969
531
+ b5 = 0.42873e-3
532
+ b6 = 4.76955
533
+ b7 = 0.78614
534
+ T_1 = { value = 273.16, unit = "K", note = "Triple point of water" }