Week 2 Air standard Cycle
AIM
To write a program in python to solve the otto cycle and plot the graph.
OBJECTIVE
- To solve different state variables in the otto cycle and plot p-v diagram.
- To calculate thermal efficiency for the given parameters in the otto cycle.
PROCESS IN OTTO CYCLE
- Process 0–1 A large amount of air is drawn into the piston/cylinder
assembly at constant pressure. - Process 1–2 is the adiabatic (isentropic) compression of the charge as the piston moves from bottom dead center (BDC) to top dead center (TDC).
- Process 2–3 is a constant amount of heat transfer from an external source to the working gas while the piston is at top dead center. This process is intended to represent the ignition and subsequent rapid combustion of a fuel-air mixture.
- Processes 3–4 are adiabatic (isentropic) expansion (power stroke). The
- process 4-1 completes the cycle with a constant volume process removing heat from the air while the piston is at bottom dead center.
- Process 1–0 Air parcels are released to the atmosphere in a constant pressure process.
The Otto cycle consists of isentropic compression, heat input at constant volume, isentropic expansion, and heat loss at constant volume. Technically, the 4-

FORMULA
The formula to find volume is given below.
The formula to find thermal efficiency is given below
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.
PROGRAM
import math
import matplotlib.pyplot as plt
def engine_kinematics(bore,stroke,con_rod,cr,start_angle,end_angle):
#engine parameters
a = stroke/2
R = con_rod/a
v_s = (math.pi/4) * pow(bore,2) * stroke
v_c = v_s/(cr -1)
sc = math.radians(start_angle)
ec = math.radians(end_angle)
num_values = 50
dtheta = (ec-sc)/(num_values - 1)
v = []
for i in range (0,num_values):
theta = sc + i * dtheta
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
#Geomentric parameter
bore = 0.1
stroke = 0.1
con_rod = 0.15
cr = 12
#volume computation
v_s = (math.pi/4) * pow(bore,2)*stroke
v_c = v_s/(cr-1)
v1 = v_s+v_c
#state point 2
v2 = v_c
#p2v2^gama = p1v1^gama
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(bore,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(bore,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^gama = p3v3^gamma
p4 = p3*pow(v3,gamma)/pow(v4,gamma)
#p4v4/t4 = 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('pressure vs volume')
plt.show()
#thermal efficiency
thermal_efficiency = 1-(1/(pow(cr,(gamma-1))))
print ('Thermal efficiency is : ',thermal_efficiency)
PLOTS:
Thermal Efficiency:
CONCLUSION:
A p-v diagram of the desired Otto cycle is drawn in the Python programming language using an array of volumes and various crank angles.