Otto cycle
This project will have the programming process to develop a to cycle in python, it will have all the variables that to complete a pressure-volume process creating a fluid graph at the end of the code, inside the code, we can find also the thermal efficiency of all the process.
Code of the Otto process:
"""
otto cycle simulator
"""
import matplotlib.pyplot as plt
import math
def engine_kinematics(bore,stroke,con_rod,cr,start_crank,end_crank):
a = stroke/2# crank pin radios
R= con_rod/a
#volume parameter
V_s =(math.pi/4)*pow(bore,2)*stroke #volume cylinder
V_c = V_s/(cr-1) #clearence volume
#volume race
sc = math.radians(start_crank)
ec = math.radians(end_crank)
num_vaulues=50
dtheta = (ec-sc)/(num_vaulues-1)
V=[]
for i in range(0,num_vaulues):
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
#Imputs
#precsion (una admosfera ) en pascales
p1 = 101325
#temperatura en kelvin
t1 = 500
t3= 2300
gamma = 1.4
# parametros de geometra
bore = 0.1 #metros
stroke = 0.1 #metros
con_rod = 0.15#longitud de coneccion
cr = 12 #comprecion rate
#volume computation
v_s=(math.pi/4)*pow(bore,2)*stroke #volume cylinder
v_c = v_s/(cr-1) #clearence volume
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)
const = p1*pow(v1,gamma)
#p_compression*V_compression^gamma=const
p_compression = []
for v in V_compression:
p_compression.append(const/pow(v,gamma))
#state point 3
v3 = v2
# simple ideal gas law
rhs = p2*v2/t2
p3 =rhs*t3/v3
V_expantion=engine_kinematics( bore,stroke,con_rod,cr,0,180)
const = p3*pow(v3,gamma)
#p_compression*V_compression^gamma=const
p_expantion = []
for v in V_expantion:
p_expantion.append(const/pow(v,gamma))
#state point 4
v4= v1
#p4v4^gamma = p3v3^gamma
p4 = p3*pow(v3,gamma)/pow(v4,gamma)
#p4v4/t4 = p3v3/t3
t4= p4*v4/rhs
#PV graph
plt.plot ([v2,v3],[p2,p3])
plt.plot(V_compression,p_compression)
plt.plot(V_expantion,p_expantion)
plt.xlabel('Volume (m^3)')
plt.plot ([v4,v1],[p4,p1])
plt.ylabel('Pressure (Pa)')
plt.ticklabel_format(axis="x",, scilimits=(0,0))
plt.ticklabel_format(axis="y",, scilimits=(0,0))
plt.show ()
#thermal efficiency ofthe cycle
efficiency= 1-((t4-t1)/(t3-t2))
print("the thermal efficiency of the motor is:",efficiency)
Results:
Result thermal efficiency of the Otto cycle:
PV graph Otto cycle: