mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-25 14:40:26 -05:00
160 lines
4.4 KiB
Markdown
160 lines
4.4 KiB
Markdown
# Eclipse Grid Format: Pillars, COORD and ZCORN
|
||||
|
|
|
|||
|
|
## Overview
|
|||
|
|
|
|||
|
|
Eclipse uses a corner point geometry representation for reservoir grids. This format consists of two main arrays:
|
|||
|
|
- **COORD**: Defines the pillar coordinates
|
|||
|
|
- **ZCORN**: Defines the depth values at pillar intersections
|
|||
|
|
|
|||
|
|
## Grid Structure and Pillars
|
|||
|
|
|
|||
|
|
### What are Pillars?
|
|||
|
|
|
|||
|
|
Pillars are vertical lines that define the structural framework of the grid. Each pillar connects corresponding points from the top to the bottom of the reservoir.
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
Grid Layout (2x3 example):
|
|||
|
|
|
|||
|
|
Y ^
|
|||
|
|
|
|
|||
|
|
+----> X
|
|||
|
|
|
|||
|
|
Pillars (shown as |):
|
|||
|
|
| | |
|
|||
|
|
| | | <- (nx+1) = 3 pillars in X direction
|
|||
|
|
| | |
|
|||
|
|
j=3 --- --- ---
|
|||
|
|
| | |
|
|||
|
|
| | |
|
|||
|
|
| | |
|
|||
|
|
j=2 --- --- ---
|
|||
|
|
| | |
|
|||
|
|
| | |
|
|||
|
|
| | |
|
|||
|
|
j=1 --- --- ---
|
|||
|
|
| | |
|
|||
|
|
| | |
|
|||
|
|
| | |
|
|||
|
|
j=0 --- --- ---
|
|||
|
|
i=0 i=1 i=2
|
|||
|
|
|
|||
|
|
Total pillars: (nx+1) × (ny+1) = 3 × 4 = 12 pillars
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## COORD Array
|
|||
|
|
|
|||
|
|
### Structure
|
|||
|
|
- Size: `(nx+1) × (ny+1) × 6` values
|
|||
|
|
- Each pillar has 6 values: `[x1, y1, z1, x2, y2, z2]`
|
|||
|
|
- `(x1,y1,z1)`: Top point of pillar
|
|||
|
|
- `(x2,y2,z2)`: Bottom point of pillar
|
|||
|
|
|
|||
|
|
### Organization
|
|||
|
|
```
|
|||
|
|
For pillar at position (i,j):
|
|||
|
|
pillarIndex = j × (nx+1) + i
|
|||
|
|
coordIndex = pillarIndex × 6
|
|||
|
|
|
|||
|
|
COORD[coordIndex + 0] = x_top
|
|||
|
|
COORD[coordIndex + 1] = y_top
|
|||
|
|
COORD[coordIndex + 2] = z_top
|
|||
|
|
COORD[coordIndex + 3] = x_bottom
|
|||
|
|
COORD[coordIndex + 4] = y_bottom
|
|||
|
|
COORD[coordIndex + 5] = z_bottom
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Example (2x3 grid)
|
|||
|
|
```
|
|||
|
|
Pillar (0,0): x1=456064, y1=5.936e6, z1=1709.18, x2=456064, y2=5.936e6, z2=1715.78
|
|||
|
|
Pillar (1,0): x1=456194, y1=5.936e6, z1=1707.43, x2=456194, y2=5.936e6, z2=1714.08
|
|||
|
|
...
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## ZCORN Array
|
|||
|
|
|
|||
|
|
### Structure
|
|||
|
|
- Size: `nx × ny × nz × 8` values
|
|||
|
|
- Contains Z-coordinates for each corner of every cell
|
|||
|
|
- 8 corners per cell: 4 top corners + 4 bottom corners
|
|||
|
|
|
|||
|
|
### Cell Corner Indexing
|
|||
|
|
|
|||
|
|
Each cell has 8 corners with this indexing convention:
|
|||
|
|
```
|
|||
|
|
Top Face (NEG_K): Bottom Face (POS_K):
|
|||
|
|
3 ---- 2 7 ---- 6
|
|||
|
|
| | | |
|
|||
|
|
| | | |
|
|||
|
|
0 ---- 1 4 ---- 5
|
|||
|
|
|
|||
|
|
Corner mapping:
|
|||
|
|
0: (-I,-J,top) 4: (-I,-J,bottom)
|
|||
|
|
1: (+I,-J,top) 5: (+I,-J,bottom)
|
|||
|
|
2: (+I,+J,top) 6: (+I,+J,bottom)
|
|||
|
|
3: (-I,+J,top) 7: (-I,+J,bottom)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### ZCORN Organization
|
|||
|
|
|
|||
|
|
The ZCORN array is organized by layers and interfaces:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
For each K layer:
|
|||
|
|
Top interface (NEG_K face):
|
|||
|
|
For each J row:
|
|||
|
|
Face 1: corners (0,3) for all cells in row → [z0, z3, z0, z3, ...]
|
|||
|
|
Face 2: corners (1,2) for all cells in row → [z1, z2, z1, z2, ...]
|
|||
|
|
|
|||
|
|
Bottom interface (POS_K face):
|
|||
|
|
For each J row:
|
|||
|
|
Face 1: corners (0,1) for all cells in row → [z4, z5, z4, z5, ...]
|
|||
|
|
Face 2: corners (3,2) for all cells in row → [z7, z6, z7, z6, ...]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Pillar Intersection Sharing
|
|||
|
|
|
|||
|
|
Adjacent cells share pillar intersections, creating the characteristic duplication pattern:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
2x3 Grid Cell Layout:
|
|||
|
|
+---+---+ j=2
|
|||
|
|
| 4 | 5 |
|
|||
|
|
+---+---+ j=1
|
|||
|
|
| 2 | 3 |
|
|||
|
|
+---+---+ j=0
|
|||
|
|
| 0 | 1 |
|
|||
|
|
+---+---+
|
|||
|
|
i=0 i=1 i=2
|
|||
|
|
|
|||
|
|
Cell 0 corners (0,1,3,2) share pillars with:
|
|||
|
|
- Corner 1 shared with Cell 1 corner 0
|
|||
|
|
- Corner 2 shared with Cell 2 corner 0
|
|||
|
|
- Corner 3 shared with Cell 2 corner 1, Cell 4 corner 0, Cell 1 corner 3
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Example ZCORN Pattern (2x3x4 grid)
|
|||
|
|
|
|||
|
|
For layer k=0, the pattern shows shared intersections:
|
|||
|
|
```
|
|||
|
|
Layer 0 Top Interface:
|
|||
|
|
J=0, Face 1: 1709.18 1707.43 1707.43 1715.72 <- Cell(0,0) and Cell(1,0)
|
|||
|
|
J=0, Face 2: 1706.67 1705.04 1705.04 1709.57 <- shared pillar values
|
|||
|
|
J=1, Face 1: 1706.67 1705.04 1705.04 1709.57 <- duplication from sharing
|
|||
|
|
J=1, Face 2: 1701.68 1697.96 1697.96 1703.33
|
|||
|
|
...
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Key Insights
|
|||
|
|
|
|||
|
|
1. **Pillar Continuity**: Pillars extend vertically through all layers, maintaining structural continuity
|
|||
|
|
2. **Shared Intersections**: Adjacent cells share pillar intersection points, creating value duplication in ZCORN
|
|||
|
|
3. **Interface Organization**: ZCORN is organized by layer interfaces (top/bottom), not individual cell corners
|
|||
|
|
4. **Face-Based Grouping**: Within each interface, values are grouped by faces rather than individual corners
|
|||
|
|
|
|||
|
|
## Implementation Notes
|
|||
|
|
|
|||
|
|
The conversion from RigCell to Eclipse format requires:
|
|||
|
|
1. Extracting pillar coordinates for COORD array
|
|||
|
|
2. Organizing cell face corners according to Eclipse ZCORN specification
|
|||
|
|
3. Ensuring proper pillar intersection sharing between adjacent cells
|
|||
|
|
4. Following the specific layer-interface-face organization pattern
|