What the tool does
The reservoir is treated as a tank at uniform pressure. The tool finds the in-place volume and drive parameters that best reproduce the observed pressure history: it marches the material balance equation forward month by month, solving for pressure at each step, and regresses the parameters to minimise the difference between modelled and measured pressure (RMSE).
What it produces
OOIP / GIIP, water influx We, drive indices (DDI·SDI·WDI·CDI·TDI), recovery factor, time to abandonment pressure, inter-tank transfer.
OutputsWhat it needs
Dated reservoir pressures and cumulative production (oil, gas, water), a handful of PVT constants, and a drive mechanism. Three rows is enough to solve.
InputsWhat it ignores
Spatial distribution, relative permeability, individual well behaviour, coning, pressure gradients. A tank is always at one uniform pressure.
Out of scopeEarly screening, volume verification, drive-mechanism identification and teaching. Detailed development planning needs a 3D numerical simulator.
The interface
Five regions, from top to bottom.
| Region | Contents |
|---|---|
| Title bar | File / Analysis / View / Help menus; on the right, a summary chip for the current model and the light/dark toggle. |
| Toolbar | Run Analysis Example Data Clear, the fluid selector, and CSV Report. |
| Sidebar (left) | Every input panel. Click a panel title to collapse or expand it. The badge beside a title says what the panel applies to: shared means all tanks, tank means the currently selected tank only. |
| Stage (right) | Warning box → five KPIs → two charts → five tabbed panels. |
| Status bar | Solver state, fluid type, history row count, time of last run, result summary. |
The Method panel at the bottom of the sidebar always shows the governing equations for the current fluid mode. Help → Method & Assumptions jumps straight to it.
The basic workflow
The tool opens with example data already loaded and solved. Replacing it with your own case goes like this.
Choose the fluid
In the toolbar's Fluid selector, pick Oil · Black-oil (Havlena–Odeh) or Dry Gas · P/z Material Balance. Switching fluid resets the history table to that fluid's example data, so make this your first choice.
Set up the tank and PVT
For a single tank, only the initial pressure Pi needs attention in Tanks. Then fill in Fluid & PVT: temperature, bubble point, Boi, Rsi, co, z and Bw. Derived Bgi and Derived Bob update as you type, so a typo shows up immediately.
Pick the drive mechanism
Set gas cap ratio m and the rock/water compressibilities in Drive Mechanism, and choose an aquifer model in Aquifer. If you don't yet know which applies, leave the default (Pot) and let the Campbell plot in section 8 decide.
Enter the production history
Type it into the Production History tab, or use File → Import History from CSV…. You need at least three rows, and the pressure must actually change across the history for the in-place volume to be resolvable.
Solve, then match
Run Analysis (⌥R) fits the in-place volume N only. If the residual is large, tick more parameters in History Match Regression and press Run Regression (⌥G).
Verify and export
Check row-by-row residuals in Match Diagnostics and physical plausibility in Diagnostic Plot. Export with CSV (⌥S) or Report (print to PDF).
Input reference
Listed in sidebar order. The names in these tables match the labels on screen exactly.
4.1 Model Identification global
A single field: the model name. It appears in the title-bar chip, as the printed report
heading, and in the exported CSV filename. When used as a filename, anything other than
letters, digits, . and - becomes _.
4.2 Tanks per tank
| Field | Unit | Default | Notes |
|---|---|---|---|
| Tank name | — | Tank 1 | Used for the pressure column heading in the history table, chart legends and the regression list. |
| Initial pressure Pi | psia | 4200 | The datum for the material balance. Minimum 15. If the bubble point exceeds Pi it is clamped to Pi and the tank is treated as saturated, with a warning. |
| Production share | % of field | 100 | This tank's share of total field production. All shares must add to 100%; the running total is shown as Allocation total at the bottom of the panel (green = balanced, amber = not). |
+ Tank adds a tank by splitting the largest existing share in half
and copying Pi from the current tank. The × on a chip removes a tank, returns its
share to the first tank, and deletes any connections that referenced it. At least one tank
must remain.
4.3 Tank Connections shown only with 2+ tanks
Flow between two tanks is proportional to their pressure difference.
+ Add connection adds a row; pick the two tanks and enter T. Selecting the same tank on both sides is corrected automatically. T = 0 is equivalent to no connection. If you create no connections at all, the tanks are solved as fully independent compartments and the tool warns you.
4.4 Fluid & PVT shared by all tanks
| Field | Unit | Default | Notes |
|---|---|---|---|
| Reservoir temp. T | °F | 220 | Feeds directly into Bg. Used in both fluid modes. |
| Bubble point Pb | psia | 3200 | Oil mode only. The Bo and Rs correlations branch at this pressure. |
| Oil FVF at Pi Boi | rb/stb | 1.32 | Oil mode only. Oil formation volume factor at initial pressure. |
| Solution GOR Rsi | scf/stb | 650 | Oil mode only. Held constant above Pb. |
| Oil compressibility co | 1/psi | 0.000012 | Oil mode only. Sets the slope of Bo in the undersaturated region. |
| Gas deviation factor z | — | 0.92 | Held constant across the whole history. Range 0.2 – 1.5. |
| Water FVF Bw | rb/stb | 1.03 | Converts produced water to reservoir conditions. |
Derived Bgi and Derived Bob are not inputs — they are read-outs computed from the values above. If Bgi looks wrong, suspect the temperature or z.
4.5 Drive Mechanism per tank
| Field | Unit | Default | Notes |
|---|---|---|---|
| Gas cap ratio m | GIIP·Bgi / N·Boi | 0 | Ratio of gas cap volume to oil zone volume. Oil mode only — in dry-gas mode any value is ignored and a warning is shown. 0 means no gas cap. |
| Connate water Swc | fraction | 0 | Connate water saturation. Range 0 – 0.95. |
| Formation compr. cf | 1/psi | 0 | Rock compressibility. |
| Water compr. cw | 1/psi | 0 | Connate water compressibility. |
Swc, cf and cw together form the rock and connate-water expansion term.
With all three at zero the term disappears. They default to zero so that the built-in examples reproduce exactly. In real data this term matters more the more undersaturated the reservoir is.
4.6 Aquifer per tank
Each tank can carry a different aquifer model. Changing the model shows only the inputs that model needs, and rebuilds the regression parameter list to match.
| Model | Behaviour | When to use it |
|---|---|---|
| None | We = 0 | Volumetric depletion drive. Use when you are confident there is no aquifer, or when the Campbell plot is flat. |
| Pot | We = J·(Pi − p) instantaneous, path independent |
The simplest one-parameter model, and the default. A good first attempt. It responds to pressure drop with no time lag. |
| Schilthuis | dWe/dt = C·(Pi − p) steady state |
An effectively infinite aquifer holding its boundary pressure. Influx accumulates with time, so support grows through the history. |
| Fetkovich | finite aquifer, pseudo-steady state depletes and weakens |
A limited aquifer that runs out of energy over time. Useful for reproducing a late-life steepening of the pressure decline. |
| Carter–Tracy | unsteady state van Everdingen–Hurst approximation |
The most rigorous option. Use it when you know the aquifer's rock and fluid properties (k, φ, μw, ro, h, θ). Solved recursively, without superposition. |
Inputs by model
| Model | Field | Unit | Default |
|---|---|---|---|
| Pot | Aquifer strength J | MMrb / psi | 0.0015 |
| Schilthuis | Influx constant C | MMrb / (psi·day) | 0.000002 |
| Fetkovich | Aquifer volume Wi | MMrb | 500 |
| Productivity index J | rb / (day·psi) | 4 | |
| Aquifer total compr. ct | 1/psi | 0.000006 | |
| Carter–Tracy | Permeability k | md | 50 |
| Porosity φ | fraction | 0.2 | |
| Water viscosity μw | cp | 0.5 | |
| Reservoir radius ro | ft | 3000 | |
| Aquifer thickness h | ft | 50 | |
| Encroachment angle θ | degrees | 60 | |
| Aquifer total compr. ct | 1/psi | 0.000006 |
θ is the fraction of the reservoir's circumference in contact with the aquifer: 360° for a fully surrounded reservoir, 60° for contact along one flank. Carter–Tracy influx scales directly with θ, so this single value is a strong lever on aquifer strength.
4.7 History Match Regression
Tick the parameters you want fitted. The list rebuilds itself according to the number of tanks, the fluid mode and each tank's aquifer model. Section 6 covers it in full.
4.8 Forecast Assumptions
| Field | Unit | Default | Notes |
|---|---|---|---|
| Forecast period | months | 60 | Forecast length beyond the last history date. Range 1 – 600. |
| Abandonment pressure | psia | 800 | A tank is shut in once its pressure falls to this value. Minimum 15. |
| Oil rate | Mstb/day | 10 | Oil mode only. Constant field rate through the forecast. |
| Gas rate | MMscf/day | 18 / 100 | 18 in oil mode; switching to dry gas changes it to 100 automatically. |
| Water rate | Mstb/day | 4 | Water production through the forecast. |
| Reallocate rate… | checkbox | on | Appears only with 2+ tanks. When on, a shut-in tank's share of production moves to the tanks still on line. |
Forecast rates are field totals. Each tank carries its Production share of them. A rate of zero means the reservoir never depletes, which makes the forecast meaningless — the tool warns you when that happens.
Entering production history
5.1 Typing into the table
The columns of the Production History tab:
| Column | Unit | Notes |
|---|---|---|
| Date | YYYY-MM-DD | Entered with a date picker. Out-of-order rows are sorted automatically at run time. |
| Reservoir pressure | psia | With several tanks you get one column per tank name. Leave a cell blank and that tank is simply excluded from the match at that date. |
| Cum. oil | MMstb | Cumulative, not incremental. Ignored in dry-gas mode. |
| Cum. gas | Bscf | Cumulative. This is the primary production stream in dry-gas mode. |
| Cum. water | MMbbl | Cumulative water produced. |
| Comment | — | Free text. Has no effect on the calculation. |
What makes a row count
- The date is filled in.
- At least one tank pressure is a number greater than zero.
You need three or more such rows before the tool will solve.
The number beside the tab title and history rows in the status bar both show
how many rows are actually being recognised.
Buttons under the table: + Add row appends a blank row,
Load sample reloads the example data,
Clear all empties the table. The × at the end of each
row deletes it.
5.2 Importing CSV
Use File → Import History from CSV…. No header row is needed —
only lines that begin with a YYYY-MM-DD date are read and
everything else is skipped, so you can feed it an existing report and it will pick out
just the history rows.
Importing replaces the entire history table. The number of pressure columns must match the number of tanks you have already created, so create the tanks first, then import.
History matching
6.1 Two ways to run
Run Analysis ⌥R
Regresses the in-place volume N (one per tank) and nothing else. Every other parameter stays exactly as entered in the sidebar. Fast, and the result is stable.
Standard runRun Regression ⌥G
Fits N plus whatever is ticked in History Match Regression. Afterwards the panel reports the RMSE before and after the run.
Extended runN is always regressed, in both cases. Unticking it does not fix it — in a material balance, N is a quantity determined by the observed pressures, not one you specify.
6.2 What can be regressed
| Parameter | Shown when |
|---|---|
| In-place volume | Always — one per tank, ticked by default |
| Gas cap ratio m | Oil mode |
| Aquifer strength J | Pot model |
| Influx constant C | Schilthuis model |
| Aquifer volume Wi · PI J · ct | Fetkovich model |
| k · φ · μw · ro · h · θ · ct | Carter–Tracy model |
| Transmissibility | When connections exist — one per connection |
With several tanks the list is grouped per tank, each group headed by that tank's colour dot. When the regression finishes, the fitted values are written back into the sidebar, so what is on screen always describes the model that is plotted.
6.3 Judging the match
The KPI History match RMSE is the sole objective function: the root-mean-square residual over every (date × tank) pair that has an observed pressure, in psi.
| RMSE | Reading |
|---|---|
| < 10 psi | Essentially exact — synthetic self-consistent data, or an unusually good match. |
| 10 – 50 psi | Good for measured data; comparable to gauge error. |
| 50 – 150 psi | Usable, but worth revisiting the drive mechanism. |
| > 150 psi | The tool raises a warning. Try a different aquifer model or free more parameters. |
This is the classic material balance trap. Fitting in-place volume and aquifer strength together does not have a unique solution. A small reservoir with a strong aquifer and a large reservoir with a weak one produce almost the same pressure history.
It happens in this tool's own example: N = 20.5 MMstb with a strong aquifer can give a lower RMSE than the true N = 35 MMstb. Do not judge on RMSE alone.
What to do: untick anything you know independently (aquifer size, encroachment angle) so it stays fixed, keep the number of free parameters to a minimum, and always cross-check physical plausibility with the diagnostic plots in section 8.
6.4 How the solver works
- Nelder–Mead simplex. Every parameter is handled in log space, which keeps it positive.
- Iteration cap is
min(600, 150 + 120 × number of parameters); convergence tolerance1e-6. - During regression only the history interval is simulated — the forecast adds run time without contributing to the objective.
- Elapsed time and the number of fitted parameters are reported in the panel afterwards.
Reading the results
7.1 The five KPIs
| KPI | Meaning |
|---|---|
| Estimated OOIP / GIIP | The fitted total in-place volume — the sum over all tanks in a multi-tank model. MMstb for oil, Bscf for gas. |
| Last observed pressure | Observed pressure at the final history date, averaged over the tanks that have a value there. |
| History match RMSE | Pressure residual. Shown to one decimal below 10 psi. |
| Forecast recovery factor | Cumulative production at the end of the forecast ÷ in-place volume. |
| Cumulative water influx | Total We across all tanks at the end of the forecast, in MMrb. |
7.2 The two charts
Pressure History Match overlays observed pressure (dashed with markers), modelled pressure, and the forecast. Wherever the two visibly separate is where the model fails to explain the data.
Cumulative Production joins history and forecast into one curve — cumulative oil in oil mode, cumulative gas in dry-gas mode.
Both charts show a crosshair and a value tooltip on hover.
7.3 The five tabs
| Tab | Contents |
|---|---|
| Production History | The input table itself. The badge is the count of valid rows. |
| Match Diagnostics | Per row: observed pressure, model pressure, residual, cumulative We, dominant drive and status. A tank column is added in multi-tank models. |
| Forecast | Per forecast date: cumulative production, field pressure, water influx, recovery factor and status. |
| Tanks | Per tank: in-place volume, share, final pressure, cumulative We, net transfer, recovery, aquifer model and shut-in state. |
| Diagnostic Plot | See section 8. |
The View menu jumps to Production History, Match Diagnostics, Forecast and Diagnostic Plot. Open the Tanks tab by clicking it in the tab bar.
7.4 Forecast status values
| Status | Meaning |
|---|---|
| On forecast | Producing normally. |
| Abandonment p | A single tank has reached abandonment pressure. The forecast stops here. |
| 〈tank〉 at abandonment | With reallocation off, one named tank has reached abandonment pressure. |
| N of M shut in | With reallocation on, N of M tanks are shut in and the rest have taken over their production. |
| All tanks shut in | Every tank is shut in. The forecast ends. |
| In-place limit | Cumulative production has reached the in-place volume — a sign the forecast rate is unrealistically high. |
| No solution | No physical solution at that step. Check the inputs. |
7.5 Drive indices
The fraction of voidage supplied by each energy source at a given time. The five values sum to 1.
| Index | Label on screen | Energy source |
|---|---|---|
| DDI | Depletion | Oil and solution-gas expansion (depletion drive) |
| SDI | Gas cap | Gas cap expansion |
| WDI | Water influx | Aquifer water influx |
| CDI | Rock + water | Rock and connate-water compression |
| TDI | Tank transfer | Inflow from a connected neighbouring tank |
The Dominant drive column in Match Diagnostics names the largest contributor at
that date, or — when nothing exceeds 2%.
Diagnostic plots
Chosen from the Plot selector in the Diagnostic Plot tab. With several tanks a tank selector appears beside it. Every plot carries a paragraph underneath explaining how to read it.
8.1 Havlena–Odeh straight line oil mode
Total expansion Eₜ (rb/stb) on the x-axis; withdrawal with water influx and tank transfer removed, F − Wₑ − X (MMrb), on the y-axis.
Points curving upward mean there is energy the model has not accounted for; curving downward means the aquifer has been overestimated.
8.2 p/z plot dry-gas mode
In dry-gas mode the first option becomes this plot: cumulative gas Gp (Bscf) against p/z (psia).
A purely volumetric gas tank plots as a straight line whose x-intercept is GIIP. Points above that line indicate aquifer support.
8.3 Campbell / Cole — aquifer diagnostic
The most practical test for whether an aquifer exists at all. Cumulative production on the x-axis; F/Eₜ, evaluated at observed pressures assuming no aquifer, on the y-axis.
It is one plot, but convention names it after Campbell for oil and after Cole for gas. The menu entry follows the Fluid setting; in gas mode the x-axis is Gp and the reference line is G.
- Horizontal → purely volumetric. Set the aquifer model to None.
- Rising → energy entering that depletion alone cannot explain: there is aquifer support.
- Falling → re-check the in-place volume and the PVT inputs.
The dashed horizontal line marks the fitted N (G for gas), giving you a reference to compare against.
8.4 Drive index history
The five drive indices from 7.5, stacked as cumulative areas over time. The thickness of each band is its contribution at that moment. Bands that contribute essentially nothing are omitted entirely.
Depletion dominating early and water influx taking over later is the classic signature of an aquifer-supported reservoir.
8.5 Water influx vs. time
Cumulative water influx Wₑ (solid) against cumulative produced water converted to reservoir conditions, Wp·Bw (dashed).
The crossing point matters: once water production catches up with influx, the aquifer stops adding net support and the pressure decline steepens.
8.6 Inter-tank transfer multi-tank only
Cumulative net volume received per tank (MMrb). Positive means the tank is being supported by its neighbours, negative that it is feeding them. The curves always sum to zero — transfer moves volume around, it never creates it.
8.7 Production share history multi-tank only
Each tank's share of field production, stacked as areas. Fixed through the history at the values you entered, then stepping up during the forecast as tanks reach abandonment and come off line. With reallocation switched off, the bands stay flat throughout.
Multi-tank models
Use separate tanks for compartmentalised reservoirs, fault-separated blocks, or regions whose pressure behaviour is clearly different. All tank pressures are solved as one coupled system by Newton iteration at every time step.
9.1 Building one
- Add tanks with
+ Tank(⌥K) in the Tanks panel. - Click a tank chip to select it, then set its name, Pi and production share. Make sure Allocation total reads 100%.
- Set Drive Mechanism and Aquifer separately for each tank — the badge beside the panel title shows which tank you are editing.
- Add connections in Tank Connections and enter T for each.
- The history table now has one pressure column per tank; enter the observed pressures for each.
File → Load Two-Tank Example loads a finished two-tank case: North (22 MMstb with a Pot aquifer) feeding South (13 MMstb, depletion drive) through T = 8 rb/(day·psi). The two compartments deplete at visibly different rates.
9.2 Things to watch
- A tank with no pressure data has no resolvable in-place volume. Every tank needs at least a few observed pressures.
- With no connections the tanks are independent compartments. That still solves, but if that is really the case, separate models would be clearer.
- More tanks means more free parameters, and non-uniqueness gets much worse very quickly. Go beyond two or three compartments only with good reason.
- PVT is shared across all tanks. If fluid properties differ substantially between compartments, the case is outside this tool's scope.
Export and reporting
10.1 CSV ⌥S
Available once the analysis has been run at least once. One file, several blocks in order:
| Block | Contents |
|---|---|
| Header | Model name, generation time (ISO), fluid type, tank count, total in-place volume, RMSE, and the list of regressed parameters. |
| TANKS | Per tank: name, in-place volume, share, Pi, gas cap m, aquifer model and every aquifer input. |
| CONNECTIONS | Only when connections exist: both tank names and T. |
| HISTORY MATCH | Per (date × tank): observed and model pressure, residual, cumulative production, We, transfer X, and DDI·SDI·WDI·CDI·TDI. |
| FORECAST | Per date: cumulative production, field pressure, water influx, recovery factor, status, and one pressure column per tank. |
The file is named 〈model name〉-report.csv.
10.2 PDF report ⌘P
The Report button, or File → Print Report / PDF. If the model has not been solved yet it runs once first, then opens the print dialog. The print layout hides the sidebar and menus and adds a heading carrying the model name. Choose “Save as PDF” as the destination in your browser's print dialog.
The printed output contains whichever tab is currently open, so bring up the table you want before printing.
Menus and shortcuts
11.1 Shortcuts
On Windows and Linux, use Alt in place of ⌥ and Ctrl+P in place of ⌘P.
11.2 Every menu item
| Menu | Item | What it does |
|---|---|---|
| File | New Model | Resets to one tank and three blank rows. |
| Load Example Data | Loads the single-tank example for the current fluid mode. | |
| Load Two-Tank Example | Loads the two-tank example, solves it, and opens the Tanks tab. | |
| Import History from CSV… | See 5.2. | |
| Export Results as CSV | See 10.1. | |
| Print Report / PDF | See 10.2. | |
| Analysis | Run & History Match | Solves, then switches to the Match Diagnostics tab. |
| Clear Outputs | Clears results, charts and warnings. Inputs are kept. | |
| Fluid: Oil (Black-oil) | Switches fluid. The history table is reset to that fluid's example data. | |
| Fluid: Dry Gas (P/z) | ||
| View | Four tabs | Jumps to Production History, Match Diagnostics, Forecast or Diagnostic Plot. |
| Toggle Light / Dark | Switches theme. The choice is remembered in the browser. | |
| Help | Method & Assumptions | Opens the sidebar Method panel and scrolls to it. |
Warning messages
These appear in the Data quality checks box at the top of the stage. The calculation still runs when a warning is shown — except for the row-count check — but every one of them bears on how much you should trust the answer.
| Message | Cause and fix |
|---|---|
| At least 3 valid history rows are required | Fewer than three valid rows. The run stops. Add rows with both a date and a pressure. |
| Production shares total …% | Tank shares do not add to 100%. Adjust them in the Tanks panel. |
| Bubble point exceeds Pi … | Pb is above the initial pressure. It is clamped to Pi and the tank treated as saturated. Lower Pb if that was not intended. |
| Observed pressure exceeds Pi … | A measured pressure is higher than the initial pressure. Raise Pi or check that reading. |
| … has no observed pressures | That tank has no pressure data at all, so its in-place volume cannot be resolved. |
| Gas cap ratio is ignored in dry-gas mode | m plays no role in dry-gas mode. Set it back to 0 or ignore the message. |
| Cumulative oil / gas decreases at … | Cumulative production goes down. Most often incremental volumes were entered in a cumulative column. |
| Cumulative water decreases at … | Same cause. Check the cumulative water column. |
| Pressure is constant across the history | Without a pressure change the material balance cannot resolve an in-place volume. Check the pressure data. |
| Tanks have no connections | Several tanks exist but none are connected, so they solve as independent compartments. Confirm that is intended. |
| Forecast rate is zero | The reservoir will never deplete. Check Forecast Assumptions. |
| History match RMSE is … psi | RMSE exceeded 150 psi. Free more regression parameters or try a different aquifer model. |
Method and assumptions
13.1 Governing equations
Both fluid modes use the same generalised material balance.
13.2 PVT correlations
z is constant across the whole history. In high-pressure gas reservoirs, where z varies significantly with pressure, this approximation introduces error.
13.3 Time marching
For every aquifer model except Pot, water influx is path dependent: how the pressure got here determines the influx now. That rules out inverting each row in closed form, so the solution is marched forward in time instead.
- The grid is monthly (one month = 30.4375 days). History dates off the grid are inserted as extra steps.
- Cumulative production between grid points is linearly interpolated from the history data.
- A single tank is solved by bisection on the pressure residual; multiple tanks are solved simultaneously by Newton iteration.
- Pressure is floored at 20 psia for physical reasons.
13.4 Aquifer equations
The dimensionless pressure P_D and its derivative use the Edwardson polynomial approximations. For screening purposes Fetkovich does not allow counter-flow — water never flows back into the aquifer.
13.5 Assumptions worth knowing
- Pressure inside a tank is always uniform. No gradients, no flow lag.
- PVT is shared by all tanks and z is constant.
- The producing gas–oil ratio Rp is derived from the cumulative oil and gas you enter.
- Forecast rates are constant. There is no decline curve and no well-level control.
- Relative permeability, coning and gravity segregation are not modelled at all.
Troubleshooting
| Symptom | Cause and fix |
|---|---|
| Nothing happens when I run | Fewer than three valid rows. Count the rows that have both a date and a pressure
above zero — history rows in the status bar shows how many are
actually recognised. |
| “In-place volume could not be resolved” | The regression found no physical in-place volume. Check that pressure genuinely declines, that cumulative production increases monotonically, and that Pi is above the observed pressures. |
| The in-place volume looks implausible | Most likely non-uniqueness against aquifer strength (6.3). Fix the aquifer parameters and regress again. |
| RMSE will not come down | The drive mechanism itself may be wrong. Use the Campbell plot to settle whether an aquifer exists, then switch to a model that matches. |
| The forecast ends after a few steps | The forecast rate is too high or the abandonment pressure too high. The status on
the last Forecast row (In-place limit vs Abandonment p)
tells you which. |
| I changed an input but the charts did not move | Editing inputs does not re-solve. Press Run Analysis (⌥R) again. |
| Switching fluid wiped my history | By design, changing fluid resets the table to that fluid's example data. Choose the fluid first, or re-import your CSV. |
| CSV import puts data in the wrong columns | The number of pressure columns does not match the current tank count. Create the tanks first, then import. |
| Derived Bgi looks wrong | Check the reservoir temperature and z — Bg is directly proportional to both. |