Project

Engine Kinematics of an Otto Cycle using Python

In this project, we are going to write a program for engine kinematics of an air standard otto cycle and subsequently plot a graphical representation of a standard P-V Diagram. In addition to that, the thermal efficiency of the engine will also be computed.

The state variables (T1,P1) at state 1 will be considered and the other parameters are calculated with relevant formulas. The temperature at the end of compression i.e., T3 is also considered. The Engine design parameters like stroke, bore etc are also provided as inputs.

A typical otto cycle consists of the following processes:

  • Process 1–2 is an adiabatic compression process.
  • Process 2–3 is a constant-volume heat addition process.
  • Process 3–4 is an adiabatic expansion process.
  • Process 4–1 is a constant volume heat rejection process.

The program is as follows:

\"\"\"
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=12

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

V=engine_kinematics(bore,stroke,con_rod,cr,180,0)

#thermal efficiency

n=1-pow(cr,(1-gamma))
print(n)

Plot of P-V Diagram is given below:

\"\"

The thermal efficiency was calculated and it is found to be 62.98%

https://projects.skill-lync.com/projects/editor/?id=PoBHYURB8iQ6vasR&projectId=FSwktz8LjufBalEw

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.