Nodal analysis finds the single rate at which a well can actually produce. The reservoir sets how much fluid it can deliver at a given bottomhole pressure (the IPR); the tubing and surface system set how much pressure is required to lift that fluid (the VLP). Where the two curves intersect is the operating point. Everything in this tool exists to define those two curves correctly and then read the intersection.
The workflow in one line
Phase → ① IPR → ② Fluid → ③ Wellbore → ④ VLP → ⑤ Surface → ▶ Solve Nodal → read the operating point → (optional) ⑦ Match to calibrate → (optional) ⑥ Sweep to optimise.
Then check the well can hold that rate. For a gas well the integrity panel reports the liquid-loading margin and the pressure at which the well stops lifting water; enter a perforated interval in ① and it adds the coning threshold. An intersection the well cannot sustain is arithmetic, not production.
Inputs live in the left panel, results on the right. Everything computes in your browser — no engineering data leaves the machine.
Access
The lock badge on the ▶ Solve Nodal button shows session state. If it reads 🔒, click the button once and sign in; the badge turns 🔓 and the solver runs. Sessions are shared across tools in the same browser, so signing in once unlocks the rest.
Worked examples — four benchmark cases
The Examples picker at the top loads four synthetic cases. They are benchmarks, not illustrations. Each was built by choosing a true skin, generating a four-point well test from the IPR at that skin with this engine's own correlations, then shipping the case with a deliberately wrong skin.
So loading a case gives an operating point that is wrong by a known amount. Running ◎ Run match in the Nodal Plot header, on the test points the case supplies, should recover the true skin and put the rate back where it belongs. The reference panel above the results reports all three numbers, so you can score the workflow rather than trust it.
| Case | Regime | Ships with | Should recover |
| A · Oil PI | Undersaturated, Pwf above Pb — linear PI is the correct form | skin 6.0 → 3,062 STB/d | skin 1.5 → 4,140 STB/d |
| B · Vogel | Saturated, Pwf below Pb — free gas curves the IPR | skin 0.0 → 1,904 STB/d | skin 3.0 → 1,425 STB/d |
| C · Gas | Dry gas on the backpressure form, deep and tight | skin 8.0 → 19,719 Mscf/d | skin 2.0 → 29,690 Mscf/d |
| D · High WC | Shallow mature well at 78% water cut — lift-limited, not reservoir-limited | skin 4.0 → 826 STB/d | skin 0.5 → 1,122 STB/d |
Case B is worth running twice: once as shipped, then switching the IPR model to Linear. The straight-line form fitted below the bubble point overstates the rate, which is the whole reason Vogel exists.
▣ Why synthetic rather than field data
A benchmark needs a known answer. The true skin of a real well is never known independently of the analysis being tested, so real data can demonstrate a workflow but cannot score it. These cases can, because the answer was chosen before the data was made. Editing any input clears the reference panel — it only describes the pristine case.
Step by step
1
Select the phase
Use the Oil / Gas toggle at the top. This switches units (STB/d vs Mscf/d), the available IPR models, the PVT correlations, and the required fluid inputs. Set it before entering anything else — switching later resets model selections that no longer apply.
2
① Reservoir & IPR — pick an input mode first
Two ways to define deliverability:
| Mode | Use when | You enter |
| Darcy | No well test yet, but you have petrophysics and a completion model | k, net pay h, φ, Sw, skin s, re, rw |
| Direct | You have a multi-rate or single-rate well test | PI, qmax, or the C and n pair |
In Darcy mode the tool derives PI (oil) or C (gas) from k·h and skin on every solve, and also reports a volumetric OOIP/OGIP from φ, h, Sw and the drainage area implied by re. Also set reservoir pressure Pr, temperature Tr, and bubble point Pb.
Perforated interval hp is optional. Enter it and the water-coning check runs; leave it blank and it is skipped.
3
② Fluid Properties
For oil: API gravity, gas specific gravity, water specific gravity, producing GOR, and water cut as a fraction. For gas: gas and water specific gravity. Surface temperature applies to both and anchors the wellbore temperature profile.
Water cut and GOR are the two inputs that move the VLP most. If either is uncertain, treat it as a sweep parameter in step 8 rather than committing to one number.
4
③ Wellbore & Survey
TVD drives hydrostatic head; measured depth drives friction length; the ratio implies the deviation. Enter tubing ID, absolute roughness, and average inclination from vertical. For a deviated well, an average inclination consistent with TVD/MD is sufficient at this level of modelling — the traverse is segmented, not a full survey integration.
5
④ VLP Model
Choose the multiphase correlation (see the table below) and the number of pressure-traverse segments. More segments give a smoother traverse and slightly better accuracy at the cost of speed; the default is adequate for most wells. Increase it when the well is deep, highly deviated, or the fluid changes phase strongly along the string.
6
⑤ Surface & Choke
Wellhead pressure is the outlet boundary of the VLP; separator pressure sets the downstream constraint. If a choke model is selected, enter the bean size in 64ths and the solver reports the wellhead pressure the choke would impose alongside the value you set. A large gap between the two means the assumed wellhead pressure and the choke are inconsistent — adjust one of them.
7
Solve, then read the intersection
Click ▶ Solve Nodal. The right panel returns the nodal plot, the pressure traverse, a system diagnostics box, and a written findings section.
Choosing an IPR model
| Model | Phase | Appropriate when |
| Linear (PI) | Oil | Undersaturated throughout: Pwf stays above bubble point. Straight line, single PI. |
| Vogel | Oil | Solution-gas drive with Pwf below Pb. Curvature from free gas reducing relative permeability to oil. |
| Fetkovich | Oil / Gas | Multi-rate test available; the C and n pair absorbs both Darcy and non-Darcy behaviour. |
| Backpressure (C, n) | Gas | Standard gas deliverability form. n near 1.0 is near-laminar; n approaching 0.5 indicates strong turbulence. |
▣ Rule of thumb
If the solved Pwf comes out below the bubble point while you are on Linear, the answer is optimistic. Switch to Vogel and re-solve.
▣ One zone — and when it isn’t
Every model above describes one producing zone. When several zones share the wellbore (a commingled completion), the well’s inflow is the composite IPR — the horizontal sum of the per-zone curves at a common Pwf — and a low-pressure zone flips from producer to thief once Pwf rises above its Pr. Build and inspect that composite in §8 Composite IPR below the results, or read the single vs. commingled completion comparison.
Choosing a VLP correlation
| Correlation | Best suited to |
| Beggs-Brill (1973) | General-purpose default. Handles inclination explicitly, so it is the first choice for deviated wells and for anything with significant water cut. |
| Hagedorn-Brown (1965) | Vertical or near-vertical oil wells at moderate to high liquid rates. Long production history behind it. |
| Gray (1974) | Gas and gas-condensate wells carrying modest liquid loads. Developed for exactly that regime. |
Correlation choice can move the predicted rate materially. When a measured test point exists, run the history match in step 9 before trusting any single correlation, and note in the report which one was used.
Reading the results
- Nodal plot — IPR and VLP curves with the intersection marked. If the curves do not cross, the well cannot flow under the stated conditions: reservoir pressure is too low, wellhead pressure too high, water cut too great, or the tubing is oversized for the rate.
- Operating point — the amber dot, with a dashed leader running to each axis and the value printed where it lands: rate on the horizontal axis, flowing pressure on the vertical. The two numbers can be read straight off the chart without going back to the results panel.
- Legend — sits in the top-right corner by default, clear of curves that fall from left to right. Drag it anywhere inside the plot if it covers something, and double-click to send it back to the corner. The position survives re-solving and sweeping.
- Shaded rate bands (gas wells) — the outflow curve is drawn in three colours. Blue above the Turner critical unloading rate, amber between Turner and Coleman, red below Coleman. An intersection sitting inside a shaded band is not a producible operating point: the well cannot carry its liquid, the column loads up, and flow turns intermittent. The thresholds are evaluated at the wellhead pressure in ⑤, so they move when that changes.
- Pressure traverse — pressure against depth at the operating rate. A steep upper section points to friction-dominated flow; a flat one to hydrostatic-dominated flow. This is what tells you whether a tubing change will help.
- System diagnostics — the derived parameters actually used: k·h, skin, the resulting PI or C, qmax, volumetric in-place volumes when in Darcy mode, and the choke consistency check.
- Findings — written interpretation including drawdown magnitude and the fraction of reservoir pressure it represents.
▣ Calibrated or not
An unmatched solve is a forward prediction from the inputs, not a calibrated forecast. The generated report says which it is: it carries a Calibration subsection reporting the matched parameter, its before-and-after values, RMSE, R² and point count — or, if no match has been run, states plainly that the model is uncalibrated. Quote the rate accordingly.
⚠ Watch drawdown
Drawdown reported as an unusually large share of reservoir pressure is a signal, not a result: check for sand-face or completion limits, and confirm the skin used is credible before quoting the rate.
⑦ Measured data and history match
Enter test points one per line as rate, Pwf. Two or more points give a meaningful fit; a single point calibrates but cannot be validated.
Choose what the match tunes. The dropdown in ⑦ lists every parameter that can absorb the residual for the current input mode and IPR model, and explains what each choice means:
| Mode | Available |
| Darcy | Skin, permeability k, net pay h, reservoir pressure Pr |
| Direct · Linear | PI, Pr |
| Direct · Vogel | qmax, Pr |
| Direct · Fetkovich | C, n, Pr |
| Direct · Backpressure | C, n, Pr |
⚠ Skin, k and h cannot be told apart by the fit
All three scale the same Darcy productivity term, so any of them will reach the identical R² from the same data — verified to machine precision on the worked examples, where matching skin, k or h each returns R² 0.999689 and the same scaling factor. The fit cannot tell you which is wrong, only which explanation you have chosen. Pick the one you have least confidence in and treat the other two as fixed. Pr is the exception: it moves the intercept rather than the slope, so it changes the shape of the fit and is genuinely distinguishable.
The default is skin in Darcy mode, and the productivity term in Direct mode. The action itself sits in the Nodal Plot header rather than in the sidebar, because the measured points are drawn on that chart and the fit is best judged where it can be watched moving onto them. It appears as soon as at least one valid point is entered, carries the point count, and reads Re-run match once a match exists. Click it and the sidebar panel reports the parameter before and after, the RMSE, R², and the point count.
- R² above roughly 0.9 — the model form fits the data.
- R² in the middle range — usable, but consider whether a different IPR form is more appropriate.
- Low R² — the model form is probably wrong, or the test points come from different reservoir conditions and should not be fitted together.
Matching adjusts the inflow side only. If the residual sits mostly in the VLP, change the correlation rather than forcing the skin.
To see what a good match looks like before trusting one of your own, load a worked example and run the match there: all four recover their declared skin to within 0.03 at R² above 0.999.
Well-integrity checks — liquid loading and coning
The nodal intersection tells you the rate at which inflow and outflow balance. It does not tell you whether the well can sustain that rate. Two mechanisms end wells at rates the intersection considers perfectly healthy, and both appear automatically under the results once a case is solved.
Liquid loading — gas wells
A gas well carries its water as entrained droplets. Below a critical velocity the droplets fall back, the column loads up, flow turns intermittent, and the well dies — typically with most of the gas still in the ground.
▣ v_c = C·[σ(ρL − ρg)]^0.25 / ρg^0.5 · q_c = 3056·P·v_c·A/(T·Z)
Turner's droplet-transport result gives C = 1.593; he found field data sat about 20% above it and recommended C = 1.912 for design. Coleman (1991) showed the unadjusted value fits wells below roughly 1,000 psi. Both thresholds are reported, because choosing between them is a judgement about the well rather than a constant. Evaluated at the wellhead, where pressure is lowest and the criterion most demanding.
| Status | Meaning |
| Unloaded | Above both thresholds. The margin shrinks as pressure falls and water cut rises, so repeat the check along the depletion path. |
| Marginal | Between the Coleman and Turner thresholds. Usually flowing intermittently. Plan the intervention before it dies, not after. |
| Loading | Below even the unadjusted threshold. Smaller tubing, velocity string, plunger lift or compression are the levers. |
The same thresholds are drawn on the nodal plot: the outflow curve turns amber below the Turner rate and red below Coleman, with the two rates marked. A curve that crosses the IPR inside a shaded band is telling you the intersection is arithmetic rather than production.
The check also reports a loading abandonment pressure: reservoir pressure is swept downward and the nodal intersection re-solved until the rate falls below the Turner critical rate. On worked example C that happens at about 2,320 psia, roughly half the current reservoir pressure.
▣ This is the number a material balance should abandon at
A gas material balance normally takes Pab as an economic input. For a wet gas well that is the wrong quantity: the well stops when it can no longer lift water, which usually happens well above any economic pressure floor. Carry the loading abandonment pressure across as Pab rather than guessing, particularly on an aquifer-supported reservoir where the recovery calculation is highly sensitive to it.
Send … to material balance under the check does exactly that. It records the pressure, the reservoir pressure it was swept from, the critical rate, and the wellhead pressure and tubing it assumed. The material-balance tool then offers the value with its age and provenance shown — it never adopts it silently, because a number computed for one completion is not automatically right for the tank.
Water coning
Drawdown pulls the water contact upward beneath the perforations. Below a critical rate gravity holds the cone in place; above it the cone is unstable and breakthrough follows. Enter a perforated interval hp in ① to enable the check; leave it blank to skip.
▣ q_c = 0.001535 · (ρw − ρo) · k · (h² − hp²) / [ μ·B·ln(re/rw) ]
Meyer & Garder (1954), with the gas form carrying an extra factor of 5.615 because Bg converts to reservoir cubic feet where Bo converts to barrels. The correlation assumes a homogeneous formation and a fully developed steady cone: it gives a stability threshold, not a breakthrough time. The threshold falls as the contact rises, so a margin today is not a margin for the life of the well.
Coning is a completion-scale phenomenon — vertical flow toward a perforated interval. It has no place in a tank material balance, which carries no vertical resolution at all. Its effect on ultimate recovery shows up there instead through the sweep-efficiency term.
⑥ Sensitivity sweep
Pick one parameter — tubing ID, wellhead pressure, choke size, reservoir pressure, water cut, or GOR — and enter comma-separated values. Each value produces its own VLP or IPR curve and its own operating point, so the sweep answers a design question directly.
| Sweep | Question it answers |
| Tubing ID | Would a tubing change lift rate, or simply move the well into a friction-dominated regime? |
| Wellhead P | What does compression or a facility pressure change buy? |
| Choke size | What is the rate response across bean sizes? |
| Reservoir P | At what depletion level does the well stop flowing? |
| Water cut / GOR | How much does the forecast depend on an uncertain fluid input? |
Sweep one parameter at a time. Combined sweeps hide which variable is responsible for the change.
Uncertainty — what to measure better
The sweep in ⑥ answers "what if this were different". The uncertainty study answers a harder question: given that several inputs are uncertain at once, how uncertain is the operating rate, and which uncertainty is doing the damage.
The tornado and Monte Carlo methods, the † marker, rejection warnings, the sample-count behaviour and everything a generated report carries are the same in every RFour tool and are documented once, in Uncertainty and Reporting. What follows is only what is specific to this tool.
How many samples — measured, not assumed
The default is 1,000. A single evaluation here solves a full nodal intersection and costs roughly 35 ms, so the sample count is a direct trade against waiting.
| Samples | P90 | P50 | P10 | Top contributor | Wait |
| 250 | 541 | 804 | 1,186 | k 44% | ~9 s |
| 500 | 541 | 795 | 1,162 | k 40% | ~18 s |
| 1,000 | 537 | 795 | 1,150 | k 41% | ~35 s |
| 2,000 | 534 | 805 | 1,150 | k 41% | ~70 s |
At 1,000 every percentile sits within about 1% of the 2,000-sample answer and the contribution shares are identical, so the second minute buys a smoother histogram and nothing else. On this example the second and third places keep swapping between skin, GOR and reservoir pressure at every sample count, because all three genuinely sit in the same 14–17% band — a real tie that only narrower input ranges will break.
▣ The structural questions it cannot reach
A distribution over the listed parameters says nothing about whether the IPR form suits the flow regime, whether the lift correlation suits the fluid and the deviation, or whether the case has been matched to measured data at all. Those are settled by the checklist below, not by sampling.
Saving and reporting
- ↓ Export writes the complete case — every input, model selection, and match result — to a JSON file. ↑ Import restores it exactly.
- 📂 File → 📄 Report builds a self-contained HTML report of the solved case — inputs, model selections, calibration state, operating point, charts and interpretation. Solve before generating so the report reflects current inputs.
- On a worked example the provenance banner names the declared true skin and reports what your match recovered.
- An unmatched case is labelled as such in the report, and the rate is presented as a prediction rather than a calibrated forecast.
- ↺ Reset returns every field to defaults. It cannot be undone — export first if the case matters.
Report toolbar, PDF export, provenance banners and how an uncertainty study travels with a report: see Uncertainty and Reporting.
QC checklist before you quote a number
- Phase toggle matches the well.
- Pwf at the operating point sits on the correct side of the bubble point for the IPR model chosen.
- TVD and MD are consistent with the stated inclination.
- Wellhead pressure is consistent with the choke result, if a choke is modelled.
- The VLP correlation suits the fluid and the deviation.
- At least one measured point has been matched, or the case is explicitly labelled as unmatched.
- Water cut and GOR reflect current conditions, not the initial completion.
- If the case is unmatched, the report says so and the rate is presented as a prediction rather than a calibrated forecast.
- For a gas well, the liquid-loading margin has been checked — and the loading abandonment pressure carried across to any material-balance forecast on the same reservoir.