Week 2 Air standard Cycle
AIM:- To write Python code that can solve an Otto Cycle and make plots for it.
Theory:-
An otto cycle is an idealised thermodynamic cycle that describes the functioning of a typical saprk ignition piston engine.
Otto Cycle has main four procesess as shown below:-
- Process 1-2 Isentropic Compression process
- Process 2-3 Constant volume heat addition process
- Process 3-4 Isentropic Expansion process
- Process 4-1 Constant volume heat rejection process.
Formula Used:-
- `PV^gamma = constant` # for adiabatic processe`
- `gamma =frac{Cp}{Cv} Where Cp`= specific heat of gas at constant pressur`
`Cv`= specific heat of gas at constant volume
- `frac{PV}{T} = constant`# applicablle for all ideal gases`
- Thermal efficiency:-
`eta = 1- frac{1}{Cr^gamma -1}`# Where `eta`= thermal efficiency
- Volume Trace:- `frac{V}{Vc} = 1 +frac{1}{2}(Cr-1)[R+1 - cos(theta)-(sqrtxR^2-(sin(theta)^2])`
Where V = volume during compression or expansion
Vc = clearance volume
`theta` = crank angle
Cr = compression ratio
- `R =frac{Cr}{a}` # Where a = crank pin radiu`
- Python code for otto cycle and thermal efficiency.
import math
import matplotlib.pyplot as plt
# inputs
p1 = 101325
t1 = 500
gamma = 1.4
t3 = 2300
# Geometric parameters
bore = 0.1
stroke = 0.1
con_rod = 0.15
cr = 12
#Volume calculation
v_s = (math.pi/4)*pow(bore,2)*stroke
v_c = v_s/(cr-1)
v1 = v_s + v_c
def engine_kinematics(bore, stroke, con_rod, cr, start_crank, end_crank):
a = stroke/2
R = con_rod/a
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
#state point 2
v2 = v_c
p2 = p1*pow(v1,gamma)/pow(v2,gamma)
rhs = p1*v1/t1
t2 = p2*v2/rhs
v_compression = engine_kinematics(bore, stroke, con_rod, cr, 180, 0 )
constant1 = p1*pow(v1,gamma)
p_compression = []
for v in v_compression:
p_compression.append(constant1/pow(v,gamma))
#state point 3
v3 = v2
rhs = p2*v2/t2
p3 = rhs*t3/v3
v_expansion = engine_kinematics(bore, stroke, con_rod, cr, 0, 180)
constant2 = p3*pow(v3,gamma)
p_expansion = []
for v in v_expansion:
p_expansion.append(constant2/pow(v,gamma))
v4 = v1
p4 = p3*pow(v3,gamma)/pow(v4,gamma)
t4 = p4*v4/rhs
# Thermal Efficiency
Thermal_eff =(1-((t4-t1)/(t3-t2)))*100
print(Thermal_eff)
plt.figure()
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()
2. Thermal effficiency:-
62.98928275128466
3. Plot for PV diagram:-
