aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsam-anthony <samanthony6@protonmail.com>2022-03-26 16:30:43 -0230
committersam-anthony <samanthony6@protonmail.com>2022-03-26 16:30:43 -0230
commit42f2f6419bbff03931654e52a885b0600eec9b9b (patch)
tree97f089dd0132f9a13e22e3654fd8246c3254b3bb
parent0c5d33fc817047ab2c2c9dd3ed6784c032755819 (diff)
downloadvolute-42f2f6419bbff03931654e52a885b0600eec9b9b.zip
pressure ratio
-rw-r--r--main.go16
-rw-r--r--pressure.go4
-rw-r--r--temperature.go2
-rw-r--r--ui.go50
4 files changed, 63 insertions, 9 deletions
diff --git a/main.go b/main.go
index 653fd61..80d0e03 100644
--- a/main.go
+++ b/main.go
@@ -54,6 +54,21 @@ var (
selectedPressureUnit = defaultPressureUnitIndex
)
+var pressureRatio [numPoints]float32
+
+func pressureRatioAt(point int) float32 {
+ u := pascal
+ m := manifoldPressure[point].asUnit(u)
+ a := atmosphericPressure().asUnit(u)
+ return m / a
+}
+
+func init() {
+ for i := 0; i < numPoints; i++ {
+ pressureRatio[i] = pressureRatioAt(i)
+ }
+}
+
func loop() {
g.SingleWindow().Layout(
engineDisplacementRow(),
@@ -63,6 +78,7 @@ func loop() {
volumetricEfficiencyRow(),
intakeAirTemperatureRow(),
manifoldPressureRow(),
+ pressureRatioRow(),
).
Columns(
g.TableColumn("Parameter"),
diff --git a/pressure.go b/pressure.go
index f486552..a6665dc 100644
--- a/pressure.go
+++ b/pressure.go
@@ -52,3 +52,7 @@ func (p pressure) asUnit(u pressureUnit) float32 {
pa := p.val * float32(p.unit) // Convert to pascals.
return pa / float32(u) // Convert to desired unit.
}
+
+func atmosphericPressure() pressure {
+ return pressure{1, bar}
+}
diff --git a/temperature.go b/temperature.go
index 89cb1ba..7562ca7 100644
--- a/temperature.go
+++ b/temperature.go
@@ -64,7 +64,7 @@ func (t temperature) asUnit(u temperatureUnit) (float32, error) {
case kelvin:
return c + 272.15, nil
case fahrenheit:
- return c * (9.0 / 5.0) + 32.0, nil
+ return c*(9.0/5.0) + 32.0, nil
default:
return 0, errors.New(fmt.Sprintf("invalid temperatureUnit: '%v'", u))
}
diff --git a/ui.go b/ui.go
index 57765a3..d72fec4 100644
--- a/ui.go
+++ b/ui.go
@@ -1,6 +1,9 @@
package main
-import g "github.com/AllenDang/giu"
+import (
+ g "github.com/AllenDang/giu"
+ "strconv"
+)
func engineDisplacementRow() *g.RowWidget {
return g.Row(
@@ -93,18 +96,49 @@ func manifoldPressureRow() *g.TableRowWidget {
u, err := pressureUnitFromString(s)
check(err)
- for i := range manifoldPressure {
+ for i := 0; i < numPoints; i++ {
manifoldPressure[i] = pressure{
manifoldPressure[i].asUnit(u),
u,
}
}
}),
- g.InputFloat(&manifoldPressure[0].val).Format("%.2f"),
- g.InputFloat(&manifoldPressure[1].val).Format("%.2f"),
- g.InputFloat(&manifoldPressure[2].val).Format("%.2f"),
- g.InputFloat(&manifoldPressure[3].val).Format("%.2f"),
- g.InputFloat(&manifoldPressure[4].val).Format("%.2f"),
- g.InputFloat(&manifoldPressure[5].val).Format("%.2f"),
+ g.InputFloat(&manifoldPressure[0].val).Format("%.2f").
+ OnChange(func() {
+ pressureRatio[0] = pressureRatioAt(0)
+ }),
+ g.InputFloat(&manifoldPressure[1].val).Format("%.2f").
+ OnChange(func() {
+ pressureRatio[1] = pressureRatioAt(1)
+ }),
+ g.InputFloat(&manifoldPressure[2].val).Format("%.2f").
+ OnChange(func() {
+ pressureRatio[2] = pressureRatioAt(2)
+ }),
+ g.InputFloat(&manifoldPressure[3].val).Format("%.2f").
+ OnChange(func() {
+ pressureRatio[3] = pressureRatioAt(3)
+ }),
+ g.InputFloat(&manifoldPressure[4].val).Format("%.2f").
+ OnChange(func() {
+ pressureRatio[4] = pressureRatioAt(4)
+ }),
+ g.InputFloat(&manifoldPressure[5].val).Format("%.2f").
+ OnChange(func() {
+ pressureRatio[5] = pressureRatioAt(5)
+ }),
+ )
+}
+
+func pressureRatioRow() *g.TableRowWidget {
+ return g.TableRow(
+ g.Label("Pressure Ratio"),
+ g.Label(""),
+ g.Label(strconv.FormatFloat(float64(pressureRatio[0]), 'f', 1, 32)),
+ g.Label(strconv.FormatFloat(float64(pressureRatio[1]), 'f', 1, 32)),
+ g.Label(strconv.FormatFloat(float64(pressureRatio[2]), 'f', 1, 32)),
+ g.Label(strconv.FormatFloat(float64(pressureRatio[3]), 'f', 1, 32)),
+ g.Label(strconv.FormatFloat(float64(pressureRatio[4]), 'f', 1, 32)),
+ g.Label(strconv.FormatFloat(float64(pressureRatio[5]), 'f', 1, 32)),
)
}