A GoCAD Well Group file (.gp) is a container format that stores multiple wells in a single file. Unlike individual .wl files where each well has its own binary data files, a Well Group uses shared binary files for all wells, making it more efficient for managing large datasets with hundreds or thousands of wells.
Well Group files are identified by the header GOCAD HomogeneousGroup 1 and contain a BEGIN_MEMBERS section that lists all individual wells. Each well within the group references the same __curves@@ and __zms@@ files but uses different byte offsets (ZM_OFFSET and SEEK) to locate its data.
.wl file, binary data starts at byte 0. In a Well Group, each well has a ZM_OFFSET parameter that specifies where its measured depth data begins in the shared __zms@@ file.Looking for individual well files? If you have a single .wl file instead of a Well Group, use our GoCAD Well File Viewer for individual well files.
Upload and view GoCAD Well Group data files (.gp)
A GoCAD Well Group dataset consists of three main file types:
The .gp file is a plain text file that serves as the master container for multiple wells. It starts with GOCAD HomogeneousGroup 1 and contains a BEGIN_MEMBERS section listing all wells.
GOCAD HomogeneousGroup 1
HEADER {
name: WellGroupName
}
TYPE Well
BEGIN_MEMBERS
GOCAD Well 1
HEADER { name: Well_001 }
WREF -82727.97 7110718.67 702.59
ZM_OFFSET 0
ZM_NPTS 25
WELL_CURVE
PROPERTY "PropertyName"
NPTS 23
SEEK 0
END_CURVE
END
GOCAD Well 1
HEADER { name: Well_002 }
WREF -80605.60 7110625.42 691.24
ZM_OFFSET 100
ZM_NPTS 50
...
END
END_MEMBERS
ENDUnlike individual .wl files, Well Groups use a shared __zms@@ file. Each well's measured depths are stored at different offsets within this file, specified by the ZM_OFFSET parameter.
ZM_OFFSET is an index, not a byte offset. To calculate the byte position: byte_offset = ZM_OFFSET × 4 (since each float is 4 bytes).Well 1 (ZM_OFFSET=0, ZM_NPTS=25): Bytes 0-99: 25 measured depths (25 × 4 bytes) Well 2 (ZM_OFFSET=100, ZM_NPTS=50): Bytes 400-599: 50 measured depths (50 × 4 bytes) (starts at index 100 = byte 400) Well 3 (ZM_OFFSET=200, ZM_NPTS=30): Bytes 800-919: 30 measured depths (30 × 4 bytes) ...
All property data for all wells is stored in a single __curves@@ file. Each property curve uses the SEEK parameter to specify its starting byte position in this shared file.
Well 1, Property 1 (SEEK=0, NPTS=23): Bytes 0-91: 23 depth values (23 × 4 bytes) Bytes 92-183: 23 property values (23 × 4 bytes) Well 1, Property 2 (SEEK=184, NPTS=15): Bytes 184-243: 15 depth values Bytes 244-303: 15 property values Well 2, Property 1 (SEEK=24064, NPTS=39): Bytes 24064-...: 39 depth values ...and so on
The ZM_OFFSET parameter is unique to Well Group files. It specifies the index (not byte offset) where this well's measured depth data begins in the shared __zms@@ file.
Well Group files use HOLE_AT_ZM markers to indicate data gaps within a property curve. This replaces the LOG_FRAME_TOP/LOG_FRAME_BOTTOM approach used in individual .wl files.
HOLE_AT_ZM <index> <depth> Examples: HOLE_AT_ZM 6 10.7665501 # Gap at index 6, depth 10.77m HOLE_AT_ZM 5 8.29841995 # Gap at index 5, depth 8.30m HOLE_AT_ZM -1 1.51098502 # Special: gap before first data point
.gp file contains all well metadata| Feature | Well Group (.gp) | Individual Well (.wl) |
|---|---|---|
| Viewer | Well Group Viewer | Well File Viewer |
| Header Type | GOCAD HomogeneousGroup 1 | GOCAD Well 1 |
| Binary Files | Shared across all wells | One set per well |
| ZM Location | ZM_OFFSET (index) | Always starts at byte 0 |
| Data Gaps | HOLE_AT_ZM | LOG_FRAME_TOP/BOTTOM |
| Best For | Large datasets (100+ wells) | Individual well management |