diff options
| author | Sam Anthony <sam@samanthony.xyz> | 2025-03-02 14:24:56 -0500 |
|---|---|---|
| committer | Sam Anthony <sam@samanthony.xyz> | 2025-03-02 14:24:56 -0500 |
| commit | 9e6a82e0bfe9cf0a884dc110293f497aa21bdb6d (patch) | |
| tree | 531ad1737382e6113fdefc0cf54dc45e1ea8aa20 | |
| parent | b4fd126b2c779c800bdf3f2c4a47bd85ade9668a (diff) | |
| download | volute-9e6a82e0bfe9cf0a884dc110293f497aa21bdb6d.zip | |
calculate mass flow rate at ambient conditions
| -rw-r--r-- | engine.c | 16 | ||||
| -rw-r--r-- | engine.h | 1 | ||||
| -rw-r--r-- | test.c | 1 | ||||
| -rw-r--r-- | test.h | 1 | ||||
| -rw-r--r-- | test_engine.c | 23 |
5 files changed, 40 insertions, 2 deletions
@@ -17,6 +17,9 @@ static const double C_V_AIR = 718.0; /* Heat capacity ratio of dry air at T=300K [J/(kg*K)]. */ static const double GAMMA_AIR = C_P_AIR / C_V_AIR; +/* Gas constant of air [J/(kg*K)]. */ +static const double R_AIR = 287.05; + static VolumeFlowRate port_volume_flow_rate(const Engine *e); static double density_ratio(const Engine *e); @@ -100,3 +103,16 @@ density_ratio(const Engine *e) { t3 = manifold_temperature(e); return (p3 * t1) / (p1 * t3); } + +/* Mass flow rate through the engine (corrected to ambient conditions). */ +MassFlowRate +mass_flow_rate(const Engine *e) { + Pressure p; + VolumeFlowRate v; + Temperature t; + + p = e->ambient_pressure; + v = volume_flow_rate(e); + t = e->ambient_temperature; + return (p * v) / (R_AIR * t); +} @@ -16,3 +16,4 @@ double pressure_ratio(const Engine *e); Temperature comp_outlet_temperature(const Engine *e); Temperature manifold_temperature(const Engine *e); VolumeFlowRate volume_flow_rate(const Engine *e); +MassFlowRate mass_flow_rate(const Engine *e); @@ -62,4 +62,5 @@ main(void) { test_comp_outlet_temperature(); test_manifold_temperature(); test_volume_flow_rate(); + test_mass_flow_rate(); } @@ -68,3 +68,4 @@ void test_comp_outlet_temperature_adiabatic(void); void test_comp_outlet_temperature(void); void test_manifold_temperature(void); void test_volume_flow_rate(void); +void test_mass_flow_rate(void); diff --git a/test_engine.c b/test_engine.c index 76e58fa..4acfa17 100644 --- a/test_engine.c +++ b/test_engine.c @@ -72,7 +72,7 @@ void test_volume_flow_rate(void) { Pressure p_ambient, p_boost, map; - p_ambient = millibar(982.052713333343); + p_ambient = inch_mercury(30); p_boost = psi(10); map = p_ambient + p_boost; Engine e = { @@ -84,5 +84,24 @@ test_volume_flow_rate(void) { .ve = percent(80), .comp_efficiency = percent(65), }; - test(volume_flow_rate(&e), cubic_metre_per_sec(0.1855992)); + test(volume_flow_rate(&e), cubic_metre_per_sec(0.184086)); +} + +void +test_mass_flow_rate(void) { + Pressure p_ambient, p_boost, map; + + p_ambient = inch_mercury(30); + p_boost = psi(10); + map = p_ambient + p_boost; + Engine e = { + .displacement = cubic_inch(250), + .rpm = rpm(5000), + .map = map, + .ambient_temperature = fahrenheit(70), + .ambient_pressure = p_ambient, + .ve = percent(80), + .comp_efficiency = percent(65), + }; + test(mass_flow_rate(&e), kilo_per_sec(0.2214056)); } |