Introducing Explicit Structured Grids in VTK and ParaView
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.
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).
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).
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
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
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.
How did you convert the geological model(What are the inputs used) to Explicit Structured Grid.
There is no direct conversion to Explicit Structured Grid available for now.
The conversion was performed from an Unstructured Grid of the geological model, containing the structured coordinates as the cell data arrays I, J, and K, using the vtkUnstructuredGridToExplicitStructuredGrid filter (also available in ParaView).
How to use this plug-in in paraview? Can I load the grdecl file directly in paraview?
I guess a gredcl or other format reader is needed. Then you can extract points, cells, and attributes from reservoir model and then create a explicit structured grid from scratch.
Tools -> Manage Plugin -> ExplicitStructuredGrid.
You can use https://github.com/BinWang0213/PyGRDECL to convert from grdecl to VTK. I do not think they support ExplicitGrid though.