Measured CO₂ core plugs
Land (1968) coefficient C is fitted to the ticked plugs; S_gr,max = 1/(1+C). "Use rock" copies that plug's measured permeability and porosity into the calculator. Temperature and pressure are the lab test conditions — recorded for reference; the calculator's own reservoir temperature/pressure boxes set CO₂ density and viscosity automatically. Blank cells mean not reported. Krevor's S_gi and S_gr come from separate tables, so those pairs are not from a single test.
| Fit | Sample | S_gi | S_gr | φ | k (md) | T (°C) | p (MPa) | |
|---|---|---|---|---|---|---|---|---|
Berea sandstone (fired) · Krevor et al. 2012, WRR 48 W02532, doi:10.1029/2011WR010859 (tables) | ||||||||
Paaratte Fm, Otway, Australia · Krevor et al. 2012, WRR 48 W02532, doi:10.1029/2011WR010859 (tables) | ||||||||
Mt. Simon, Illinois Basin (poor Land fit — low-trapping contrast) · Krevor et al. 2012, WRR 48 W02532, doi:10.1029/2011WR010859 (tables) | ||||||||
Tuscaloosa, Cranfield, Mississippi · Krevor et al. 2012, WRR 48 W02532, doi:10.1029/2011WR010859 (tables) | ||||||||
Berea sandstone (unfired) · Pentland et al. 2011, GRL 38 L06401, doi:10.1029/2011GL046683 (abstract); test conditions not confirmed |
CO₂ residual trapping calculator
Enter a well's injected CO₂ volume, the migration time and the reservoir area. The page works out the plume footprint, how far buoyancy carries it, how much brine re-enters behind it, and how much CO₂ the Land (1968) trapping curve locks in place. Use the S_gr,max from your fitted core curve on /co2-storage; the 0.3 starting value is a typical sandstone figure (Krevor et al.), not a measurement.
Runs in your browser; nothing is saved or sent. All free tools
Residual trapping after plume migration
| CO₂ density at reservoir T/p | 669.5 kg/m³ | Span-Wagner 1996 (NIST reference EOS), calculated from your T/p |
| CO₂ viscosity at reservoir T/p | 0.0532 cp | Fenghour et al. 1998, calculated from your T/p |
| Plume footprint | 86 acres | from injected mass ÷ (ρ·φ·S_gi·h) |
| Plume radius | 1,095 ft | |
| Residual CO₂ saturation behind front (S_gr) | 0.266 fraction | Land curve at S_gi = 1 − S_wr |
| Plume migration speed | 50.2 m/yr | buoyant front, up-dip + spreading |
| Distance migrated | 5,023 m | |
| Share of plume re-entered by brine | 100.0 % | calculated, not assumed |
| Residually trapped share of injected CO₂ | 38.0 % | |
| Residually trapped CO₂ | 379,747 tonne | |
| Still mobile CO₂ | 620,253 tonne | before solubility/mineral trapping |
- CO₂ density from the Span-Wagner (1996) reference EOS and viscosity from Fenghour et al. (1998), both evaluated at your typed reservoir temperature and pressure — no typed density/viscosity constants. Valid 44–350 °F, 725–7,250 psi.
- Land (1968): S_gr = S_gi/(1 + C·S_gi) with C = 1/S_gr,max − 1; S_gr,max should come from your fitted core curve (/co2-storage). Krevor et al. (2012/2015) report 0.1–0.4 for sandstones.
- Brine re-entry share from post-injection plume migration (Hesse, Orr & Tchelepi 2008; MacMinn, Szulczewski & Juanes 2010/2011): buoyant front speed v = k·k_rg*·Δρ·g·(sinθ + cosθ·H/(2R)) / (μ·φ·(1−S_wr)), share = min(1, v·t/(2R)).
- Screening estimate only: no capillary pinning, dissolution-driven shrinkage or heterogeneity. Solubility and mineral trapping are additional and not counted here.
Live migration time
Drag to change how long the plume migrates after injection stops. Every number below is a full re-run of the same model as the results above — your typed boxes and the main results never change.
- Trapped CO₂
- 379,747 t
- Trapped share
- 38.0%
- Brine re-entry
- 100.0%
- Distance migrated
- 5,023 m
Full plume migration on your core plugs
Fitted Land curve over 5 plugs: S_gr,max = 0.382 (C = 1.62). Each row re-runs the whole model with that plug's measured permeability and porosity, and S_wr = 1 − S_gi. Injected volume, time, area, thickness, dip, k_rg* and reservoir T/p come from the boxes above.
| Plug | k (md) | φ | Brine re-entry | Trapped share | Trapped CO₂ (t) |
|---|---|---|---|---|---|
| Berea (Krevor 2012) | 914 | 0.221 | 100.0% | 52.9% | 528,746 |
| Paaratte (Krevor 2012) | 1156 | 0.283 | 100.0% | 51.1% | 511,225 |
| Mt. Simon (Krevor 2012) | 7.5 | 0.244 | 57.2% | 30.5% | 304,959 |
| Tuscaloosa (Krevor 2012) | 220 | 0.236 | 100.0% | 57.3% | 572,927 |
| Berea (Pentland 2011) | — | — | Not run — k, φ not reported for this plug. | ||
Residually trapped share (%) vs plume temperature and pressure
Fitted curve, your typed rock. Each cell is a full run: CO₂ density (Span-Wagner) and viscosity (Fenghour) recomputed at that T/p, which changes plume size and buoyant migration. Blank = refused (e.g. plume larger than the typed area).
| °F \ psi | 1,000 | 1,500 | 2,000 | 3,000 | 4,000 | 5,000 | 6,500 |
|---|---|---|---|---|---|---|---|
| 80 | 46.9 | 46.9 | 46.9 | 46.9 | 46.9 | 43.2 | 20.3 |
| 120 | 46.9 | 46.9 | 46.9 | 46.9 | 46.9 | 46.9 | 46.9 |
| 160 | 46.9 | 46.9 | 46.9 | 46.9 | 46.9 | 46.9 | 46.9 |
| 200 | 46.9 | 46.9 | 46.9 | 46.9 | 46.9 | 46.9 | 46.9 |
| 250 | 46.9 | 46.9 | 46.9 | 46.9 | 46.9 | 46.9 | 46.9 |
| 300 | 46.9 | 46.9 | 46.9 | 46.9 | 46.9 | 46.9 | 46.9 |
Brine re-entry share across permeability and dip
| Dip (°) ↓ / Permeability (md) → | 1 | 2 | 5 | 10 | 20 | 50 | 100 | 200 | 500 | 1,000 | 2,000 | 5,000 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | — | — | — | — | — | — | — | — | — | — | — | — |
| 0.5 | — | — | — | — | — | — | — | — | — | — | — | — |
| 1 | — | — | — | — | — | — | — | — | — | — | — | — |
| 2 | — | — | — | — | — | — | — | — | — | — | — | — |
| 3 | — | — | — | — | — | — | — | — | — | — | — | — |
| 5 | — | — | — | — | — | — | — | — | — | — | — | — |
| 8 | — | — | — | — | — | — | — | — | — | — | — | — |
| 12 | — | — | — | — | — | — | — | — | — | — | — | — |
| 20 | — | — | — | — | — | — | — | — | — | — | — | — |
Each cell is the same plume-migration model as the result above, with only permeability and dip changed; the outlined cell is closest to your inputs. GPU cells use single precision for display — the table above is the authority.