clear ; addpath(genpath('.')) % Compression ratio & critic ratio r = 18 ; % [-] rc = 2 ; % [-] % Units MPa = 1e6 ; % [Pa] cm = 1/100 ; % [m] g = 1/1000 ; % [kg] kJ = 1000 ; % [J] % Ideal gas, air gas.Rbar = 8.314 ; % [J/(mol*K)] gas.M = 28.97 * g ; % [kg/mol] gas.R = gas.Rbar / gas.M ; % [J/(kg*K)] % States state1.T = 300 ; % [K] state1.p = 0.1 * MPa ; % [Pa] state1.v = getVariableFromStateEquation("v", state1, gas) ; state1.vr = getValueFromTable("vr", "T", state1.T) ; % [-] state1.u = getValueFromTable("u", "T", state1.T) * kJ ; % [J/kg] % 1-2 (isoentropic compression) state2.v = state1.v / r ; state2.vr = state1.vr / r ; state2.T = getValueFromTable("T", "vr", state2.vr) ; % [K] state2.h = getValueFromTable("h", "T", state2.T) * kJ ; state2.p = getVariableFromStateEquation("p", state2, gas) ; % 2-3 (p=const) state3.v = state2.v * rc ; state3 = getStateAfterIsobaricProcess(state2, state3, gas) ; state3.vr = getValueFromTable("vr", "T", state3.T) ; % [-] state3.h = getValueFromTable("h", "T", state3.T) * kJ ; % 3-4 (isoentropic expansion) state4.v = state1.v ; state4.vr = state3.vr * ( state4.v / state3.v ) ; state4.T = getValueFromTable("T", "vr", state4.vr) ; % [K] state4.u = getValueFromTable("u", "T", state4.T) * kJ ; state4.p = getVariableFromStateEquation("p", state4, gas) ; % Work per unit mass per cycle [J/kg] qIn = state3.h - state2.h ; qOut = state4.u - state1.u ; l = qIn - qOut ; % Thermal efficiency eta = l / qIn % Mean effective pressure [Pa] Dv = state1.v - state2.v ; pme = l / Dv