Waterflooding & Enhanced Oil Recovery

Recovering the oil that primary production leaves behind. Learn secondary recovery by waterflooding and gas injection, relative permeability and fractional flow, Buckley–Leverett displacement and the Welge tangent, mobility ratio and sweep efficiency, flood patterns, and EOR methods — thermal (steam, SAGD), gas (CO₂ miscible, hydrocarbon), chemical (polymer, surfactant, ASP) — plus CO₂-EOR with storage — with Python for fractional flow, mobility ratio and breakthrough saturation.

Primary recovery typically produces only 10–25% of oil in place. Waterflooding (secondary recovery) maintains pressure and sweeps oil to producers, raising recovery to 30–50%. Enhanced oil recovery (tertiary) changes fluid or rock properties to mobilise more.

Global average recovery is only about 35%, so every percentage point of improved recovery is worth billions of barrels.

An analogy

Waterflooding is like pushing honey out of a sponge with water: water tends to finger through and leave honey behind. Thickening the water (polymer) or making the honey thinner (heat, CO₂) gives a much more even push.

Recovery stages

Primary: natural drive. Secondary: water or gas injection for pressure maintenance and displacement. Tertiary (EOR): methods that change fluid properties or interfacial forces — thermal, miscible gas, chemical. Improved oil recovery (IOR) also includes infill drilling and smart well management.

Buckley–Leverett and sweep

Fractional-flow theory predicts a shock front of water saturation advancing through the reservoir, found with the Welge tangent. After breakthrough, water cut rises rapidly. Overall recovery = microscopic displacement efficiency (E_D, limited by residual oil trapped by capillary forces) × areal sweep (E_A, pattern and mobility ratio) × vertical sweep (E_V, layering and gravity).

EOR methods

Main categories:

Screening and CO₂-EOR with storage

EOR screening criteria match method to depth, API, viscosity, permeability and temperature (e.g. SAGD for < 10°API bitumen; CO₂ for light oils at depth > 2500 ft). CO₂-EOR recovers 5–15% extra OOIP and stores a large fraction of injected CO₂ permanently — a pathway to lower-carbon barrels and a bridge to CCS. Pilot projects, laboratory corefloods and simulation de-risk EOR before full-field implementation.

Formulas

Worked example: Mobility ratio

Given: k_rw 0.3, µ_w 0.5; k_ro 0.8, µ_o 5

Find: M.

Answer: 3.75 (unfavourable)

Worked example: Displacement efficiency

Given: S̄_w 0.546 at breakthrough, S_wc 0.2

Find: E_D.

Answer: 43%

Worked example: Overall recovery

Given: E_D 0.60, E_A 0.75, E_V 0.70

Find: E_R.

Answer: 31.5%

Fractional flow, mobility ratio and breakthrough

# Waterflood: fractional flow (Corey rel-perm) and mobility ratio
muo, muw = 5.0, 0.5
Swc, Sor = 0.2, 0.25
def krw(S): return 0.3 * ((S - Swc) / (1 - Swc - Sor)) ** 2
def kro(S): return 0.8 * ((1 - S - Sor) / (1 - Swc - Sor)) ** 2
def fw(S): return 1 / (1 + kro(S) * muw / (krw(S) * muo))
for S in (0.3, 0.4, 0.5, 0.6):
    print(f"Sw {S:.1f}: fw = {fw(S):.3f}")
M = (krw(1 - Sor) / muw) / (kro(Swc) / muo)
print(f"end-point mobility ratio M = {M:.2f} (M > 1: unfavourable, fingering)")
# Polymer raises water viscosity to 5 cP
print(f"with polymer (muw 5 cP): M = {(krw(1-Sor)/5.0)/(kro(Swc)/muo):.2f}")
# Welge tangent: breakthrough saturation
best, Sbt = 0, 0
for i in range(1, 550):
    S = Swc + i * 0.001
    slope = fw(S) / (S - Swc)
    if slope > best: best, Sbt = slope, S
print(f"shock front Sw = {Sbt:.3f}, fw = {fw(Sbt):.3f}, avg Sw at breakthrough {Swc + 1/best:.3f}")
# Sw 0.3: fw = 0.156
# Sw 0.4: fw = 0.550
# Sw 0.5: fw = 0.844
# Sw 0.6: fw = 0.964
# end-point mobility ratio M = 3.75 (M > 1: unfavourable, fingering)
# with polymer (muw 5 cP): M = 0.38
# shock front Sw = 0.452, fw = 0.728, avg Sw at breakthrough 0.546

With 5 cP oil and plain water, M = 3.75 — water fingers through, and at breakthrough 73% of the produced stream is already water. Polymer thickening the water to 5 cP gives M = 0.38 (favourable): a piston-like front and better sweep. The average saturation at breakthrough (0.546) means E_D = (0.546 − 0.2)/0.8 = 43% of oil displaced in the swept zone.

Common mistakes

Applications

Key takeaways

Going further