OTTO CYCLE SIMULATOR
INTRODUCTION :
To write a python code to create an otto cycle simulator with resulting plots.
PROCEDURE :
1. To start with regular intro code and then adding or defining a function \"Engine kinematics\" which would contain all the required parameters for successful execution of the code.
2. The parameters are :-
(a). Bore,
(b). Stroke,
(c). connecting rod length,
(d). compression ratio,
(e). start_crank (angle),
(f). end_crank (angle).
3. So, we have the formulae for computing the different aspects with the data relavent to the parameters.
4. After that, we divide the cycle into four state points, and align them in the order as shown in the code attached below.
\"\"\"
OTTO CYCLE SIMULATOR
\"\"\"
import math
import matplotlib.pyplot as plt
def engine_kinematics(bore, stroke, con_rod, cr, start_crank, end_crank):
\"\"\"
ENGINE KINEMATICS
\"\"\"
# 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
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
# Geometric parameters
bore = 0.1
stroke = 0.1
con_rod = 0.15
cr = 10
# Volumetric computation
v_s = (math.pi/4)*pow(bore,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(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^gamma = 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.show()
OTTO CYCLE PLOT: