Challenge

Week 2 Air standard Cycle

Otto Cycle:

The processes which take place in otto cycle are

1. process 1-2 - reversible adiabatic (Isentropic) compression.

2. process 2-3 - constant volume heat addition.

3. process 3-4 - reversible adiabatic (Isentropic) Expansion.

4. process 4-1 - constant volume heat rejection.

The Python code starts with defining the engine kinematics function

The formula governing the engine kinematics is given by:

`V/V_c = 1 + 0.5(cr - 1)[R+1- costheta -(R^2 - sin^2theta)^0.5]`

The above formula corelates the Volume of the cylinder with respect to the crank angle. After defining the kinematics funtion, comes the input valiables, which includes the geometric parameters as well.

The vloume computation which includes the calculation of the pressure and the volume to yield the P-V diagram of the Otto Cycle.

The complete python code is illustrated below, which yields the P-V plot as well as the thermal efficiency of the engine, which can be calculated by :

otto = `[1-1/(cr^(gamma-1))]*100`

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 = 100

    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 = 9

# 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 | t2 = p2*v2*t1/(p1*v1)
t2 = p2 * v2 * t1 / (p1 * v1)

V_compression = engine_kinematics(bore, stroke, con_rod, cr, 180, 0)
# P_compression*V_compression^gamma = constant
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 | p3 = p2*v2*t3/(t2*v3)
p3 = p2 * v2 * t3 / (t2 * v3)

V_expansion = engine_kinematics(bore, stroke, con_rod, cr, 0, 180)
# P_expansion*V_expansion^gamma = constant
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 = p3*v3/t3 | t4 = p4*v4*t3/(p3*v3)
t4 = p4 * v4 * t3 / (p3 * v3)

# Thermal Efficiency for Otto cycle
eff = 1 - (1 / pow(cr, (gamma - 1)))
T_eff = eff * 100
print('Thermal Efficiency= %.2f %%' % (T_eff))

# Plotting for P-V Diagram
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()

Bearing the following graph of the Pressure V Volume.

The Thermal efficiency of the engine is calculated to be:

58.48%

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.