OTTO- cycle
## Otto Cycle Simulator
import math
import matplotlib.pyplot as plt
def engine_kinematics(bore,stroke,con_rod, cr , start_crank, end_crank):
##Volume parameter
v_s= math.pi*(1/4)*pow(bore,2)*stroke
v_c=v_s/(cr-1)
a=stroke/2
R= con_rod/a
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(pow(R,2) - pow(math.sin(theta),2),0.5)
V.append((1 + term1*(term2-term3))*v_c)
return V
# inputs
p1= 101325
t1=500
gamma= 1.2
t3=2300
## Geometric paramters
bore=0.1
stroke=0.1
con_rod=0.15
cr=12
# Volume Computaion
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^gamma = p1v1^gamma
p2= p1*pow(v1,gamma)/pow(v2,gamma)
## p2v2/t2= p1v1/t1 // rhs= p1v1/t1
rhs= p1*v1/t1
t2= (p2*v2)/rhs
V_compression = engine_kinematics(bore , stroke ,con_rod ,cr , 180 , 0 )
## p1v1^gamma= Constant
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 )
## p1v1^gamma= Constant
constant= p3* pow(v3,gamma)
P_expansion = []
for v in V_expansion:
P_expansion.append(constant/pow(v,gamma))
## state point4
v4=v1
# p3v3^gamma=p4v4^gamma
p4 = p3*pow(v3,gamma)/pow(v4,gamma)
#p3v3/t3=p4v4/t4=rhs
t4=p4*v4/rhs
thermal_eff=1-((t4-t1)/(t3-t2))
print(thermal_eff*100)
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()
EXPLANATION:
We have imported math and matplotlib for various functions used: like pi function, and angle theta , radians etc. and graphs.
then, we have made a funtion with some arguments as bore,stroke, con_rod , cr and start and end crank angles.
We have calculated swept vol. and clearance vol. formulas
then all states parameters were calculated such as temp, pressure , volume etc.
as compression and expansion process are adiabatic process , we have calculated the pressure with the help of array and for loop.
we have considered volume as array and calculated pressure accordingly for compression and expansion stage.
Later, graph was also plotted for the same (P-V diagram)
Also thermal efficiency is getting calculated at the end getting displayed.