Challenge

Air standard Cycle

AIM

To execute the P-V diagram of a otto cycle and the thermal efficiency of it using python.

OBJECTIVES:

1. Your code should create a PV diagram

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

EXPLANATION OF OTTO CYCLE AND ITS FORMULAS:

Probably the most well established and modelled compression and expansion process in the power chamber of an internal combustion engine is the Otto cycle. Of course, modern engine design is today fully and accurately simulated in computer software, but it still remains useful to perform ‘long hand’ calculations on idealised gas models to gain proper understanding of the thermodynamics.

The air-standard-Otto cycle is the idealized cycle for the spark-ignition internal
combustion engines. This cycle is shown above on p-v and T-s diagrams. The Otto
cycle 1-2-3-4 consists of following four process:

Process 1-2: Reversible adiabatic compression of air.
Process 2-3: Heat addition at constant volume.
Process 3-4: Reversible adiabatic expansion of air.
Process 4-1: Heat rejection at constant volume

# Otto cycle simulator and p-v diagram plotting otto cycle


import math
import matplotlib.pyplot as plt


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

	a = stroke/2
	R = con_rod/a

	#Volume parameters
	V_s = math.pi*(1/4)*pow(bore,2)*stroke
	V_c = V_s/(c_r-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*(c_r-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 = 2163	
t1 = 1001
gamma = 2
t3 = 2300

# Geometric parameters
bore = 0.1
stroke = 0.1
con_rod = 1.5
c_r = 6

#Volume computation

v_s = (math.pi/4)*pow(bore,2)*stroke
v_c = v_s/(c_r - 1)
v1 = v_c+ v_s

#State point2
v2 = v_c

#p2v2^gamma = p1v1^gamma
p2 = p1*pow(v1,gamma)/pow(v2,gamma)

#p2v2/t2 = p1v1/t1 | rhs = p1v2/t1 | p2v2/t2 = rhs |  t2 = p2v2/rhs

rhs = p1*v1/t1
t2 = p2*v2/rhs

V_compression = engine_kinematics(bore,stroke,con_rod,c_r,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,c_r,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.xlabel('volume')
plt.ylabel('pressure')
plt.title('p-v diagram of otto cycle')
plt.grid()
plt.show()

#calculating thermal efficiency

thermal_efficiency = 1 -(1/pow((c_r),(gamma-1)))
print('thermal efficiency of otto cycle:' , thermal_efficiency)

Thermal efficiency is calculated at the end but the values taken for the calculation are random.

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.