Initial inplace volumes

This exports the initial inplace volumes of a single grid from within RMS.

Current

Field

Value

Version

0.1.0

Output

share/results/tables/inplace_volumes/gridname.parquet

Security classification

🔴 Restricted

Requirements

  • RMS (minimum version 14.2)

  • RMS volumetrics job stored to report table

  • Proper grid erosion

Inplace volumes for grids in RMS should always be computed in a single RMS volumetrics job, and the result should be stored as a report table inside RMS. The simplified export function will use the RMS API behind the scene to retrieve this table, and all necessary data needed for fmu.dataio.

The performance of the volumetrics jobs in RMS has greatly improved from the past, now typically representing the fastest method for calculating in-place volumes. However, it is important to note that generating output maps, such as Zone maps, during the volumetrics job can significantly decelerate the process.

Note

Some assets are using erosion multipliers as a means to reduce the bulk and pore volume, instead of performing actual erosion by cell removal in the grid. This is not supported, and proper grid erosion is required. If the erosion multiplier is important for flow simulation, the erosion and volumetrics job should be moved to after the export for flow simulation.

Usage

export_inplace_volumes(project, grid_name, volume_job_name)[source]

Simplified interface when exporting volume tables (and assosiated data) from RMS.

Parameters:
  • project (Any) – The ‘magic’ project variable in RMS.

  • grid_name (str) – Name of 3D grid model in RMS.

  • volume_job_name (str) – Name of the volume job.

Return type:

ExportResult

Examples

Example usage in an RMS script:

from fmu.dataio.export.rms import export_inplace_volumes

export_results = export_inplace_volumes(project, "Geogrid", "geogrid_volumes")

for result in export_results.items:
    print(f"Output volumes to {result.absolute_path}")

Result

The volumetric table from RMS undergoes a couple of transformations to adhere to the inplace_volumes standard format:

  1. Water zone bulk and pore volumes are calculated by subtracting oil and gas zone volumes from the total volumes. The total volumes are removed, and any negative values caused by precision issues in RMS are truncated to zero.

  2. The fluid-specific columns are unfied into a single set of volumetric columns, with an additional FLUID column indicating the fluid type. If the NET column is absent, it is set equal to the BULK column, assuming a net-to-gross ratio of one.

Given a grid model name Geogrid the result file will be share/results/tables/inplace_volumes/geogrid.parquet.

This is a tabular file that can be converted to .csv or similar. It contains the following columns with types validated as indicated.

pydantic model InplaceVolumesResultRow[source]

Represents the columns of a row in a static inplace volumes export.

These fields are the current agreed upon standard result. Changes to the fields or their validation should cause the version defined in the standard result schema to increase the version number in a way that corresponds to the schema versioning specification (i.e. they are a patch, minor, or major change).

Fields:
field FLUID: InplaceVolumes.Fluid [Required]

Index column. The kind of fluid this row represents. Typically GAS, OIL, or WATER. Required.

field ZONE: str [Required]

Index column. The zone from which this volume is coming from. Required.

field REGION: str [Required]

Index column. The region from which this volume is coming from. Required.

field FACIES: str | None = None

Index column. The facies from which is volume is coming from. Optional.

field LICENSE: str | None = None

Index column. The license under which these volumes related to. Optional.

field BULK: float [Required]

The bulk volume of the fluid-type given in FLUID. Required.

Constraints:
  • ge = 0.0

field NET: float [Required]

The net volume of the fluid-type given in FLUID. Required.

Constraints:
  • ge = 0.0

field PORV: float [Required]

The pore volume of the fluid-type given in FLUID. Required.

Constraints:
  • ge = 0.0

field HCPV: float | None = None

The pore volume of the fluid-type given in FLUID. Optional.

Constraints:
  • ge = 0.0

field STOIIP: float | None = None

The STOIIP volume of the fluid-type given in FLUID. Optional.

Constraints:
  • ge = 0.0

field GIIP: float | None = None

The GIIP volume of the fluid-type given in FLUID. Optional.

Constraints:
  • ge = 0.0

field ASSOCIATEDGAS: float | None = None

The associated gas volume of the fluid-type given in FLUID. Optional.

Constraints:
  • ge = 0.0

field ASSOCIATEDOIL: float | None = None

The associated oil volume of the fluid-type given in FLUID. Optional.

Constraints:
  • ge = 0.0

Note

The payload may contain other columns than the standard columns listed above. However, when these columns are present, their type is validated.

Standard result schema

This standard result is made available with a validation schema that can be used by consumers. A reference to the URL where this schema is located is present within the data.standard_result key in its associated object metadata.

Field

Value

Version

0.1.0

Filename

inplace_volumes.json

Path

schemas/file_formats/0.1.0/inplace_volumes.json

Prod URL

https://main-fmu-schemas-prod.radix.equinor.com/schemas/file_formats/0.1.0/inplace_volumes.json 🔒

Dev URL

https://main-fmu-schemas-dev.radix.equinor.com/schemas/file_formats/0.1.0/inplace_volumes.json 🔒

Changelog

0.1.0

This is the initial schema version.

JSON schema

The current JSON schema is embedded here.

{
  "$defs": {
    "Fluid": {
      "description": "Fluid types used as values in the FLUID column.",
      "enum": [
        "oil",
        "gas",
        "water"
      ],
      "title": "Fluid",
      "type": "string"
    },
    "InplaceVolumesResultRow": {
      "description": "Represents the columns of a row in a static inplace volumes export.\n\nThese fields are the current agreed upon standard result. Changes to the fields or\ntheir validation should cause the version defined in the standard result schema to\nincrease the version number in a way that corresponds to the schema versioning\nspecification (i.e. they are a patch, minor, or major change).",
      "properties": {
        "ASSOCIATEDGAS": {
          "anyOf": [
            {
              "minimum": 0.0,
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Associatedgas"
        },
        "ASSOCIATEDOIL": {
          "anyOf": [
            {
              "minimum": 0.0,
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Associatedoil"
        },
        "BULK": {
          "minimum": 0.0,
          "title": "Bulk",
          "type": "number"
        },
        "FACIES": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Facies"
        },
        "FLUID": {
          "$ref": "#/$defs/Fluid"
        },
        "GIIP": {
          "anyOf": [
            {
              "minimum": 0.0,
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Giip"
        },
        "HCPV": {
          "anyOf": [
            {
              "minimum": 0.0,
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Hcpv"
        },
        "LICENSE": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "License"
        },
        "NET": {
          "minimum": 0.0,
          "title": "Net",
          "type": "number"
        },
        "PORV": {
          "minimum": 0.0,
          "title": "Porv",
          "type": "number"
        },
        "REGION": {
          "title": "Region",
          "type": "string"
        },
        "STOIIP": {
          "anyOf": [
            {
              "minimum": 0.0,
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Stoiip"
        },
        "ZONE": {
          "title": "Zone",
          "type": "string"
        }
      },
      "required": [
        "FLUID",
        "ZONE",
        "REGION",
        "BULK",
        "NET",
        "PORV"
      ],
      "title": "InplaceVolumesResultRow",
      "type": "object"
    }
  },
  "$id": "https://main-fmu-schemas-dev.radix.equinor.com/schemas/file_formats/0.1.0/inplace_volumes.json",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "description": "Represents the resultant static inplace volumes parquet file, which is naturally\na list of rows.\n\nConsumers who retrieve this parquet file must read it into a json-dictionary\nequivalent format to validate it against the schema.",
  "items": {
    "$ref": "#/$defs/InplaceVolumesResultRow"
  },
  "title": "InplaceVolumesResult",
  "type": "array",
  "version": "0.1.0"
}