Grid Modeling from Horizons and Zones¶
This tutorial demonstrates how to construct a Corner-Point grid from pre-defined horizons and zones. It assumes prior familiarity with horizon modeling, zone modeling, and pillar gridding. The focus here is on combining these components into a complete grid generation.
Workflow¶
The workflow follows a structured sequence:
(Horizons → Zones → Layering) + Pillars → Corner-Point Grid
Each component contributes to a different aspect of the final grid:
Horizons: Define structural surfaces used to construct zones
Zones: Define vertical intervals derived from horizons
Layering: Controls vertical resolution within each zone
Pillars: Define the lateral grid geometry and cell alignment
Input Preparation¶
First you need to define zones and pillar geometry:
Example setup:
from petres.interpolators import IDWInterpolator
from petres.models import Horizon, Zone
h1 = Horizon("H1", xy=[[0,0],[100,0],[100,100],[0,100]], depth=[0,1,0,1], interpolator=IDWInterpolator())
h2 = Horizon("H2", xy=[[0,0],[100,0],[100,100],[0,100]], depth=[2,2,3,3], interpolator=IDWInterpolator())
zone = Zone(name="Reservoir", top=h1, base=h2).divide(nk=4)
from petres.grids import PillarGrid
pillars = PillarGrid.from_regular(
xlim=(0, 100),
ylim=(0, 100),
ni=50,
nj=50,
)
For detailed explanations, see Horizon Modeling, Zone Modeling, and Pillar Gridding.
Building the Grid¶
The grid is constructed by simply combining the pillar grid
with the zones using the from_zones() method:
from petres.grids import CornerPointGrid
grid = CornerPointGrid.from_zones(
pillars=pillars,
zones=[zone],
)
grid.show()
Note
For more advanced visualization options refer to Grid Visualization.
The zone boundaries and zone layers define the vertical resolution of the grid, while the pillars determine the horizontal \((x, y)\) resolution. If the provided zones are not touching, the grid will include a single layer of inactive cells between them.
Important
The grid construction process assumes that the provided zones are not overlapping or intersecting. It is perfectly fine if zone boundaries share the same horizon.