Week 2 Air standard Cycle
AIR STANDARD CYCLE(Otto cycle) USING PYTHON
AIM: Writing a program in python to solve the otto cycle and plot the graph.
OBJECTIVE:
- Solving different state variables in the otto cycle and plot p-v diagram.
- Calculating thermal efficiency for the given parameters in the otto cycle.
PROCESS IN OTTO CYCLE
- Process 0–1 a mass of air is drawn into piston/cylinder arrangement at constant pressure.
- Process 1–2 is an adiabatic (isentropic) compression of the charge as the piston moves from the bottom dead center (BDC) to the top dead center (TDC).
- Process 2–3 is a constant-volume heat transfer to the working gas from an external source while the piston is at the top dead center. This process is intended to represent the ignition of the fuel-air mixture and the subsequent rapid burning.
- Process 3–4 is an adiabatic (isentropic) expansion (power stroke).
- Process 4–1 completes the cycle by a constant-volume process in which heat is rejected from the air while the piston is at the bottom dead center.
- Process 1–0 the mass of air is released to the atmosphere in a constant pressure process.
The Otto cycle consists of isentropic compression, heat addition at constant volume, isentropic expansion, and rejection of heat at constant volume. In the case of a four-stroke Otto cycle, technically there are two additional processes: one for the exhaust of waste heat and combustion products at constant pressure (isobaric), and one for the intake of cool oxygen-rich air also at constant pressure; however, these are often omitted in a simplified analysis. Even though those two processes are critical to the functioning of a real engine, wherein the details of heat transfer and combustion chemistry are relevant, for the simplified analysis of the thermodynamic cycle, it is more convenient to assume that all of the waste heat is removed during a single volume change.

FORMULA
The formula to find volume is given below.
V/Vc = 1+ (½)*(rc-1) [R+1-cosθ-(R^2-Sin^2θ) ^1/2]
The formula to find thermal efficiency is given below
η = 1 – (1/rk-1)
Here the term k is denoted as gamma in the program
r is denoted as cr in the program
PROCEDURE
- Since the otto cycle is an air standard cycle we will take the gamma value as 1.4.
- At the initial condition, we will consider the T1 and P1 values as 500K and 101.325KPa respectively.
- The geometrical parameters are stoke, diameter, connecting rod length, crank start and end angle are defined to the function in the program.
- From the above parameters, the v_c and v_s are calculated accordingly.
- The other states are calculated using adiabatic and ideal gas equations.
- Similarly, the thermal efficiency is calculated using the above formulas.
- For plotting p-v diagram plt. plot command is used from matplotlib. pyplot module.
- For the compression stage, the starting and ending crank angles are 180 and 0.
- For the expansion stage, the starting and ending crank angles are 0 and 180.
- Let us consider the value to be iterated is 50 accordingly v null set is created to store the value using append command.
- All units are in SI units [m, kg, sec, kelvin, pa]
Programme code:
# Otto Cycle import math import matplotlib.pyplot as plt def engine_kinematics(bore,stroke,con_rod,cr,start_crank,end_crank): # Geometric parameters a = stroke/2 R = con_rod/a # Volume parameters V_s = math.pi*(1/4)*pow(bore,2)*stroke V_c = V_s/(cr-1) sc = math.radians(start_crank) ec = math.radians(end_crank) num_values =50 detheta = (ec-sc)/(num_values-1) V =[] for i in range(0,num_values): theta =sc +i*detheta term1 = 0.5*(cr-1) term2 = R+1-math.cos(theta) term3 = pow(R,2)-pow(math.sin(theta),2) term3 = pow(term3,0.5) V.append((1+term1*(term2-term3))*V_c) return V # inputs p1 = 101325 t1 = 500 gamma = 1.4 t3 = 2300 # Geometric paramenters bor = 0.1 stroke =0.1 con_rod = 0.15 cr = 10 # Volume computation v_s = (math.pi/4)*pow(bor,2)*stroke v_c = v_s/(cr-1) v1 = v_c+v_s # State point 2 v2 = v_c #p2v2^gamma = p1v1^gamma p2 = p1*pow(v1,gamma)/pow(v2,gamma) #p2v2/t2 = p1v1/t1 | rhs = p1v1/t1 | p2v2/t2 =rhs| t2 =p2v2/rhs rhs = p1*v1/t1 t2 = p2*v2/rhs V_compression = engine_kinematics(bor,stroke,con_rod,cr,180,0) constant = p1*pow(v1,gamma) P_compression = [] for v in V_compression: P_compression.append(constant/pow(v,gamma)) # State point 3 v3 = v2 # p3v3/t3 = p2v2/t2 | rhs =p2v2/t2 | p3 =rhs*t3/v3 rhs = p2*v2/t2 p3 = rhs*t3/v3 V_expansion = engine_kinematics(bor,stroke,con_rod,cr,0,180) constant = p3*pow(v3,gamma) P_expansion = [] for v in V_expansion: P_expansion.append(constant/pow(v,gamma)) # State point 4 v4 = v1 # p4v4^gamma = p3v3^gamma p4 = p3*pow(v3,gamma)/pow(v4,gamma) #p4v4/t4 = p3v3/t3 = rhs t4 = p4*v4/rhs plt.plot([v2,v3],[p2,p3]) plt.plot(V_compression,P_compression) plt.plot(V_expansion,P_expansion) plt.plot([v4,v1],[p4,p1]) plt.xlabel('Volume') plt.ylabel('Pressure') plt.title('Ideal otto Cycle \n (Volume vs Pressure)') # Calculating of thermal efficiency thermal_efficiency = 1-(1/(pow(cr,(gamma-1)))) print('Thermal Efficiency =', thermal_efficiency) plt.show()
Results:
Thermal Efficiency = 0.6018928294465027
[Finished in 39.6s]
Conclusion:
Calculated thermal efficiency of Otto cycle. Plotted P-V diagram using python programming.