Project

Air standard Cycle by python

Aim : write a program for air standard cycle to plot a pv diagram and calculate thermal efficiency

Introduction :

The Otto cycle is a set of processes used by spark ignition internal combustion engines (2-stroke or 4-stroke cycles). These engines a) ingest a mixture of fuel and air, b) compress it, c) cause it to react, thus effectively adding heat through converting chemical energy into thermal energy, d) expand the combustion products, and then e) eject the combustion products and replace them with a new charge of fuel and air.

  1. Intake stroke, gasoline vapor and air drawn into engine (0-1).
  2. Compression stroke, p, T increase (1-2).
  3. Combustion (spark), short time, essentially constant volume (2-3). Model: heat absorbed from a series of reservoirs at temperatures T2 to T3 .
  4. Power stroke: expansion (3-4).
  5. Valve exhaust: valve opens, gas escapes.
  6. (4-1) Model: rejection of heat to series of reservoirs at temperatures T4to T1 .
  7. Exhaust stroke, piston pushes remaining combustion products out of chamber (1-0).

Objective:

  1. create pv diagram
  2. calculate thermal efficiency

Governing equation:

piston volume

efficiency

steps :

  1. importing labraries
  2. create function thermodynamic properties
  3. define thermodynamic properties and geometric properties
  4. pressure and temperature at all state point and volume for the same
  5. calculate the thermal efficiency
  6. plot the pv diagram

Python program:

"""
otto cycle simulator
"""

import math
import matplotlib.pyplot as plt

# function
def engine_kinematics(bore,stroke,con_rod,cr,start_crank,end_crank):
	"""
	Engine kinematics
	"""	

	# geometric parameters
	a = stroke/2
	R = con_rod/a

	#volume parameter
	V_s = (math.pi/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 = 8

# 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 = 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))

#stae 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,180,0)
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

#calculating thermal efficiency 
thermal_efficiency = (1-1/pow(cr,(gamma-1)))*100
print(thermal_efficiency)

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


result:

thermal efficiency =56.4724 %

Conclution: thus we calculated the thermal efficiency and ploted pv diagram

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.