Now with (apparently) working absolute humidity

This commit is contained in:
Simon Brooke 2026-08-11 10:41:58 +01:00
parent 3874a37a86
commit ccfc47eb79
3 changed files with 9 additions and 23 deletions

View file

@ -1,3 +1,5 @@
# humidity
Functions to compute relative humidity, absolute humidity, wet bulb temperature, given pressure and absolute temperature.
Functions to compute relative humidity, absolute humidity, wet bulb
temperature, and other values related to humidity of air, given
partial data

View file

@ -8,7 +8,7 @@
(defn resolve-humidity
"Resolve humidity equations given the data in this packet."
[& {:keys [temperature temperature-celsius temperature-kelvin relative-humidity
pressure-kilopascals pressure-millibars] :as packet}]
pressure-kilopascals pressure-millibars saturation-pressure] :as packet}]
(println packet)
(if temperature (resolve-humidity (assoc (dissoc packet :temperature) :temperature-celsius temperature))
(?assoc packet
@ -21,8 +21,9 @@
:wet-bulb-temperature (when
(and temperature-celsius relative-humidity)
(wet-bulb-temperature temperature-celsius relative-humidity))
:absolute-humidity (when (and temperature-celsius relative-humidity)
(abs-humidity temperature-celsius relative-humidity))
:absolute-humidity (abs-humidity :relative-humidity relative-humidity
:saturation-pressure saturation-pressure
:temperature-kelvin temperature-kelvin)
:pressure-kilopascals (when-not pressure-kilopascals
(if pressure-millibars (/ pressure-millibars 10) 100))
:pressure-millibars (when-not pressure-millibars
@ -30,15 +31,6 @@
:saturation-pressure (saturation-vp/saturation-vp packet))))
;; the example in the paper gives this as 13.7
(wet-bulb-temperature 20 50)
;; by definition, this must equal 35
(wet-bulb-temperature 35 100)
;; from published graphs, I interpolatethis in the range 33...35
(wet-bulb-temperature 40 70)
;; (resolve-humidity {:relative-humidity 100 :temperature 35})
(defn resolution
"Repeatedly run `resolve-humidity`, q.v., until we can infer no further
information."

View file

@ -1,14 +1,6 @@
(ns ^{:doc "Utility functions for humidity calculation"} humidity.utils
(:require [clojure.math :refer [pow]]))
(def ^:const celsius-offset
"Value of 0° Celsius in ° Kelvin"
273.15)
(def ^:const e
"Base of natural logarithms"
2.71828)
(defmacro expt
"Clojure.math `pow` function does not allow ratios as exponents;