Translated from the author's Korean original. Read the original (한국어)
Why Gasoline Engines Stop at a Compression Ratio of 12 — Otto vs Diesel
Doubling alpha from 3 to 6 leaves the r=9 efficiency stuck at 0.5848. The knob that moves it is r.
In 1919 Thomas Midgley, at a refinery, was chasing a metallic ping in car engines. Raise the compression ratio and the power goes up. Cross a line and the fuel detonates before the spark plug fires. That ping is knock. Fold the reciprocating engine into four thermodynamic processes and the efficiency formula is what's left. Python at the end scores Otto against Diesel at the same ratio.
Push the Compression Ratio Up, and Where Does It Stop?#
The compression ratio (cylinder volume at its largest over its smallest) is the efficiency knob. Squeeze the air harder and the same fuel returns more work.
Temperature hits first. Adiabatic compression shrinks the volume and heats the gas together. Past the fuel's autoignition temperature, the mixture explodes before the flame arrives. That is knock. Pistons and bearings go first.
The compression-ratio slider stretches the P–V loop sideways. The heat slider only shoves that same loop upward.
The shaded area is the net work of one cycle. The efficiency readout barely moves when the heat goes up. Knock cares about the left end of the loop, the temperature after compression.
In 1921 Midgley added tetraethyl lead to delay ignition. The octane rating (an antiknock index) came out of that. Additives run out of room too. Gasoline engines usually sit between 9 and 12.
Four Processes for an Engine — the Air-Standard Otto Cycle#
A real engine tangles intake, combustion, and exhaust together. To make it tractable, we fix the working fluid as a set amount of ideal gas (air) and replace combustion with "heat coming in from outside." That simplification is the Otto cycle.
It closes in four processes.
- 1→2: adiabatic compression (the piston squeezes the air)
- 2→3: constant-volume heat addition (volume fixed, instant combustion)
- 3→4: adiabatic expansion (air pushes the piston — the power stroke)
- 4→1: constant-volume heat rejection (heat dumped through the exhaust)
In an adiabatic process, the compression ratio and temperature are tied together:
Here is temperature and is the specific heat ratio (, about 1.4 for air). A larger compression ratio drives up more steeply. The seed of knock sits in that relation. The sideways stretch of the loop, back at the slider, is this same rise. A nozzle that buys speed by expanding is a different machine: the duct has to widen past the throat. In the engine, that expansion pushes a piston.
Efficiency Is Set by the Compression Ratio Alone#
Thermal efficiency is work done over heat received. In constant-volume heating and rejection, heat is proportional to a temperature difference, so
where is the heat received and the heat dumped. Substitute the adiabatic relations , and all the temperatures cancel, leaving a strikingly simple result:
Efficiency keeps only the compression ratio and the specific heat ratio . How much fuel burned () dropped out of the formula. That is why the heat slider could not move the readout.
The printed 56.5% is at . The 63.0% is . With the loss term is . Flip it and the temperature ratio is : about 2.30 at and about 2.70 at . The listing takes intake air at 300 K, so the end of compression lands near 690 K and 810 K. Four notches, from 8 to 12, buy 6.5 points of efficiency and about 120 K. The efficiency slope flattens. The temperature slope does not. Knock lights up before the efficiency does.
The closed form at is 0.5848. The loss means is about 2.41 and is about 722 K. The heat knob alpha sets , so alpha 3 puts near 2170 K and alpha 6 near 4330 K. , so the rejected heat scales by the same factor. Alpha cancels in . Doubling the heat leaves 0.5848 nailed in place.
A ratio of 8 is about 56%, and 12 is about 63%. The bare numbers want another notch. Knock blocks the road near 12.
Diesel Clears the Wall with Constant-Pressure Heating#
Rudolf Diesel took another route. He does not premix the fuel. He compresses only air. After raising the end-of-compression temperature above the autoignition point, he injects fuel that burns the instant it lands. No spark plug. With no premixed charge to knock, the compression ratio can climb to 15–22.
The difference is how heat goes in. Because the fuel injects and burns gradually, the pressure stays nearly constant while the volume grows. It is constant-pressure heating, not constant-volume.
A new dimensionless number enters here: the cut-off ratio , how many times the volume expanded during constant-pressure heating. Efficiency changes to:
It is the Otto expression multiplied by one extra fraction. That fraction is always greater than 1 when . So at the same compression ratio, Diesel loses to Otto. But Diesel can run a far higher compression ratio, and in a real engine it ends up more efficient.
At the Same Compression Ratio, Otto Wins#
Lay both cycles on the compression-ratio axis and the ranking shows up before the plot does. The curves lie flatter toward the right. One extra unit of ratio buys less efficiency. At the same , cyan (Otto) sits above amber (Diesel). The red band is gasoline's practical wall. Otto stops in front of it. Diesel walks through and runs further right.
Drop the cut-off toward 1.2 and constant-pressure heating starts to look like constant-volume heating. As the two formulas meet. That scale is how far Diesel has wandered from Otto. The table prints the gap first.
Python — Measuring Both Cycles Directly#
The closed form has to come out of the state temperatures. The listing checks that.
import numpy as np
K = 1.4 # specific heat ratio of air (cp/cv)
def otto_efficiency(r, k=K):
"""Otto cycle: constant-volume heating, compression ratio r"""
return 1.0 - 1.0 / r ** (k - 1)
def diesel_efficiency(r, cutoff, k=K):
"""Diesel cycle: constant-pressure heating, ratio r, cut-off ratio"""
return 1.0 - (1.0 / r ** (k - 1)) * (cutoff ** k - 1) / (k * (cutoff - 1))
for r in [8, 12, 18, 22]:
eo = otto_efficiency(r)
ed = diesel_efficiency(r, cutoff=2.0)
print(f"r={r:2d} Otto={eo*100:5.1f}% Diesel(rc=2)={ed*100:5.1f}%")Output:
r= 8 Otto= 56.5% Diesel(rc=2)= 49.0%
r=12 Otto= 63.0% Diesel(rc=2)= 56.7%
r=18 Otto= 68.5% Diesel(rc=2)= 63.2%
r=22 Otto= 71.0% Diesel(rc=2)= 66.0%The cut-off slider moves only the amber curve, and the horizontal axis is the column in the table.
At the default the gap is 7.5 points at (56.5 versus 49.0), 6.3 points at (63.0 versus 56.7), and still 5.0 points at (71.0 versus 66.0). The gap shrinks. The sign does not flip. Pull the slider to 1.2 and the curves sit on each other. With and the Diesel fraction is . Since is about 2.639, the fraction is about 1.171. Otto's loss at is 37.0%. Times 1.171 that is 43.3%, and the efficiency is 56.7%, the same line as the table.
Now build efficiency directly from the state temperatures and compare with the closed form.
def otto_from_states(r, alpha, k=K):
"""efficiency built from state temperatures (alpha = P3/P2, the heat knob)"""
T1 = 300.0 # K, intake air
T2 = T1 * r ** (k - 1) # 1->2 adiabatic compression
T3 = T2 * alpha # 2->3 constant-volume heating
T4 = T3 / r ** (k - 1) # 3->4 adiabatic expansion
q_in = T3 - T2 # cv cancels
q_out = T4 - T1
return 1.0 - q_out / q_in
print(otto_from_states(9, alpha=3.0)) # 0.5848...
print(otto_from_states(9, alpha=6.0)) # 0.5848... same even with more heat
print(otto_efficiency(9)) # 0.5848...All three lines print the same 0.5848. Doubling the heat knob alpha from 3 to 6 leaves efficiency untouched. That confirms in code why the heat slider in the P–V simulation never moved the efficiency.
Stop at 12, or cut the cut-off ratio#
At Otto is 63.0% and Diesel at a cut-off of 2 is 56.7%. On a fixed ratio, Otto is the pick. Gasoline cannot keep that condition. The premixed charge hits knock and 12 is the end of the road. The formula keeps only the ratio and the specific-heat ratio. How much fuel burns sets the size of the output, not the efficiency.
Diesel compresses air alone, takes the ceiling off, and runs at 15–22. Diesel at is 63.2%, level with Otto at 12. At it leads at 66.0%. The loss at equal ratio is the cut-off fraction. The decision that overturns it is allowing a higher ratio. A different wall, where the liquid boils because the pressure fell first, is vapor pressure ahead of temperature.
Related
Share if you found it helpful.