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

View file

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

View file

@ -1,15 +1,15 @@
(ns ^{:doc "Central resolver function for humidity calculations"
:author "simon"}
humidity.core
(:require [humidity.absolute :refer [abs-humidity]]
[humidity.actual-vp :refer [actual-vapour-pressure-fn]]
(:require [humidity.absolute-humidity :refer [absolute-humidity-fn]]
[humidity.actual-vapour-pressure :refer [actual-vapour-pressure-fn]]
[humidity.constants :refer [celsius-offset Pa]]
[humidity.dew-point :refer [dew-point-celsius-fn]]
[humidity.relative :refer [rel-humidity]]
[humidity.saturation-vp :refer [saturation-vp]]
[humidity.dew-point-celsius :refer [dew-point-celsius-fn]]
[humidity.relative-humidity :refer [relative-humidity-fn]]
[humidity.saturation-vapour-pressure :refer [saturation-vapour-pressure-fn]]
[humidity.utils :refer [?assoc]]
[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
relative-humidity saturation-vapour-pressure temperature
temperature-celsius temperature-kelvin volume
wet-bulb-temperature] :as packet}]
wet-bulb-temperature-celsius] :as packet}]
(println packet)
(if temperature (resolve-humidity
(assoc (dissoc packet :temperature)
:temperature-celsius temperature))
(?assoc packet
(?assoc (into (sorted-map) packet)
:absolute-humidity (when-not absolute-humidity
(abs-humidity packet))
(absolute-humidity-fn packet))
:actual-vapour-pressure (when-not actual-vapour-pressure
(actual-vapour-pressure-fn packet))
:dew-point-celsius (when-not dew-point-celsius
@ -58,9 +58,9 @@
(float (/ pressure-pascals 100))
(float (/ Pa 100))))
:relative-humidity (when-not relative-humidity
(rel-humidity packet))
(relative-humidity-fn packet))
:saturation-vapour-pressure (when-not saturation-vapour-pressure
(saturation-vp packet))
(saturation-vapour-pressure-fn packet))
:temperature-celsius (when
(and temperature-kelvin
(not temperature-celsius))
@ -70,8 +70,8 @@
(not temperature-kelvin))
(+ temperature-celsius celsius-offset))
:volume (when-not volume (volume-fn packet))
:wet-bulb-temperature (when-not wet-bulb-temperature
(wb/wet-bulb-temperature packet)))))
:wet-bulb-temperature-celsius (when-not wet-bulb-temperature-celsius
(wet-bulb-temperature-celsius-fn packet)))))
(defn resolution
"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"
"https://en.wikipedia.org/wiki/Dew_point#Calculating_the_dew_point"]
: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]]
[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/"
: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]]
[humidity.utils :refer [expt]]))
@ -63,7 +63,7 @@
;; relative-humidity = -------------------------------------------
;; 1000 x saturation-pressure
(defn rel-humidity
(defn relative-humidity-fn
"Returns relative humidity (as a percentage, 0...100) given values for dew
point and temperature in Celsius or for absolute humidity, saturation
vapour pressure, temperature in Kelvin."

View file

@ -1,7 +1,7 @@
(ns ^{:doc "Saturation vapour pressure function"
:authority "https://en.wikipedia.org/wiki/Tetens_equation"
:author "simon"}
humidity.saturation-vp
humidity.saturation-vapour-pressure
(:require [clojure.math :refer [pow]]
[humidity.constants :refer [celsius-offset e]]))
@ -38,7 +38,7 @@
;; constant 100 to convert to Pascals
(* 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,
given the data in this packet."
[packet]

View file

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

View file

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

View file

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

View file

@ -1,7 +1,7 @@
(ns humidity.dew-point-test
(:require [clojure.test :refer [deftest is testing]]
[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

View file

@ -1,7 +1,7 @@
(ns humidity.relative-test
(:require [clojure.test :refer [deftest is testing]]
[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"
(let [min-expected 99
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))))
(testing "Online examples"
(let [min-expected 99
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)))))

View file

@ -1,6 +1,6 @@
(ns humidity.saturation-vp-test
(: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"
(let [min-expected 5622
max-expected 5629
actual (saturation-vp {:temperature-celsius 35})]
actual (saturation-vapour-pressure-fn {:temperature-celsius 35})]
(is (< min-expected actual max-expected)))))

View file

@ -1,6 +1,6 @@
(ns humidity.wet-bulb-test
(: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
temperature 20
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))
(is (< (abs (- expected actual)) 0.001))))
@ -37,7 +37,7 @@
max-expected 33
temperature 37
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))
(is (< min-expected actual max-expected)))
@ -45,7 +45,7 @@
max-expected 36
temperature 39.7
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))
(is (< min-expected actual max-expected)))
@ -53,7 +53,7 @@
max-expected 34
temperature 40
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))
(is (< min-expected actual max-expected)))
@ -61,6 +61,6 @@
max-expected 35
temperature 51
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))
(is (< min-expected actual max-expected)))))