aboutsummaryrefslogtreecommitdiffstats
path: root/mass
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2022-05-04 22:52:06 -0230
committerSam Anthony <sam@samanthony.xyz>2022-05-04 22:52:06 -0230
commitb94fef3b581133ddf6807d113422062acafde717 (patch)
tree52ff762e5af9a59d7f836a4c9c47d568e735bf8b /mass
parentbb8d0c77cbd620ccc7521961df59c1f2f812125b (diff)
downloadvolute-b94fef3b581133ddf6807d113422062acafde717.zip
improve unit conversions
Diffstat (limited to 'mass')
-rw-r--r--mass/mass.go37
1 files changed, 11 insertions, 26 deletions
diff --git a/mass/mass.go b/mass/mass.go
index 29ecbd5..6e9f670 100644
--- a/mass/mass.go
+++ b/mass/mass.go
@@ -3,7 +3,6 @@ package mass
import (
"errors"
"fmt"
- "time"
)
type unit float32
@@ -15,13 +14,15 @@ const (
)
type Mass struct {
- Val float32
- Unit unit
+ val float32
+}
+
+func New(i float32, u unit) Mass {
+ return Mass{i * float32(u)}
}
func (m Mass) AsUnit(u unit) float32 {
- g := m.Val * float32(m.Unit) // Convert to grams.
- return g / float32(u) // Convert to desired unit.
+ return m.val / float32(u)
}
type flowRateUnit float32
@@ -53,34 +54,18 @@ func FlowRateUnitFromString(s string) (flowRateUnit, error) {
return PoundsPerMinute, nil
default:
return *new(flowRateUnit), errors.New(
- fmt.Sprintf("invalid massFlowRateUnit: '%s'", s))
+ fmt.Sprintf("invalid mass flow rate unit: '%s'", s))
}
}
type FlowRate struct {
- Val float32
- Unit flowRateUnit
+ val float32
}
-func NewFlowRate(m Mass, t time.Duration, u flowRateUnit) (FlowRate, error) {
- switch u {
- case KilogramsPerSecond:
- return FlowRate{
- m.AsUnit(Kilogram) / float32(t.Seconds()),
- u,
- }, nil
- case PoundsPerMinute:
- return FlowRate{
- m.AsUnit(Pound) / float32(t.Minutes()),
- u,
- }, nil
- default:
- return *new(FlowRate), errors.New(
- fmt.Sprintf("invalid massFlowRateUnit: '%v'", u))
- }
+func NewFlowRate(i float32, u flowRateUnit) FlowRate {
+ return FlowRate{i * float32(u)}
}
func (fr FlowRate) AsUnit(u flowRateUnit) float32 {
- kgps := fr.Val * float32(fr.Unit) // Convert to kilogramsPerSecond.
- return kgps / float32(u) // Convert to desired unit.
+ return fr.val / float32(u)
}