Air Standard Cycle (Otto cycle) using Python
AIM:- To solve and write a code with python for the Air standard cycle(otto cycle) and draw the PV diagram. Also give the Thermal Efficiency of the Engine.
Otto cycle is an Air Standard cycle that is used in spark-ignition internal combustion engines (modern petrol engines).
An Otto cycle consists of four processes: Two isentropic (reversible adiabatic) processes. Two isochoric (constant volume) processes.
Process 1-2 : Isentropic Compression Process
Process 2-3 : Constant Volume Heat Addition Process
Process 3-4 : Isentropic Expansion Process
Process 4-1 : Constant Volume Heat Rejection Process.
Thermal efficiency of the engine is given by
where
1, η = thermal efficiency
2, r = compression ratio that is 'cr'
3, K = the value of gamma that is 1.4 adiabatic process.
Formulas used :
Swept Volume= pi/4*bore^2*stroke
Clearance volume= Swept volume/cr-1
Pressure*volume^gamma=constant
pressure*volume/temperature= constant
efficiency=(1-(1/cr)^(gamma-1))*10
SOLUTION
CODING:-
#program by Dakshkumar Jadav
#Otto Cycle Simulator
import math
import matplotlib.pyplot as plt
def engine_kinematics(bore, storke, 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)
#Defining the Angles
sc = math.radians(start_crank)
ec = math.radians(end_crank)
num_values = 50
dtheta = (ec-sc)/(num_values-1)
V = []
#For Tracing the Volume Curve
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
#Geometric Parametres
bore= 0.1
stroke= 0.1
#length of connetcing rod
con_rod= 0.15
#compression Ratio
cr= 12
"""
Volume Computation
v_c= Clerance volume, v_s= Swept Volume
State Point 1 (Isentropic Compression Process)
"""
v_s= (math.pi/4)*pow(bore,2)*stroke
v_c= v_s/(cr-1)
v1= v_c + v_s
#State Point 2 (Constant Volume Heat Addition process)
v2= v_c
# p2v2^gamma = p1v1^gamma
p2= p1*pow(v1,gamma)/pow(v2,gamma)
#Ideal Gas Law
# p1v1/t1 = p2v2/t2 | rhs=p1v1/t1 | rhs=p2v2/t2 | 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 (Isentropic Expansion Process)
v3=v2
#p2v2/t2 = p3v3/t3 | 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 (Constant Volume Heat Rejcetion Process)
v4=v1
#p4v4^gamma = p3v3^gamma
p4= p3*pow(v3,gamma)/pow(v4,gamma)
#p4v4/t4= rhs
t4=p4*v4/rhs
#ploting the PV Diagram
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.show()
#Thermal Efficiency of Engine
n = 1-(pow(cr,(1-gamma)))
print(n)
RESULTS
(1) PV Diagram of Otto Cycle
(2) Thermal Efficiency of Engine
Thus, Thermal Efficiency of Engine is 62.98%