diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index f47be4f..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,19 +0,0 @@ -# humidity: Change Log - -## Releae 0.1.0 12th August 2026 - -Initial release. - -Computes: - -1. :absolute-humidity -2. :actual-vapour-pressure -3. :dew-point-celsius -4. :pressure-millibars -5. :pressure-pascals -6. :relative-humidity -7. :saturation-vapour-pressure -8. :temperature-celsius -9. :temperature-kelvin -10. :volume -11. :wet-bulb-temperature diff --git a/project.clj b/project.clj index e88fc90..b3bb11c 100644 --- a/project.clj +++ b/project.clj @@ -1,4 +1,4 @@ -(defproject humidity "0.1.1-SNAPSHOT" +(defproject humidity "0.1.0-SNAPSHOT" :cloverage {:output "docs/cloverage" :ns-exclude-regex [#"beowulf\.gendoc" #"beowulf\.scratch"]} :codox {:metadata {:doc "**TODO**: write docs" @@ -6,8 +6,6 @@ :output-path "docs/codox" :source-uri "https://github.com/simon-brooke/humidity/blob/master/{filepath}#L{line}"} :dependencies [[org.clojure/clojure "1.12.5"]] - :deploy-repositories [["releases" :clojars] - ["snapshots" :clojars]] :description "Functions to compute relative humidity, absolute humidity, wet bulb temperature, and other values related to humidity of air, given partial data." diff --git a/src/humidity/wet_bulb.clj b/src/humidity/wet_bulb.clj index 5d87968..c5ca18f 100644 --- a/src/humidity/wet_bulb.clj +++ b/src/humidity/wet_bulb.clj @@ -1,7 +1,7 @@ (ns ^{:doc "Function to calculate wet bulb temperature (in ° C) given temperature in ° C and relative-humidity percentage (0...100)" - :author "simon"} - humidity.wet-bulb + :author "simon"} + humidity.wet-bulb (:require [clojure.math :refer [atan]] [humidity.utils :refer [expt]])) @@ -25,6 +25,7 @@ ;;; USA. ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + (def ^:const magic-numbers "The magic numbers (empirical constants) from the derived expression. It bothers me that all these formulae depend on 'empirical constants', *and* @@ -37,13 +38,13 @@ (defn wet-bulb-temperature "Returns wet bulb temperature (in ° C) given this `temperature` in ° C and `relative-humidity` percentage (0...100)" - [& {:keys [temperature-celsius relative-humidity]}] + [&{:keys [temperature relative-humidity]}] (when - (and temperature-celsius relative-humidity) - (let [T temperature-celsius - RHP relative-humidity] - (+ (* T (atan (* (C 1) (expt (+ RHP (C 2)) 1/2)))) - (atan (+ T RHP)) - (- 0 (atan (- RHP (C 3)))) - (* (C 4) (expt RHP 3/2) (atan (* (C 5) RHP))) - (- 0 (C 6)))))) + (and temperature relative-humidity) + (let [T temperature + RHP relative-humidity] + (+ (* T (atan (* (C 1) (expt (+ RHP (C 2)) 1/2)))) + (atan (+ T RHP)) + (- 0 (atan (- RHP (C 3)))) + (* (C 4) (expt RHP 3/2) (atan (* (C 5) RHP))) + (- 0 (C 6)))))) diff --git a/test/humidity/core_test.clj b/test/humidity/core_test.clj index 505df11..34e24b9 100644 --- a/test/humidity/core_test.clj +++ b/test/humidity/core_test.clj @@ -27,16 +27,15 @@ (deftest resolution-test (testing "resolution") (let [expected {:absolute-humidity 3953.618101887827, - :actual-vapour-pressure 4765.10094206357, + :pressure-pascals 101325, + :temperature-celsius 35, :dew-point-celsius 35.00000000000001, :pressure-millibars 1013.25, - :pressure-pascals 101325, + :volume 1.1281347245103424, + :temperature-kelvin 308.15, :relative-humidity 100, :saturation-vapour-pressure 5622.488734516426, - :temperature-celsius 35, - :temperature-kelvin 308.15, - :volume 1.1281347245103424, - :wet-bulb-temperature 35.11625928298915} + :actual-vapour-pressure 4765.10094206357} packet {:relative-humidity 100 :temperature-celsius 35} actual (resolution packet)] (is (= actual expected)))) diff --git a/test/humidity/wet_bulb_test.clj b/test/humidity/wet_bulb_test.clj index 902f17c..267ba44 100644 --- a/test/humidity/wet_bulb_test.clj +++ b/test/humidity/wet_bulb_test.clj @@ -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 :temperature 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 :temperature 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 :temperature 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 :temperature 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 :temperature temperature :relative-humidity rel-humidity)] (println (format "Expected: %s...%s; actual: %s" min-expected max-expected actual)) (is (< min-expected actual max-expected)))))