Horner Plot Analysis — P* Calculation
Description
Pressure buildup interpretation using Horner semilog analysis with Bourdet derivative for IARF identification. Includes forward model for synthetic data generation and round-trip validation.
Workflow
- Interpretation Inputs (rows 3–12): Reservoir and fluid properties needed for any buildup analysis — tp, q, Bo, μ, φ, ct, rw, h, Pwf, and Bourdet smoothing parameter L. These are always required regardless of data source.
- Forward Model (rows 15–22): Optional validation block. Enter known k, S, Pi, C to generate synthetic Pws via PO.PTA.Pw.VW with built-in superposition. The rate schedule (rows 21–22) defines constant-rate drawdown at q followed by shut-in at tp. Pwf_model (row 19) verifies consistency with the Pwf input.
- Data Table (rows 24–36): Column A = shut-in time Δt. Column B = synthetic Pws from the forward model. Column C = measured Pws (defaults to =B for self-validation; replace with real gauge data). Columns D–E = Horner time coordinates. Column F = IARF flag (1 = include in straight line, 0 = exclude). Column G = Bourdet smoothed derivative on the log₁₀(HT) axis.
- IARF Selection: Examine column G for a stabilization plateau. Set column F = 1 where Bourdet values are approximately constant. Set F = 0 for early-time points affected by wellbore storage and transition, and late-time points showing boundary effects. The derivative plateau value equals the semilog slope m.
- Slope, m (row 39): AVERAGEIF averages Bourdet derivative values where IARF = 1. This gives the semilog slope m in psi/cycle — the fundamental quantity for all interpretation results.
- *P (row 40)**: Intercept of the IARF straight line at log₁₀(HT) = 0 (HT = 1, infinite shut-in). Computed from the average Pws and average log₁₀(HT) of IARF-flagged points and the slope m.
- P₁ₕᵣ (row 41): Pressure on the IARF straight line at Δt = 1 hour, used in the skin equation.
- Permeability (row 42): k = 162.6 × q × Bo × μ / (|m| × h), standard oilfield units.
- Skin (row 43): S = 1.151 × [(P₁ₕᵣ − Pwf)/|m| − log₁₀(k/(φμctrw²)) + 3.23]
- Validation (rows 47–50): Compares forward model input parameters against interpretation results. Error percentages quantify round-trip accuracy. Expected: k < 1%, S < 2%, P* < 0.01% on clean synthetic data.
Notes
Bourdet derivative requires ascending x-values. The log₁₀(Horner Time) axis is naturally descending as Δt increases — this is the standard Horner convention. SORT/SORTBY are used inline in every Bourdet cell to reverse the array to ascending order before passing to PO.DCA.Diag.Bourdet. A proposed enhancement to auto-detect descending x would eliminate this boilerplate (see POMCP-ENHANCEMENT-bourdet-descending-x.md).
IARF flag column (F) uses 1/0 numeric values, not TRUE/FALSE. Boolean literals can be interpreted as text strings during blueprint insertion, causing AVERAGEIF to return #DIV/0! in Excel. Numeric 1/0 flags work reliably in both the calc engine and Excel.
For the default synthetic case (k=50 mD, S=5, C=0.001 bbl/psi), IARF begins at approximately Δt ≥ 4h. For real data with noise, the stabilization band may be less obvious — adjust Bourdet L (B12) between 0.1 and 0.5 to control smoothing.
Constant rate assumption. The Horner method assumes constant rate during the drawdown period. For variable-rate production history before shut-in, replace with Agarwal equivalent time analysis, or pass the full rate schedule to PO.PTA.Pw.VW which handles superposition internally via the prod_data array parameter.
For real data use. Replace column C (Pws) formulas with measured gauge pressures. The forward model block (rows 14–22) can be cleared or ignored. All interpretation results derive from column C only.
Reference: Horner, D.R. (1951). "Pressure Build-up in Wells." Third World Petroleum Congress, The Hague.
Spreadsheet Preview
50 rows x 7 columns
How to use this blueprint
- In Excel, go to the Petroleum Office ribbon tab and click Blueprint Manager
- Search for Horner Plot Analysis — P* Calculation
- Click on the blueprint to preview the spreadsheet template
- Click Insert to place it into your worksheet. Modify the input values to match your data.