Add an aquifer
An aquifer is water outside the grid that pushes into it as the reservoir pressure falls. In
PetroScript it is one object in the model’s aquifers= list: the aquifer’s own properties, and
the grid faces it flows in through (ps.aquifers.Connection).
| Aquifer | Class | What you state |
|---|---|---|
| Finite, pseudo-steady (Fetkovich) | ps.aquifers.Fetkovich | its water volume, total compressibility and productivity index |
| Infinite-acting, radial (Carter-Tracy) | ps.aquifers.CarterTracy | its permeability, porosity, compressibility, radius, thickness and angle |
| A set influx | ps.aquifers.ConstantFlux, then ps.aquifers.Flux at a date | the water rate per unit area of the connected faces (not a total) |
| Grid cells of its own | ps.aquifers.Numerical | its cells |
Here a Fetkovich aquifer goes under SPE1 (a FIELD deck: ft, psia, stb), connected to the bottom face of the bottom layer:
import petroscript as ps
m = ps.load("opm-tests/spe1/SPE1CASE2.DATA")bottom = ps.aquifers.Connection(cells=ps.Box(i=(1, 10), j=(1, 10), k=(3, 3)), # all three ranges face="plus_k") # their lower facesupport = ps.aquifers.Fetkovich( datum_depth=8450.0, # ft initial_water_volume=2.0e9, # stb compressibility=6.0e-6, # 1/psi: water and rock together productivity_index=200.0, # stb/day/psi connections=[bottom],)with_aquifer = m.set("aquifers", [support])deck = ps.compile(with_aquifer).files["SPE1CASE2.DATA"]assert "AQUFETP" in deck and "AQUANCON" in deckA connection’s box states all three ranges ([aquifers.connection.cells] otherwise). The datum
pressure, left out, is the reservoir’s at the aquifer’s datum depth, so the aquifer
starts in equilibrium with it. A Carter-Tracy aquifer takes rock properties instead:
radial = ps.aquifers.CarterTracy( number=2, datum_depth=8450.0, permeability=200.0, porosity=0.25, total_compressibility=6.0e-6, radius=5000.0, thickness=100.0, # ft angle=360.0, # degrees: all round connections=[bottom],)To see what the aquifer is worth, run the model with and without it: m.set("aquifers", [])
removes every aquifer. examples/aquifer.py does exactly that in
Flow and prints both pressure declines.
ps.help(ps.aquifers.Fetkovich) and ps.help(ps.aquifers.Connection) have every field.
PetroScript is licensed under the Apache License 2.0. © 2026 Blauweiss EDV LLC. PetroScript by Blauweiss AI.For AI agents: llms.txt