NGL Huff-n-Puff — 1D matrix screening model

Molecular-diffusion transport into a fracture-bounded matrix slab. Intuition & candidate screening — not an underwriting tool. Port of hnp.py.

Rock & transport
Primary depletion IC (§1c)
δ→0 weak drive, shallow black oil (Chittim). δ→1 strong solution-gas drive, volatile oil (Wolfcamp). Sets primary RF and free-gas saturation left behind.
Cycle schedule
View
Solvent reaches centimetres; depletion spans metres — ~100× apart. Zoom out to see So(x) nearly flat across the block while C(x) is a thin front at the fracture. That gap is the screen.

Saturation & solvent profiles

After the final cycle. x = distance from fracture face.

So post-primary (IC) So now Sg free gas C solvent (right axis 0–1)

Per-cycle response

Oil mobilised (bars, left axis) and solvent flowback % (line, right axis 0–100%).

The §1c screen, live — cum oil vs drive strength

Same L, D, soak, cycles; only δ changes. Weak-drive rock keeps more reachable oil.

Ratio weak÷strong = . The oil-saturation contrast is small; most of the signal is the free-gas term — injected solvent partitions into the gas phase in a swept, high-GOR well and does no work. set δ=0.10 · set δ=0.85

Model units. Oil is m³ per m² of fracture face; multiply by total fracture area A_f for well-scale volumes. This tool screens relative behaviour across rock and schedule — it is not calibrated to any single well and must not be cited as an absolute forecast. Production window is recorded but modelled as an instantaneous strip, so soak (not producing time) drives the physics here.