From 2d0f7661dd4bb3927c93a6f9cbcf4fd93d2daf23 Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Sun, 2 Mar 2025 11:46:38 -0500 Subject: add manifold temperature output --- main.c | 18 ++++++++++++++++++ ui.c | 24 ++++++++++++++++++++++++ ui.h | 3 +++ 3 files changed, 45 insertions(+) diff --git a/main.c b/main.c index 893fe91..c014536 100644 --- a/main.c +++ b/main.c @@ -68,6 +68,7 @@ static void intercooler_deltap_row(mu_Context *ctx, UI *ui); static void dup_del_row(mu_Context *ctx, UI *ui); static void pressure_ratio_row(mu_Context *ctx, UI *ui); static void comp_outlet_temperature_row(mu_Context *ctx, UI *ui); +static void manifold_temperature_row(mu_Context *ctx, UI *ui); static void volume_flow_rate_row(mu_Context *ctx, UI *ui); static void hpad(mu_Context *ctx, int w); static void vpad(mu_Context *ctx, int h); @@ -153,6 +154,7 @@ main_window(mu_Context *ctx, UI *ui) { pressure_ratio_row(ctx, ui); comp_outlet_temperature_row(ctx, ui); + manifold_temperature_row(ctx, ui); volume_flow_rate_row(ctx, ui); mu_end_window(ctx); @@ -360,6 +362,22 @@ comp_outlet_temperature_row(mu_Context *ctx, UI *ui) { } } +static void +manifold_temperature_row(mu_Context *ctx, UI *ui) { + int i; + + mu_layout_row(ctx, 0, NULL, 0); + mu_layout_width(ctx, LABEL_WIDTH); + mu_label(ctx, "Manifold T:"); + mu_layout_width(ctx, UNIT_WIDTH); + if (w_select(ctx, &ui->manifold_temperature_unit) & MU_RES_CHANGE) { + compute_all(ui); + } + for (i = 0; i < ui->npoints; i++) { + w_number(ctx, ui->manifold_temperature[i]); + } +} + static void volume_flow_rate_row(mu_Context *ctx, UI *ui) { int i; diff --git a/ui.c b/ui.c index 87e118d..cf97462 100644 --- a/ui.c +++ b/ui.c @@ -62,9 +62,11 @@ static void init_intercooler_efficiency(UI *ui); static void init_intercooler_deltap(UI *ui); static void init_pressure_ratio(UI *ui); static void init_comp_outlet_temperature(UI *ui); +static void init_manifold_temperature(UI *ui); static void init_volume_flow_rate(UI *ui); static void compute_pressure_ratio(UI *ui, int idx); static void compute_comp_outlet_temperature(UI *ui, int idx); +static void compute_manifold_temperature(UI *ui, int idx); static void compute_volume_flow_rate(UI *ui, int idx); @@ -86,6 +88,7 @@ init_ui(UI *ui) { init_pressure_ratio(ui); init_comp_outlet_temperature(ui); + init_manifold_temperature(ui); init_volume_flow_rate(ui); compute(ui, 0); @@ -204,6 +207,12 @@ init_comp_outlet_temperature(UI *ui) { w_init_select(&ui->comp_outlet_temperature_unit, nelem(temperature_units), temperature_units); } +static void +init_manifold_temperature(UI *ui) { + w_init_number(ui->manifold_temperature[0]); + w_init_select(&ui->manifold_temperature_unit, nelem(temperature_units), temperature_units); +} + static void init_volume_flow_rate(UI *ui) { w_init_select(&ui->volume_flow_rate_unit, nelem(volume_flow_rate_units), volume_flow_rate_units); @@ -379,6 +388,7 @@ void compute(UI *ui, int idx) { compute_pressure_ratio(ui, idx); compute_comp_outlet_temperature(ui, idx); + compute_manifold_temperature(ui, idx); compute_volume_flow_rate(ui, idx); } @@ -413,6 +423,20 @@ compute_comp_outlet_temperature(UI *ui, int idx) { w_set_number(ui->comp_outlet_temperature[idx], v); } +static void +compute_manifold_temperature(UI *ui, int idx) { + int unit_idx; + TemperatureReader convert; + double v; + + unit_idx = ui->manifold_temperature_unit.idx; + assert(unit_idx >= 0 && (long unsigned int) unit_idx < nelem(temperature_units)); + + convert = temperature_readers[unit_idx]; + v = convert(manifold_temperature(&ui->points[idx])); + w_set_number(ui->manifold_temperature[idx], v); +} + static void compute_volume_flow_rate(UI *ui, int idx) { int unit_idx; diff --git a/ui.h b/ui.h index d30256c..5cbf6a3 100644 --- a/ui.h +++ b/ui.h @@ -32,6 +32,9 @@ typedef struct { w_Number comp_outlet_temperature[MAX_POINTS]; w_Select comp_outlet_temperature_unit; + w_Number manifold_temperature[MAX_POINTS]; + w_Select manifold_temperature_unit; + w_Select volume_flow_rate_unit; w_Number volume_flow_rate[MAX_POINTS]; } UI; -- cgit v1.2.3