Regularised names of namespaces, variables and functions. All tests pass.

This commit is contained in:
Simon Brooke 2026-08-14 10:43:30 +01:00
parent 4c462aa508
commit 8a7202f57d
13 changed files with 39 additions and 38 deletions

View file

@ -3,7 +3,7 @@
in Pascals, and relative humidity as a percentage (0...100)." in Pascals, and relative humidity as a percentage (0...100)."
:authority "https://carnotcycle.wordpress.com/2012/08/04/how-to-convert-relative-humidity-to-absolute-humidity/" :authority "https://carnotcycle.wordpress.com/2012/08/04/how-to-convert-relative-humidity-to-absolute-humidity/"
:author "simon"} :author "simon"}
humidity.absolute humidity.absolute-humidity
(:require (:require
[humidity.constants :refer [Rw]])) [humidity.constants :refer [Rw]]))
@ -40,7 +40,7 @@
(def C magic-numbers) (def C magic-numbers)
(defn abs-humidity (defn absolute-humidity-fn
"calculate and return absolute humidity in grammes per metre<sup>3</sup> "calculate and return absolute humidity in grammes per metre<sup>3</sup>
given temperature in &deg; K, saturation vapour pressure in Pascals, and given temperature in &deg; K, saturation vapour pressure in Pascals, and
relative humidity as a percentage (0...100)." relative humidity as a percentage (0...100)."

View file

@ -1,7 +1,7 @@
(ns ^{:author "simon" (ns ^{:author "simon"
:authority "https://www.weather.gov/media/epz/wxcalc/vaporPressure.pdf" :authority "https://www.weather.gov/media/epz/wxcalc/vaporPressure.pdf"
:doc "Compute actual vapour pressure."} :doc "Compute actual vapour pressure."}
humidity.actual-vp humidity.actual-vapour-pressure
(:require [humidity.utils :refer [expt]])) (:require [humidity.utils :refer [expt]]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

View file

@ -1,15 +1,15 @@
(ns ^{:doc "Central resolver function for humidity calculations" (ns ^{:doc "Central resolver function for humidity calculations"
:author "simon"} :author "simon"}
humidity.core humidity.core
(:require [humidity.absolute :refer [abs-humidity]] (:require [humidity.absolute-humidity :refer [absolute-humidity-fn]]
[humidity.actual-vp :refer [actual-vapour-pressure-fn]] [humidity.actual-vapour-pressure :refer [actual-vapour-pressure-fn]]
[humidity.constants :refer [celsius-offset Pa]] [humidity.constants :refer [celsius-offset Pa]]
[humidity.dew-point :refer [dew-point-celsius-fn]] [humidity.dew-point-celsius :refer [dew-point-celsius-fn]]
[humidity.relative :refer [rel-humidity]] [humidity.relative-humidity :refer [relative-humidity-fn]]
[humidity.saturation-vp :refer [saturation-vp]] [humidity.saturation-vapour-pressure :refer [saturation-vapour-pressure-fn]]
[humidity.utils :refer [?assoc]] [humidity.utils :refer [?assoc]]
[humidity.volume :refer [volume-fn]] [humidity.volume :refer [volume-fn]]
[humidity.wet-bulb :as wb])) [humidity.wet-bulb-temperature-celsius :refer [wet-bulb-temperature-celsius-fn]]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; ;;;
@ -38,14 +38,14 @@
pressure-pascals pressure-millibars pressure-pascals pressure-millibars
relative-humidity saturation-vapour-pressure temperature relative-humidity saturation-vapour-pressure temperature
temperature-celsius temperature-kelvin volume temperature-celsius temperature-kelvin volume
wet-bulb-temperature] :as packet}] wet-bulb-temperature-celsius] :as packet}]
(println packet) (println packet)
(if temperature (resolve-humidity (if temperature (resolve-humidity
(assoc (dissoc packet :temperature) (assoc (dissoc packet :temperature)
:temperature-celsius temperature)) :temperature-celsius temperature))
(?assoc packet (?assoc (into (sorted-map) packet)
:absolute-humidity (when-not absolute-humidity :absolute-humidity (when-not absolute-humidity
(abs-humidity packet)) (absolute-humidity-fn packet))
:actual-vapour-pressure (when-not actual-vapour-pressure :actual-vapour-pressure (when-not actual-vapour-pressure
(actual-vapour-pressure-fn packet)) (actual-vapour-pressure-fn packet))
:dew-point-celsius (when-not dew-point-celsius :dew-point-celsius (when-not dew-point-celsius
@ -58,9 +58,9 @@
(float (/ pressure-pascals 100)) (float (/ pressure-pascals 100))
(float (/ Pa 100)))) (float (/ Pa 100))))
:relative-humidity (when-not relative-humidity :relative-humidity (when-not relative-humidity
(rel-humidity packet)) (relative-humidity-fn packet))
:saturation-vapour-pressure (when-not saturation-vapour-pressure :saturation-vapour-pressure (when-not saturation-vapour-pressure
(saturation-vp packet)) (saturation-vapour-pressure-fn packet))
:temperature-celsius (when :temperature-celsius (when
(and temperature-kelvin (and temperature-kelvin
(not temperature-celsius)) (not temperature-celsius))
@ -70,8 +70,8 @@
(not temperature-kelvin)) (not temperature-kelvin))
(+ temperature-celsius celsius-offset)) (+ temperature-celsius celsius-offset))
:volume (when-not volume (volume-fn packet)) :volume (when-not volume (volume-fn packet))
:wet-bulb-temperature (when-not wet-bulb-temperature :wet-bulb-temperature-celsius (when-not wet-bulb-temperature-celsius
(wb/wet-bulb-temperature packet))))) (wet-bulb-temperature-celsius-fn packet)))))
(defn resolution (defn resolution
"Repeatedly run `resolve-humidity`, q.v., until we can infer no further "Repeatedly run `resolve-humidity`, q.v., until we can infer no further

View file

@ -2,7 +2,8 @@
:authority ["https://www.omnicalculator.com/physics/dew-point#what-is-dew-point-dew-point-definition" :authority ["https://www.omnicalculator.com/physics/dew-point#what-is-dew-point-dew-point-definition"
"https://en.wikipedia.org/wiki/Dew_point#Calculating_the_dew_point"] "https://en.wikipedia.org/wiki/Dew_point#Calculating_the_dew_point"]
:doc "Function to compute the dew point, in &deg; Celsius, given temperature :doc "Function to compute the dew point, in &deg; Celsius, given temperature
in &deg; Celsius and relative humidity percentage."} humidity.dew-point in &deg; Celsius and relative humidity percentage."}
humidity.dew-point-celsius
(:require [clojure.math :refer [log]] (:require [clojure.math :refer [log]]
[humidity.constants :refer [magnus-coefficients]])) [humidity.constants :refer [magnus-coefficients]]))

View file

@ -1,6 +1,6 @@
(ns ^{:authority "https://journals.ametsoc.org/view/journals/apme/35/4/1520-0450_1996_035_0601_imfaos_2_0_co_2.xml/" (ns ^{:authority "https://journals.ametsoc.org/view/journals/apme/35/4/1520-0450_1996_035_0601_imfaos_2_0_co_2.xml/"
:author "simon" :author "simon"
:doc "Function to return relative humidity."} humidity.relative :doc "Function to return relative humidity."} humidity.relative-humidity
(:require [humidity.constants :refer [e Rw]] (:require [humidity.constants :refer [e Rw]]
[humidity.utils :refer [expt]])) [humidity.utils :refer [expt]]))
@ -63,7 +63,7 @@
;; relative-humidity = ------------------------------------------- ;; relative-humidity = -------------------------------------------
;; 1000 x saturation-pressure ;; 1000 x saturation-pressure
(defn rel-humidity (defn relative-humidity-fn
"Returns relative humidity (as a percentage, 0...100) given values for dew "Returns relative humidity (as a percentage, 0...100) given values for dew
point and temperature in Celsius or for absolute humidity, saturation point and temperature in Celsius or for absolute humidity, saturation
vapour pressure, temperature in Kelvin." vapour pressure, temperature in Kelvin."

View file

@ -1,7 +1,7 @@
(ns ^{:doc "Saturation vapour pressure function" (ns ^{:doc "Saturation vapour pressure function"
:authority "https://en.wikipedia.org/wiki/Tetens_equation" :authority "https://en.wikipedia.org/wiki/Tetens_equation"
:author "simon"} :author "simon"}
humidity.saturation-vp humidity.saturation-vapour-pressure
(:require [clojure.math :refer [pow]] (:require [clojure.math :refer [pow]]
[humidity.constants :refer [celsius-offset e]])) [humidity.constants :refer [celsius-offset e]]))
@ -38,7 +38,7 @@
;; constant 100 to convert to Pascals ;; constant 100 to convert to Pascals
(* a (pow e (/ (* b temperature-celsius) (+ c temperature-celsius)))))) (* a (pow e (/ (* b temperature-celsius) (+ c temperature-celsius))))))
(defn saturation-vp (defn saturation-vapour-pressure-fn
"Calculate and return saturation vapour pressure, is possible, "Calculate and return saturation vapour pressure, is possible,
given the data in this packet." given the data in this packet."
[packet] [packet]

View file

@ -1,7 +1,7 @@
(ns ^{:doc "Function to calculate wet bulb temperature (in &deg; C) given temperature in (ns ^{:doc "Function to calculate wet bulb temperature (in &deg; C) given temperature in
&deg; C and relative-humidity percentage (0...100)" &deg; C and relative-humidity percentage (0...100)"
:author "simon"} :author "simon"}
humidity.wet-bulb humidity.wet-bulb-temperature-celsius
(:require [clojure.math :refer [atan]] (:require [clojure.math :refer [atan]]
[humidity.utils :refer [expt]])) [humidity.utils :refer [expt]]))
@ -34,7 +34,7 @@
(def C magic-numbers) (def C magic-numbers)
(defn wet-bulb-temperature (defn wet-bulb-temperature-celsius-fn
"Returns wet bulb temperature (in &deg; C) given this `temperature` in "Returns wet bulb temperature (in &deg; C) given this `temperature` in
&deg; C and `relative-humidity` percentage (0...100)" &deg; C and `relative-humidity` percentage (0...100)"
[& {:keys [temperature-celsius relative-humidity]}] [& {:keys [temperature-celsius relative-humidity]}]

View file

@ -1,7 +1,7 @@
(ns humidity.absolute-test (ns humidity.absolute-test
(:require [clojure.test :refer [deftest is testing]] (:require [clojure.test :refer [deftest is testing]]
[humidity.constants :refer [celsius-offset]] [humidity.constants :refer [celsius-offset]]
[humidity.absolute :refer [abs-humidity]])) [humidity.absolute-humidity :refer [absolute-humidity-fn]]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; ;;;
;;; Copyright (C) 2026 Simon Brooke ;;; Copyright (C) 2026 Simon Brooke
@ -27,7 +27,7 @@
(testing "definitional" (testing "definitional"
(let [min-expected 39.58 (let [min-expected 39.58
max-expected 39.59 max-expected 39.59
actual (abs-humidity :relative-humidity 100 actual (absolute-humidity-fn :relative-humidity 100
:saturation-vapour-pressure 56.29 :saturation-vapour-pressure 56.29
:temperature-kelvin (+ 35 celsius-offset))] :temperature-kelvin (+ 35 celsius-offset))]
(is (< min-expected actual max-expected))))) (is (< min-expected actual max-expected)))))

View file

@ -36,7 +36,7 @@
:temperature-celsius 35, :temperature-celsius 35,
:temperature-kelvin 308.15, :temperature-kelvin 308.15,
:volume 1.1281347245103424, :volume 1.1281347245103424,
:wet-bulb-temperature 35.11625928298915} :wet-bulb-temperature-celsius 35.11625928298915}
packet {:relative-humidity 100 :temperature-celsius 35} packet {:relative-humidity 100 :temperature-celsius 35}
actual (resolution packet)] actual (resolution packet)]
(is (= actual expected)))) (is (= actual expected))))

View file

@ -1,7 +1,7 @@
(ns humidity.dew-point-test (ns humidity.dew-point-test
(:require [clojure.test :refer [deftest is testing]] (:require [clojure.test :refer [deftest is testing]]
[humidity.constants :refer [celsius-offset]] [humidity.constants :refer [celsius-offset]]
[humidity.dew-point :refer [dew-point-celsius-fn]])) [humidity.dew-point-celsius :refer [dew-point-celsius-fn]]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; ;;;
;;; Copyright (C) 2026 Simon Brooke ;;; Copyright (C) 2026 Simon Brooke

View file

@ -1,7 +1,7 @@
(ns humidity.relative-test (ns humidity.relative-test
(:require [clojure.test :refer [deftest is testing]] (:require [clojure.test :refer [deftest is testing]]
[humidity.constants :refer [celsius-offset]] [humidity.constants :refer [celsius-offset]]
[humidity.relative :refer [rel-humidity rel-humidity]])) [humidity.relative-humidity :refer [relative-humidity-fn relative-humidity-fn]]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; ;;;
@ -28,10 +28,10 @@
(testing "definitional" (testing "definitional"
(let [min-expected 99 (let [min-expected 99
max-expected 101 max-expected 101
actual (rel-humidity :absolute-humidity 3953.618 :saturation-vapour-pressure 5622.49 :temperature-kelvin (+ 35 celsius-offset))] actual (relative-humidity-fn :absolute-humidity 3953.618 :saturation-vapour-pressure 5622.49 :temperature-kelvin (+ 35 celsius-offset))]
(is (< min-expected actual max-expected)))) (is (< min-expected actual max-expected))))
(testing "Online examples" (testing "Online examples"
(let [min-expected 99 (let [min-expected 99
max-expected 101 max-expected 101
actual (rel-humidity :dew-point 35 :temperature-celsius 35)] actual (relative-humidity-fn :dew-point 35 :temperature-celsius 35)]
(is (< min-expected actual max-expected))))) (is (< min-expected actual max-expected)))))

View file

@ -1,6 +1,6 @@
(ns humidity.saturation-vp-test (ns humidity.saturation-vp-test
(:require [clojure.test :refer [deftest is testing]] (:require [clojure.test :refer [deftest is testing]]
[humidity.saturation-vp :refer [saturation-vp]])) [humidity.saturation-vapour-pressure :refer [saturation-vapour-pressure-fn]]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; ;;;
@ -27,5 +27,5 @@
(testing "from online sources" (testing "from online sources"
(let [min-expected 5622 (let [min-expected 5622
max-expected 5629 max-expected 5629
actual (saturation-vp {:temperature-celsius 35})] actual (saturation-vapour-pressure-fn {:temperature-celsius 35})]
(is (< min-expected actual max-expected))))) (is (< min-expected actual max-expected)))))

View file

@ -1,6 +1,6 @@
(ns humidity.wet-bulb-test (ns humidity.wet-bulb-test
(:require [clojure.test :refer [deftest is testing]] (:require [clojure.test :refer [deftest is testing]]
[humidity.wet-bulb :refer [wet-bulb-temperature]])) [humidity.wet-bulb-temperature-celsius :refer [wet-bulb-temperature-celsius-fn]]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; ;;;
@ -28,7 +28,7 @@
(let [expected 13.7 (let [expected 13.7
temperature 20 temperature 20
rel-humidity 50 rel-humidity 50
actual (wet-bulb-temperature :temperature-celsius temperature :relative-humidity rel-humidity)] actual (wet-bulb-temperature-celsius-fn :temperature-celsius temperature :relative-humidity rel-humidity)]
(println (format "Expected: %s; actual: %s" expected actual)) (println (format "Expected: %s; actual: %s" expected actual))
(is (< (abs (- expected actual)) 0.001)))) (is (< (abs (- expected actual)) 0.001))))
@ -37,7 +37,7 @@
max-expected 33 max-expected 33
temperature 37 temperature 37
rel-humidity 70 rel-humidity 70
actual (wet-bulb-temperature :temperature-celsius temperature :relative-humidity rel-humidity)] actual (wet-bulb-temperature-celsius-fn :temperature-celsius temperature :relative-humidity rel-humidity)]
(println (format "Expected: %s...%s; actual: %s" min-expected max-expected actual)) (println (format "Expected: %s...%s; actual: %s" min-expected max-expected actual))
(is (< min-expected actual max-expected))) (is (< min-expected actual max-expected)))
@ -45,7 +45,7 @@
max-expected 36 max-expected 36
temperature 39.7 temperature 39.7
rel-humidity 70 rel-humidity 70
actual (wet-bulb-temperature :temperature-celsius temperature :relative-humidity rel-humidity)] actual (wet-bulb-temperature-celsius-fn :temperature-celsius temperature :relative-humidity rel-humidity)]
(println (format "Expected: %s...%s; actual: %s" min-expected max-expected actual)) (println (format "Expected: %s...%s; actual: %s" min-expected max-expected actual))
(is (< min-expected actual max-expected))) (is (< min-expected actual max-expected)))
@ -53,7 +53,7 @@
max-expected 34 max-expected 34
temperature 40 temperature 40
rel-humidity 60 rel-humidity 60
actual (wet-bulb-temperature :temperature-celsius temperature :relative-humidity rel-humidity)] actual (wet-bulb-temperature-celsius-fn :temperature-celsius temperature :relative-humidity rel-humidity)]
(println (format "Expected: %s...%s; actual: %s" min-expected max-expected actual)) (println (format "Expected: %s...%s; actual: %s" min-expected max-expected actual))
(is (< min-expected actual max-expected))) (is (< min-expected actual max-expected)))
@ -61,6 +61,6 @@
max-expected 35 max-expected 35
temperature 51 temperature 51
rel-humidity 30 rel-humidity 30
actual (wet-bulb-temperature :temperature-celsius temperature :relative-humidity rel-humidity)] actual (wet-bulb-temperature-celsius-fn :temperature-celsius temperature :relative-humidity rel-humidity)]
(println (format "Expected: %s...%s; actual: %s" min-expected max-expected actual)) (println (format "Expected: %s...%s; actual: %s" min-expected max-expected actual))
(is (< min-expected actual max-expected))))) (is (< min-expected actual max-expected)))))