diff options
| author | sam-anthony <samanthony6@protonmail.com> | 2022-03-26 16:30:43 -0230 |
|---|---|---|
| committer | sam-anthony <samanthony6@protonmail.com> | 2022-03-26 16:30:43 -0230 |
| commit | 42f2f6419bbff03931654e52a885b0600eec9b9b (patch) | |
| tree | 97f089dd0132f9a13e22e3654fd8246c3254b3bb | |
| parent | 0c5d33fc817047ab2c2c9dd3ed6784c032755819 (diff) | |
| download | volute-42f2f6419bbff03931654e52a885b0600eec9b9b.zip | |
pressure ratio
| -rw-r--r-- | main.go | 16 | ||||
| -rw-r--r-- | pressure.go | 4 | ||||
| -rw-r--r-- | temperature.go | 2 | ||||
| -rw-r--r-- | ui.go | 50 |
4 files changed, 63 insertions, 9 deletions
@@ -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)) } @@ -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)), ) } |