Protocol Buffer Data Structures
Note
This page is automatically generated from the Protocol Buffer definition files.
Last updated: Generated by generate_protobuf_docs.py
Overview
ResInsight uses Protocol Buffers (protobuf) for efficient data serialization and communication between Python and the ResInsight application via gRPC. The protobuf definitions define the structure of data that can be exchanged with ResInsight.
The generated Python classes from these protobuf files are used as return types and parameters in many rips API methods.
Source Files
The Protocol Buffer definition files (.proto) are automatically downloaded from the ResInsight repository and stored in the docs/proto directory.
The generated Python files are located in docs/rips/generated/ and include:
Key Data Structures
These are the most commonly used Protocol Buffer structures in the ResInsight Python API.
SimulatorTableData
Source: SimulatorTables.proto
Repeated Fields:
Field |
Type |
Description |
|---|---|---|
compdat |
list[SimulatorCompdatEntry] |
|
welspecs |
list[SimulatorWelspecsEntry] |
|
welsegs |
list[SimulatorWelsegsEntry] |
|
compsegs |
list[SimulatorCompsegsEntry] |
|
wsegvalv |
list[SimulatorWsegvalvEntry] |
|
wsegaicd |
list[SimulatorWsegaicdEntry] |
|
wpimult |
list[SimulatorWpimultEntry] |
SimulatorCompdatEntry
Source: SimulatorTables.proto
Attributes:
Field |
Type |
Description |
|---|---|---|
well_name |
str |
|
grid_i |
int |
|
grid_j |
int |
|
upper_k |
int |
|
lower_k |
int |
|
open_shut_flag |
str |
Optional Attributes:
Field |
Type |
Description |
|---|---|---|
saturation |
float | None |
|
transmissibility |
float | None |
|
diameter |
float | None |
|
kh |
float | None |
|
skin_factor |
float | None |
|
d_factor |
float | None |
|
direction |
str | None |
|
start_md |
float | None |
|
end_md |
float | None |
|
comment |
str | None |
|
grid_name |
str | None |
|
completion_number |
int | None |
SimulatorWelspecsEntry
Source: SimulatorTables.proto
Attributes:
Field |
Type |
Description |
|---|---|---|
well_name |
str |
|
group_name |
str |
|
grid_i |
int |
|
grid_j |
int |
|
phase |
str |
Optional Attributes:
Field |
Type |
Description |
|---|---|---|
bhp_depth |
float | None |
|
drainage_radius |
float | None |
|
inflow_equation |
str | None |
|
auto_shut_in |
str | None |
|
cross_flow |
str | None |
|
pvt_num |
int | None |
|
hydrostatic_density_calc |
str | None |
|
fip_region |
int | None |
|
grid_name |
str | None |
SimulatorTableRequest
Source: SimulatorTables.proto
Attributes:
Field |
Type |
Description |
|---|---|---|
wellpath_name |
str |
|
case_id |
int |
Vec3d
Source: Definitions.proto
Attributes:
Field |
Type |
Description |
|---|---|---|
x |
float |
|
y |
float |
|
z |
float |
Vec3i
Source: Definitions.proto
Attributes:
Field |
Type |
Description |
|---|---|---|
i |
int |
|
j |
int |
|
k |
int |
CellCenters
Source: Definitions.proto
CellCorners
Source: Definitions.proto
Attributes:
Field |
Type |
Description |
|---|---|---|
c0 |
Vec3d |
|
c1 |
Vec3d |
|
c2 |
Vec3d |
|
c3 |
Vec3d |
|
c4 |
Vec3d |
|
c5 |
Vec3d |
|
c6 |
Vec3d |
|
c7 |
Vec3d |
Complete Structure Reference
Definitions.proto
Empty
Source: Definitions.proto
ClientToServerStreamReply
Source: Definitions.proto
CellCornersArray
Source: Definitions.proto
SimulatorTables.proto
SimulatorTableUnifiedRequest
Source: SimulatorTables.proto
Attributes:
Field |
Type |
Description |
|---|---|---|
case_id |
int |
Repeated Fields:
Field |
Type |
Description |
|---|---|---|
wellpath_names |
list[str] |
SimulatorWelsegsHeaderEntry
Source: SimulatorTables.proto
Attributes:
Field |
Type |
Description |
|---|---|---|
well_name |
str |
|
top_depth |
float |
|
top_length |
float |
|
info_type |
str |
Optional Attributes:
Field |
Type |
Description |
|---|---|---|
wellbore_volume |
float | None |
|
pressure_components |
str | None |
|
flow_model |
str | None |
SimulatorWelsegsRowEntry
Source: SimulatorTables.proto
Attributes:
Field |
Type |
Description |
|---|---|---|
segment_1 |
int |
|
segment_2 |
int |
|
branch |
int |
|
join_segment |
int |
|
length |
float |
|
depth |
float |
Optional Attributes:
Field |
Type |
Description |
|---|---|---|
diameter |
float | None |
|
roughness |
float | None |
|
description |
str | None |
SimulatorWelsegsEntry
Source: SimulatorTables.proto
Attributes:
Field |
Type |
Description |
|---|---|---|
header |
SimulatorWelsegsHeaderEntry |
Repeated Fields:
Field |
Type |
Description |
|---|---|---|
row |
list[SimulatorWelsegsRowEntry] |
SimulatorCompsegsEntry
Source: SimulatorTables.proto
Attributes:
Field |
Type |
Description |
|---|---|---|
i |
int |
|
j |
int |
|
k |
int |
|
branch |
int |
|
distance_start |
float |
|
distance_end |
float |
Optional Attributes:
Field |
Type |
Description |
|---|---|---|
grid_name |
str | None |
SimulatorWsegvalvEntry
Source: SimulatorTables.proto
Attributes:
Field |
Type |
Description |
|---|---|---|
well_name |
str |
|
segment_number |
int |
|
cv |
float |
|
area |
float |
Optional Attributes:
Field |
Type |
Description |
|---|---|---|
extra_length |
float | None |
|
pipe_d |
float | None |
|
roughness |
float | None |
|
pipe_a |
float | None |
|
status |
str | None |
|
max_a |
float | None |
SimulatorWsegaicdEntry
Source: SimulatorTables.proto
Attributes:
Field |
Type |
Description |
|---|---|---|
well_name |
str |
|
segment_1 |
int |
|
segment_2 |
int |
|
strength |
float |
|
max_abs_rate |
float |
|
flow_rate_exponent |
float |
|
visc_exponent |
float |
Optional Attributes:
Field |
Type |
Description |
|---|---|---|
length |
float | None |
|
density_cali |
float | None |
|
viscosity_cali |
float | None |
|
critical_value |
float | None |
|
width_trans |
float | None |
|
max_visc_ratio |
float | None |
|
method_scaling_factor |
int | None |
|
status |
str | None |
|
oil_flow_fraction |
float | None |
|
water_flow_fraction |
float | None |
|
gas_flow_fraction |
float | None |
|
oil_visc_fraction |
float | None |
|
water_visc_fraction |
float | None |
|
gas_visc_fraction |
float | None |
|
description |
str | None |
SimulatorWpimultEntry
Source: SimulatorTables.proto
Attributes:
Field |
Type |
Description |
|---|---|---|
well_name |
str |
|
pimult |
float |
|
i |
int |
|
j |
int |
|
k |
int |
Optional Attributes:
Field |
Type |
Description |
|---|---|---|
grid_name |
str | None |
WellPath Service
Usage Examples
Working with SimulatorTableData
The rips.WellPath.completion_data() method returns a SimulatorTableData object containing well completion information:
import rips
# Connect to ResInsight
resinsight = rips.Instance.find()
project = resinsight.project
# Get a case
case = project.cases()[0]
# Get well path
well_path = project.well_paths()[0]
# Get completion data
completion_data = well_path.completion_data(case.id)
# Access COMPDAT entries
for compdat_entry in completion_data.compdat:
print(f"Well: {compdat_entry.well_name}")
print(f" Grid location: i={compdat_entry.grid_i}, j={compdat_entry.grid_j}")
print(f" K layers: {compdat_entry.upper_k} to {compdat_entry.lower_k}")
print(f" Status: {compdat_entry.open_shut_flag}")
if compdat_entry.HasField('transmissibility'):
print(f" Transmissibility: {compdat_entry.transmissibility}")
if compdat_entry.HasField('diameter'):
print(f" Diameter: {compdat_entry.diameter}")
# Access WELSPECS entries
for welspecs_entry in completion_data.welspecs:
print(f"Well: {welspecs_entry.well_name}")
print(f" Group: {welspecs_entry.group_name}")
print(f" Phase: {welspecs_entry.phase}")
print(f" Grid location: i={welspecs_entry.grid_i}, j={welspecs_entry.grid_j}")
if welspecs_entry.HasField('bhp_depth'):
print(f" BHP Depth: {welspecs_entry.bhp_depth}")
Working with Optional Fields
Many protobuf messages contain optional fields. Use the HasField() method to check if an optional field is set:
# Check if optional field is set before accessing
if entry.HasField('saturation'):
saturation_value = entry.saturation
else:
saturation_value = "1*"
Working with Vec3d and Vec3i
Many protobuf messages use Vec3d (3D double vector) or Vec3i (3D integer vector) for coordinates:
# Vec3d example (cell centers, coordinates)
cell_centers = grid.cell_centers()
for center in cell_centers.centers:
print(f"Center: x={center.x}, y={center.y}, z={center.z}")
# Vec3i example (grid indices)
grid_dims = grid.dimensions()
print(f"Grid dimensions: i={grid_dims.i}, j={grid_dims.j}, k={grid_dims.k}")
See Also
Main Classes - Main API documentation
Project Tree Classes - Auto-generated class documentation
Python Examples - Python code examples