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.
- nomogram/__init__.py +17 -0
- nomogram/catalog.py +533 -0
- nomogram/comparison.py +305 -0
- nomogram/data/NOTICE.md +25 -0
- nomogram/data/catalog/humidity.toml +534 -0
- nomogram/data/semantics.json +464 -0
- nomogram/expression.py +232 -0
- nomogram/model.py +594 -0
- nomogram/plot.py +176 -0
- nomogram/py.typed +0 -0
- nomogram/semantics.py +333 -0
- nomogram/units.py +118 -0
- nomogram-0.1.0.dist-info/METADATA +125 -0
- nomogram-0.1.0.dist-info/RECORD +17 -0
- nomogram-0.1.0.dist-info/WHEEL +4 -0
- nomogram-0.1.0.dist-info/licenses/LICENSE +28 -0
- nomogram-0.1.0.dist-info/licenses/src/nomogram/data/NOTICE.md +25 -0
|
@@ -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" }
|