aboutsummaryrefslogtreecommitdiffstats
path: root/pressure.go
diff options
context:
space:
mode:
Diffstat (limited to 'pressure.go')
-rw-r--r--pressure.go40
1 files changed, 40 insertions, 0 deletions
diff --git a/pressure.go b/pressure.go
new file mode 100644
index 0000000..cd824c5
--- /dev/null
+++ b/pressure.go
@@ -0,0 +1,40 @@
+package main
+
+import (
+ "errors"
+ "fmt"
+)
+
+type Pressure float32
+
+const (
+ Millibar Pressure = 100
+ Pascal Pressure = 1
+ Kilopascal Pressure = 1_000
+ Bar Pressure = 100_000
+ PoundsPerSquareInch Pressure = 6_894.757
+)
+
+var PressureUnits = []string{"mbar", "Pa", "kPa", "bar", "psi"}
+
+func ParsePressureUnit(s string) (Pressure, error) {
+ // Each case corresponds to a value in PressureUnits.
+ switch s {
+ case "mbar":
+ return Millibar, nil
+ case "Pa":
+ return Pascal, nil
+ case "kPa":
+ return Kilopascal, nil
+ case "bar":
+ return Bar, nil
+ case "psi":
+ return PoundsPerSquareInch, nil
+ default:
+ return *new(Pressure), errors.New(fmt.Sprintf("invalid unit: '%s'", s))
+ }
+}
+
+func AtmosphericPressure() Pressure {
+ return 101.325 * Pascal
+}