Skip to content

Ghost structured grid

This MR adds vtkStructuredGrid support to both vtkDIYGhostUtilities and vtkCompositeDataSetGhostCellsGenetator. It also fixes a few bugs from previous MR !7507 (merged).

  • Point coordinates were wrongly shared in vtkRectilinearGrid
  • 1D and 2D support for grids had a bug when computing adjacency

Testing has also been enhanced to test output extent as well as point positions when appropriate.

The main pipeline vtkDIYGhostUtilities::GenerateGhostCells has been refined at the end of it, when filling received ghosts into their appropriate location in output data sets. This was necessary to fill point positions for structured grids, and will be useful when adding data sets having more explicit geometry to share.

There are 2 things to fix on these ghost utilities as far as I know:

  • The input ghost level should be discarded and deducted inside PeelOffGhostLayers, as the input ghost level can be different in each block.
  • There is one instance where this filter will fail. Let's say someone has 3D grids in their blocks, where all the grids have one dimension of thickness equal to 1. In such instances, the ghost utility will only be able to compute one layer of ghosts on this dimension. Calling the pipeline wanting 2 layers of ghosts will fail. This can be fixed by exchanging updated extents between blocks who received less layers than requested when exchanging extents. This has to be done until either exchanged extents are consistent with previous exchange, or until every blocks has received the extents being able to hold the wanted ghosts. The same process has to be done when exchanging ghost data. This kind of input data is very unlikely, as it is very unefficient memory-wise and block communication-wise. There might be some way to automatize part of this extra routines, as the same problem can occur on other types of data sets.
Edited by Yohann Bearzi (Kitware)

Merge request reports