Compare commits

..

No commits in common. "d9c8b5cbc3cbe905e761fca17d1da9e8f82438c6" and "970a320a844d9c2d55ab01ca218d14c55b015c74" have entirely different histories.

5 changed files with 23 additions and 44 deletions

View file

@ -1,19 +0,0 @@
# humidity: Change Log
## Releae 0.1.0 12<sup>th</sup> 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

View file

@ -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."

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
: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 &deg; C) given this `temperature` in
&deg; 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))))))

View file

@ -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))))

View file

@ -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)))))