Introducing Explicit Structured Grids in VTK and ParaView

Figure 1: Johansen formation geological model converted to Explicit Structured Grid visualized with ParaView.
Bottom view shows a slice of the grid obtained at J=100.

Data Structure

An explicit structured grid is a new data structure in VTK sharing properties of both structured and unstructured grids. This new dataset is well adapted to represent the reservoir grids that are well known in the Oil&Gas domain.

Figure 2: Visual comparison between vtkUnstructuredGrid, vtkStructuredGrid,
and the new vtkExplicitStructuredGrid.

The data structure of an explicit structured grid uses a structured coordinate system (i, j, k) to determine cell neighborhoods, which also allows the support of cell blanking. At the same time, the geometry of each cell is explicitly defined by its vertices (see Figure 2). This way of defining cells allows to define not only curvilinear grids but also grids with more complex topologies. In an explicit structured grid, cells can be neighboring but don’t need to be connected. These discontinuities in the geometry can model small and large cracks between cells with the same efficiency than unstructured grids, without the need to increase the cell resolution. In contrast to unstructured grids however, explicit structured grids have the advantage of their underlying regular structure for better performance in a data parallel context (see Figure 3).

Figure 3: Explicit Structured Grid Crop and Slice & Cells Extractor filters example
on a 1000x1000x20 grid distributed across 6 ranks.

Pros & Cons

SG UG ESG
Complex topological neighborhoods
Cell blanking
Neighborhood queries
Parallel data distribution
Complex surface representation
Large cavity representation
Memory footprint

(SG = vtkStructuredGrid; UG = vtkUnstructuredGrid; ESG = vtkExplicitStructuredGrid)

Filters

For now the new data structure comes with an optimized crop filter, several converters and a super class to develop additional explicit structured grid algorithms. The converters make the new data structure more accessible to users by enabling them to easily transform their existing data into explicit structured grids.

The converters include the following:

  • To/From UnstructuredGrid;
  • From ImageData;
  • To PolyData (i.e. extracts the surface mesh);
  • Explicit Structured Grid generator source.

Finally, a new data source was also added to Paraview to quickly generate different explicit structured grid reservoir data (see Figure 4).

Figure 4: The 5 different reservoir generator modes of the Explicit Structured Grid Generator Source.

Data Format

Thanks to the included conversion filters and the data structures similarities to unstructured grids, there is no need for a data format specific to explicit structured grids. Instead, explicit structured grids save their data as unstructured grids without any loss of information.

The ParaView Plugin

ParaView 5.7.0 comes with a new plugin simply called “ExplicitStructuredGrid” that provides the procedural source and some filters (converters to/from UnstructuredGrids, efficient slicing, cropping and cells extractor on structured coordinates criteria) to process the new dataset.

This work was supported by Total SA

Developments were done by Kitware SAS, France

2 Responses to Introducing Explicit Structured Grids in VTK and ParaView

  1. Mo Koneshloo says:

    Is there any tutorial or example to show how generate an “ExplicitStructuredGrid”?
    something like this for StructuredGrid”:
    https://vtk.org/Wiki/VTK/Writing_VTK_files_using_python

    • Max Zeyen says:

      There isn’t a tutorial or example on that subject to my knowledge.
      However, they come with a generator in VTK which is also exposed in ParaView.
      There is no special datatype for storing explicit structured grids at the moment (e.g. .vtp, .vtu, …).
      Instead they are stored as unstructured grids using hexahedral cells and the cell data arrays I, J, and K for the structured coordinates.

Questions or comments are always welcome!

X