Challenge

Week 2 Air standard Cycle

Objective: Obtain the thermal efficiency of the otto cycle and plot the pv diagram.

Problem statement:

1. Your code should create a PV diagram

2. You should output the thermal efficiency of the engine.

Solution procedure:

  1. Import the math and matplotlib libraries.
  2. Define the engine_kinematics function using def.
  3. In the engine_kinematics function first, define the geometric parameters and volume parameters(clearance volume and swept volume).
  4. Now define the starting and ending crank angles.
  5. Define a variable num_values to set the number of crank angles between the starting and ending crank angles. Then define dtheta as the gap between the crank angles.
  6. Using a for loop calculate and store the values of volume in the required crank range.
  7. Now define the state points in the main function and calculate the pressures, volumes for expansion, and compression in the cycle.
  8. Finally, plot the graph for the state points with markers and lines showing the process using the plt function and to display the plot use plt.show().
  9. Using the formula for thermal efficiency calculate the thermal efficiency of the cycle.

Code:

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
t1 = 500
#geometric parameters
bore = 0.1
stroke = 0.1
con_rod = 0.15
cr = 10
gamma = 1.4
t3 = 2300
#volume computation
v_s = (math.pi/4)*pow(bore,2)*stroke
v_c = v_s/(cr-1)
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
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 = p3v3/t3
rhs = p3*v3/t3
t4 = p4*v4/rhs
plt.plot([v2,v3],[p2,p3],'-k',marker ='*',mec = 'b',mfc = 'b')
plt.plot(V_compression,P_compression,'-k')
plt.plot(V_expansion,P_expansion,'-k')
plt.plot([v4,v1],[p4,p1],'-k',marker ='*',mec = 'b',mfc = 'b')
plt.xlabel("Volume")
plt.ylabel("Pressure")
plt.show()

#thermal efficiency
S = pow(cr,(gamma-1))
thermal_eff = 1-(1/S)
print('thermal_eff =',thermal_eff)

Results:

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.