aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2025-03-01 15:25:24 -0500
committerSam Anthony <sam@samanthony.xyz>2025-03-01 15:25:24 -0500
commit331a6e4e536c329371ad23650876364d87fd9561 (patch)
tree2faf0eb2e4c062969ca189bc945863cafb6dab5e
parente7d1b40c7d0c2325eab045131d63d0d4860f88de (diff)
downloadvolute-331a6e4e536c329371ad23650876364d87fd9561.zip
add compressor efficiency input
-rw-r--r--engine.h1
-rw-r--r--main.c19
-rw-r--r--ui.c5
-rw-r--r--ui.h3
4 files changed, 28 insertions, 0 deletions
diff --git a/engine.h b/engine.h
index 43d5f4b..cb77a35 100644
--- a/engine.h
+++ b/engine.h
@@ -5,6 +5,7 @@ typedef struct {
AngularSpeed rpm;
Pressure map;
Fraction ve;
+ Fraction comp_efficiency;
} Engine;
void init_engine(Engine *e);
diff --git a/main.c b/main.c
index b9319c5..aa5c161 100644
--- a/main.c
+++ b/main.c
@@ -62,6 +62,7 @@ static void ambient_pressure_row(mu_Context *ctx, UI *ui);
static void rpm_row(mu_Context *ctx, UI *ui);
static void map_row(mu_Context *ctx, UI *ui);
static void ve_row(mu_Context *ctx, UI *ui);
+static void comp_efficiency_row(mu_Context *ctx, UI *ui);
static void dup_del_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);
@@ -139,6 +140,7 @@ main_window(mu_Context *ctx, UI *ui) {
rpm_row(ctx, ui);
map_row(ctx, ui);
ve_row(ctx, ui);
+ comp_efficiency_row(ctx, ui);
dup_del_row(ctx, ui);
vpad(ctx, 0);
@@ -241,6 +243,23 @@ ve_row(mu_Context *ctx, UI *ui) {
}
}
}
+static void
+comp_efficiency_row(mu_Context *ctx, UI *ui) {
+ int i;
+
+ mu_layout_row(ctx, 0, NULL, 0);
+ mu_layout_width(ctx, LABEL_WIDTH);
+ mu_label(ctx, "Compressor efficiency:");
+ mu_layout_width(ctx, UNIT_WIDTH);
+ mu_label(ctx, "(%)");
+ mu_layout_width(ctx, FIELD_WIDTH);
+ for (i = 0; i < ui->npoints; i++) {
+ if (w_field(ctx, &ui->comp_efficiency[i])) {
+ set_comp_efficiency(ui, i);
+ set_volume_flow_rate(ui, i);
+ }
+ }
+}
static void
dup_del_row(mu_Context *ctx, UI *ui) {
diff --git a/ui.c b/ui.c
index 0ef1dfb..d1b4bb2 100644
--- a/ui.c
+++ b/ui.c
@@ -189,6 +189,11 @@ set_ve(UI *ui, int idx) {
}
void
+set_comp_efficiency(UI *ui, int idx) {
+ ui->points[idx].comp_efficiency = percent(ui->comp_efficiency[idx].value);
+}
+
+void
set_volume_flow_rate(UI *ui, int idx) {
int unit_idx;
VolumeFlowRateReader convert;
diff --git a/ui.h b/ui.h
index e1cbfcf..db95f25 100644
--- a/ui.h
+++ b/ui.h
@@ -19,6 +19,8 @@ typedef struct {
w_Field ve[MAX_POINTS];
+ w_Field comp_efficiency[MAX_POINTS];
+
Engine points[MAX_POINTS];
w_Select volume_flow_rate_unit;
@@ -35,6 +37,7 @@ void set_ambient_pressure_unit(UI *ui);
void set_map(UI *ui, int idx);
void set_map_unit(UI *ui);
void set_ve(UI *ui, int idx);
+void set_comp_efficiency(UI *ui, int idx);
void set_volume_flow_rate(UI *ui, int idx);
void set_all_volume_flow_rate(UI *ui);
void insert_point(UI *ui, int idx);