Challenge

Otto cycle simulator using python

Aim:

  • To write a progarm in python to simulate the otto cycle.
  • To plot the Pv diagram.
  • To find the thermal effeciency of the engine.

Introduction:

An Otto cycle is an idealized thermodynamic cycle that describes the functioning of a typical spark ignition piston engine. It is the thermodynamic cycle most commonly found in automobile engines. The Otto cycle is a description of what happens to a mass of gas as it is subjected to changes of pressure, temperature, volume, addition of heat, and removal of heat.

In the otto cycle 1-2 is compression cycle

2-3 is heat addition procecss

3-4 is expansion cycle

4-1 is heat reduction cycle

Engine geometric parameters:

bore =0.1

stroke =0.1

connection rod length =0.15

compression ratio =10

To plot the pv diagram the values of v1,v2,v3,v4 and p1,p2,p3,p4 are required.

`V/(Vc) = 1 + 1/2 (rc-1) [R + 1-costheta-(R^2-sin^2 theta)]^(1/2)`

Effeciency:

Effeciency = workdone / Heat added

where work done = heat added - heat rejected

then, Effeciency = (Heat added - Heat rejected) / (Heat added)

= 1 - (Heat rejected / Heat added)

= 1 - [(t4-t1)/(t3-t2)] * 100

Program:

#Program for otto cycle simulation
# Importing the libraries
import math
import matplotlib.pyplot as plt 

def engine_kinematics(bore, stroke, con_rod, cr, start_crank, end_crank):
	# Geometric parameters
	a = stroke/2
	R = con_rod/a

	# Volume calculation
	vs = (math.pi/4)*pow(bore,2)*stroke
	vc = vs/(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))*vc)
	return V
#Geometric parameters
bore = 0.1
stroke = 0.1
con_rod = 0.15
cr = 10

# State point 1
p1 = 101325
t1 = 500
gamma = 1.4

vs = (math.pi/4)*pow(bore,2)*stroke
vc = vs/(cr-1)
v1 = vc+vs


# State point 2
v2 =vc
#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
t3 =2300
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)
t4 = p4*v4/rhs

# Thermal effeiency of the otto_cycle
thermal = (1-((t4-t1)/(t3-t2)))*100
print(thermal)

# Plotting the PV diagram
plt.grid()
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.title('otto_cycle')
plt.show()	


PV diagram plot:

Effecieccy of the engine is 60.19 %

Procedure:

  1. Import the libraries math and matplotlib.
  2. Create the function named engine_kinematics with input parameters.
  3. Using the for loop the Volume is calculated with range of 50 values and return the volume to the calling fucntion.
  4. volume and pressure values are calculated at the 4 state points.
  5. Compression volume and compression pressure is calculated at the state points 2.
  6. As well as calculte the Expansion volume and expansion pressure is calculated at the state point3.
  7. Finally calculated the effeciency of the engine.
  8. Plot the pv diagram with proper title,x-label and y-label.

Results:

Thus the smoother pv diagram is obtained for otto cycle and the effeciency of the engine is also calculated.

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.