Challenge

Week 2 Air standard Cycle

Objective: To plot P-V curve of Otto Cycle and find the efficiency of cycle

Problem Statement:

In an ideal Otto cycle, the system executing the cycle undergoes a series of four internally reversible processes: two isentropic (reversible adiabatic) processes alternated with two isochoric processes.

1-2: Isentropic compression

2-3: Isochoric compression

3-4: Isentropic Expansion

4-1: Isochoric Expansion

When just state points are calculated, the curves 1-2 and 3-4 are shown as straight lines in the plot, so a volume formula has to be used to calculate the curve points.

`v/v_c = 1+ 0.5(cr-1)(R+1-cos(theta)- (R^2 - (sin(theta))^2)^0.5)`

The above formula is calculated inside as user defined function and called back whenever required i.e., to calculate the compression and expansion curve points.

To calculate state points some inputs and parameters are taken, which are mentioned in the code with respective comments

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 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 #pascals
t1 = 500	# K
t3 = 2300

# Geometric Parameters
bore = 0.10
stroke = 0.1
con_rod = 0.15
cr = 9
a = stroke/2
R = con_rod/a
gamma = 1.4


# Volume computation

v_s = (math.pi/4)*pow(bore, 2)*stroke	#swept volume
v_c = v_s/(cr-1)						# clearance 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 = 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

p3 = p2*t3/t2

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 = p3v3/t4
t4 = p4*v4/rhs

#efficiency of otto cycle
eta = 1- (1/pow(cr, gamma-1))
print('efficiency of otto cycle is', eta,)

#plotting the curve
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("Pressure, P")
plt.ylabel("Volume, V")
plt.title("P-V otto cycle")
plt.show()

Result discussion:

Above code sample has been used to find out the curves at compression state and expansion state. Matplotlib was used to create the plot curve and efficiency of the engine too was calculated at the end of code.

otto.py file has the code sample and

otto_curve.png has the plot of PV curve

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.