Air standard Cycle
Objective: To use forward kinematics concepts to sovle air standard (otto) cycle and to make plot showing PV diagram of the cycle.
Solution Procedure:
An Air Standard (Otto) cycle consists of four processes namely:
Process 1-2 - Isentropic Compression
Process 2-3 - Constant Volume Heat Addition
Process 3-4 - Isentropic Expansion
Process 4-1 - Constant Volume Heat Rejection
For an engine, consider following data:
p1,p2,p3,p4 = pressure at given point
v1,v2,v3,v4 = volume at given point
t1,t2,t3,t4 = temperature at given point
gamma = 1.4
bore length = 0.1 meter
storke length = 0.1 meter
length of connecting rod = 0.15 meter
compression ratio Cr = 14
With above mentioned data, code for solving otto cycle can wrote as following:
Code:
#Air standard (Otto) cycle simulator
#By Dishank Bhavsar
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
#volumetric Parameters
V_s = math.pi*(1/4)*pow(bore,2)*stroke
V_c = V_s/(cr-1)
#Angle definition
sc = math.radians(start_crank)
ec = math.radians(end_crank)
#dividing angle range into 50 different values
num_values = 50
dtheta = (ec-sc)/(num_values-1)
V = []
#for volume curve
for i in range(0,num_values):
theta = sc + i*dtheta
eq1 = 0.5*(cr-1)
eq2 = R + 1 - math.cos(theta)
eq3 = pow(R,2)- pow(math.sin(theta),2)
eq3 = pow(eq3,0.5)
V.append((1+eq1*(eq2-eq3))*V_c)
return V
#data
p1=101325
t1=500
gamma= 1.4
t3=2300
#geometric Parametres
bore= 0.1
stroke= 0.1
#connetcing rod length
con_rod= 0.15
#compression ratio
cr= 14
"""
Volume Computation
State Point 1 (Isentropic Compression)
"""
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)
v2= v_c
# p2v2^gamma = p1v1^gamma
p2= p1*pow(v1,gamma)/pow(v2,gamma)
# 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
#Plot generation of PV diagram
plt.plot([v2,v3],[p2,p3])
plt.plot(V_compression , P_compression, color = 'red')
plt.plot(V_expansion, P_expansion, color = 'green')
plt.xlabel('Volume')
plt.ylabel('Pressure')
plt.plot([v4,v1],[p4,p1])
plt.show()
#Thermal Efficiency calculation
n = 1-(pow(cr,(1-gamma)))
print(n)
PV diagram of Otto cycle:
Thermal Efficiency of the engine:
Already mentioned in the code by using efficiency formula.
For given problem,
Thermal Efficiency = 0.6520244053023632