Project

A Python program to simulate the otto cycle with the help of engine kinematics

to write a program of otto cycle simulator:-

The performance of an air-standard Otto cycle with heat transfer loss and variable specific heats of working fluid is analyzed by using finite-time thermodynamics. The relations between the power output and the compression ratio, between the thermal efficiency and the compression ratio, as well as the optimal relation between power output and the efficiency of the cycle .

steps : in this first i provied the required library

step 2:- then defined the variables like bore,stroke,length of connecting rod,compression ratio(cr),start angle ,end angle

then i define a separate engine kinematics

then with the help of ideal gas law ,defined the volumes and temperature in which the process undergoes through isentropic process.

#main program

\"\"\"
python program to simulate otto cycle
\"\"\"
import math
import matplotlib.pyplot as plt


def engine_kinematics(bore,stroke,con_rod,cr,start_crank,end_crank):

	#program to write 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 given
p1=101325 #pressure in pascals
t1=500 # temperature in kelvin
gama=1.4
t3 = 2300
#geometric parameters
bore=0.1
stroke=0.1
con_rod=0.15
cr=6

#volume computation

v_s=(math.pi/4)*pow(bore,2)*stroke #wherw v_s=swept  volume
v_c=v_s/(cr-1) #v_c=clearance volume

#state point 1

v1=v_c+v_s

#state point 2
v2=v_c

#p2v2^gama=p1v1^gama (simple isentropic process)
p2=p1*pow(v1,gama)/pow(v2,gama)

#p2v2/t2=p1v1/t1 | rhs=p1v1/t1 | p2v2/t2=rhs | t2=p2v2/rhs (by ideal gas law)
rhs =p1*v1/t1
t2=p2*v2/rhs
V_compression=engine_kinematics(bore,stroke,con_rod,cr,0,180)

constant=p1*pow(v1,gama)

P_compression=[]

for v in V_compression:
	P_compression.append(constant/pow(v,gama))





#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,gama)

P_expansion=[]

for v in V_expansion:
	P_expansion.append(constant/pow(v,gama))


#state point 4

v4=v1

#p4v4^gama=p3v3^gama | p4v4/t4=p3v3/t3 
p4=p3*pow(v3,gama)/pow(v4,gama)

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.show()


#thermal efficiency of otto cycle (e)

#inputs k=1.4 
k=1.4
e = (1-1/pow(cr,(k-1)))

print(e)

output of graph p-v diagram

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.