GoCAD Well Group File

What is a GoCAD Well Group File?

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.

Key Difference from Individual Well Files: In a .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.

GoCAD Well Group File Viewer

Upload and view GoCAD Well Group data files (.gp)

1
Upload Well Group File
📁
Drop GoCAD Well Group file here
or click to browse (.gp file)

File Structure and Components

A GoCAD Well Group dataset consists of three main file types:

1. Group Header File (.gp)

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.

Typical .gp File Structure:

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
END

2. Shared ZM Catalog File (__zms@@)

Unlike 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.

Important: The 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).

Shared ZMS File Layout:

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)
  ...

3. Shared Property Curves File (__curves@@)

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.

Shared Curves File Layout:

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

Key Parameters

ZM_OFFSET

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.

HOLE_AT_ZM

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 Format:

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

Advantages of Well Group Format

Comparison: Well Group vs Individual Well Files

FeatureWell Group (.gp)Individual Well (.wl)
ViewerWell Group ViewerWell File Viewer
Header TypeGOCAD HomogeneousGroup 1GOCAD Well 1
Binary FilesShared across all wellsOne set per well
ZM LocationZM_OFFSET (index)Always starts at byte 0
Data GapsHOLE_AT_ZMLOG_FRAME_TOP/BOTTOM
Best ForLarge datasets (100+ wells)Individual well management