Air standard Cycle using PYTHON
"""
- Aim :- To create PV diagram and thermal efficiency for otto cycle using PYTHON.
INTRODUCTION OF OTTO CYCLE:-
An otto cycle is an idealized thermodynamic cycle that describes the fuctioning of a typical spark ignition piston engine. it is the thermodynami cycle most commonly found in automobile engines.
The processes are described by :-
- 1. Process 0–1 a mass of air is drawn into piston/cylinder arrangement at constant pressure.
- 2. Process 1–2 is an adiabatic (isentropic) compression of the charge as the piston moves from bottom dead center (BDC) to top dead centre (TDC).
- 3. Process 2–3 is a constant-volume heat transfer to the working gas from an external source while the piston is at top dead centre. This process is intended to represent the ignition of the fuel-air mixture and the subsequent rapid burning.
- 4. Process 3–4 is an adiabatic (isentropic) expansion (power stroke).
- 5. Process 4–1 completes the cycle by a constant-volume process in which heat is rejected from the air while the piston is at bottom dead centre.
- 6. Process 1–0 the mass of air is released to the atmosphere in a constant pressure process.
"""
#CODE FOR OTTO CYCLE :-
"""
Air standard cycle
"""
import math
import matplotlib.pyplot as plt
def engine_kinematics(bore, stroke, con_rod, cr, start_crank, end_crank):
"""
Engine kinematics
"""
# Geomatric parameter
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
gamma = 1.4
t3 = 2300
#geomatric parameter
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))
# 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, 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
t4 = p4*v4/rhs
# Thermal efficiency of the otto cycle
# r = compression ratio = v1/v1 = v4/v3
r = v4/v3
Thermal_efficiency = 1 - (1 / pow(r, (gamma - 1)))
print(Thermal_efficiency)
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('V')
plt.ylabel('P')
plt.show()
"""
OUTPUT :-
1. PV diagram of OTTO cycle-
The intake stroke and compression stroke require one rotation of the engine crankshaft. The power stroke and exhaust stroke require another rotation. For two rotations there is one work generating stroke. In this PV cycle in adiabatic process should be smooth to obtain easy compression stroke and power stroke. Otherwise it would affect the kinematics and efficiency of the OTTO cycle.
2. Thermal efficiency of the OTTO cycle-
Thermal efficiency of this perticular cycle is 56.47 in the mean of percentage.
"""