Horner Plot Analysis — P* Calculation
Spreadsheet
51 rows x 7 columns
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Horner Plot Analysis | ||||||
| 2 | Interpretation Inputs | ||||||
| 3 | Production time, tp | 48 | h | ||||
| 4 | Flow rate, q | 250 | STB/D | ||||
| 5 | FVF, Bo | 1.25 | bbl/STB | ||||
| 6 | Viscosity, μ | 1 | cP | ||||
| 7 | Porosity, φ | 0.2 | fraction | ||||
| 8 | Total compressibility, ct | 1.5E-05 | 1/psi | ||||
| 9 | Wellbore radius, rw | 0.354 | ft | ||||
| 10 | Net pay, h | 30 | ft | ||||
| 11 | Pwf (last flowing) | 4630.17 | psia | ||||
| 12 | Bourdet L (smoothing) | 0.2 | |||||
| 13 | |||||||
| 14 | Forward Model | ||||||
| 15 | Permeability, k | 50 | mD | ||||
| 16 | Skin factor, S | 5 | dimensionless | ||||
| 17 | Initial pressure, Pi | 5000 | psia | ||||
| 18 | Wellbore storage, C | 0.001 | bbl/psi | ||||
| 19 | Pwf (model) | 4630.170141 | psia | ||||
| 20 | Rate Schedule | ||||||
| 21 | 0 | 250 | |||||
| 22 | 48 | 0 | |||||
| 23 | |||||||
| 24 | Δt (h) | Pws model | Pws | Horner Time | log₁₀(HT) | IARF | Bourdet dPws/dlog₁₀(HT) |
| 25 | 0.1 | 4898.712398 | 4898.712398 | 481 | 2.682145076 | 0 | -46.8255967 |
| 26 | 0.5 | 4931.27367 | 4931.27367 | 97 | 1.986771734 | 0 | -39.46345168 |
| 27 | 1 | 4942.046338 | 4942.046338 | 49 | 1.69019608 | 0 | -35.70355117 |
| 28 | 2 | 4952.30237 | 4952.30237 | 25 | 1.397940009 | 0 | -34.79294042 |
| 29 | 4 | 4962.100745 | 4962.100745 | 13 | 1.113943352 | 1 | -34.34969637 |
| 30 | 8 | 4971.296808 | 4971.296808 | 7 | 0.84509804 | 1 | -34.12605642 |
| 31 | 12 | 4976.276121 | 4976.276121 | 5 | 0.6989700043 | 1 | -34.05635437 |
| 32 | 16 | 4979.573223 | 4979.573223 | 4 | 0.6020599913 | 1 | -34.0109587 |
| 33 | 20 | 4981.972479 | 4981.972479 | 3.4 | 0.531478917 | 1 | -33.98896079 |
| 34 | 24 | 4983.819221 | 4983.819221 | 3 | 0.4771212547 | 1 | -33.96832446 |
| 35 | 36 | 4987.524916 | 4987.524916 | 2.333333333 | 0.3679767853 | 1 | -33.93988149 |
| 36 | 48 | 4989.796515 | 4989.796515 | 2 | 0.3010299957 | 1 | -33.95127917 |
| 37 | |||||||
| 38 | Interpretation Results | ||||||
| 39 | IARF slope, m | -34.04893897 | psi/cycle | ||||
| 40 | P* (extrapolated) | 5000.060342 | psia | ||||
| 41 | P at Δt=1hr | 4942.510959 | psia | ||||
| 42 | Permeability, k | 49.74457505 | mD | ||||
| 43 | Skin factor, S | 4.928210195 | dimensionless | ||||
| 44 | Radius of investigation | 916.2810087 | ft | ||||
| 45 | Effective wellbore radius | 0.002562764908 | ft | ||||
| 46 | End of WBS (unit slope) | 0.1736460858 | h | ||||
| 47 | |||||||
| 48 | Validation | Input | Recovered | Error % | |||
| 49 | k (mD) | 50 | 49.74457505 | -0.5108499028 | |||
| 50 | S (dimensionless) | 5 | 4.928210195 | -1.435796097 | |||
| 51 | P* (psia) | 5000 | 5000.060342 | 0.001206840712 |
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.
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. The _PO.PTA.EndWBS LAMBDA estimates the end of pure wellbore storage (unit-slope period); IARF starts roughly 1.5 log cycles after that. For real data with noise, the stabilization band may be less obvious — adjust Bourdet L (_L) 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.
LAMBDA functions defined in this blueprint (_PO.PTA.*) represent common PTA calculations not yet available as native PO functions. Each LAMBDA is a candidate for a future PO.PTA.* function — see the Lambdas section for formulas and references.
Reference: Horner, D.R. (1951). "Pressure Build-up in Wells." Third World Petroleum Congress, The Hague.
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): Computed via
_PO.PTA.PermFromSlopeLAMBDA — k = 162.6 × q × Bo × μ / (|m| × h). - Skin (row 43): Computed via
_PO.PTA.SkinFromP1hrLAMBDA — S = 1.151 × [(P₁ₕᵣ − Pwf)/|m| − log₁₀(k/(φμctrw²)) + 3.23]. - Radius of investigation (row 44): Computed via
_PO.PTA.RinvLAMBDA — rinv = √(k·t / (948·φ·μ·ct)). - End of WBS (row 46): Computed via
_PO.PTA.EndWBSLAMBDA — tWBS = (200000 + 12000·S) × C × μ / (k·h). Requires wellbore storage coefficient C (from forward model or unit-slope estimate). - Validation (rows 49–51): 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.
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.