VTK  9.0.1
vtkExplicitStructuredGrid.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkExplicitStructuredGrid.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
49 #ifndef vtkExplicitStructuredGrid_h
50 #define vtkExplicitStructuredGrid_h
51 
52 #include "vtkCommonDataModelModule.h" // For export macro
53 #include "vtkNew.h" // for vtkNew
54 #include "vtkPointSet.h"
55 #include "vtkStructuredData.h" // For static method usage
56 
57 class vtkCellArray;
59 class vtkEmptyCell;
60 class vtkHexahedron;
61 
62 class VTKCOMMONDATAMODEL_EXPORT vtkExplicitStructuredGrid : public vtkPointSet
63 {
64 public:
66 
71  void PrintSelf(ostream& os, vtkIndent indent) override;
73 
78 
80 
83  void Initialize() override;
84  using vtkDataSet::GetCell;
85  vtkCell* GetCell(vtkIdType cellId) override;
86  void GetCell(vtkIdType cellId, vtkGenericCell* cell) override;
87  void GetCellBounds(vtkIdType cellId, double bounds[6]) override;
88  int GetCellType(vtkIdType cellId) override;
90  void GetCellPoints(vtkIdType cellId, vtkIdList* ptIds) override;
91  void GetPointCells(vtkIdType ptId, vtkIdList* cellIds) override;
92  int GetMaxCellSize() override { return 8; } // hexahedron is the largest
93  void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds) override;
95 
99  void CopyStructure(vtkDataSet* ds) override;
100 
102 
105  void ShallowCopy(vtkDataObject* src) override;
106  void DeepCopy(vtkDataObject* src) override;
108 
112  inline int GetDataDimension() { return 3; }
113 
115 
120  void SetDimensions(int i, int j, int k);
121  void SetDimensions(int dim[3]);
122  void GetDimensions(int dim[3]);
124 
130  void GetCellDims(int cellDims[3]);
131 
135  int GetExtentType() override { return VTK_3D_EXTENT; }
136 
138 
145  void SetExtent(int x0, int x1, int y0, int y1, int z0, int z1);
146  void SetExtent(int extent[6]);
147  vtkGetVector6Macro(Extent, int);
149 
151 
154  void SetCells(vtkCellArray* cells);
155  vtkGetObjectMacro(Cells, vtkCellArray);
157 
159 
163  void BuildLinks();
164  vtkGetObjectMacro(Links, vtkAbstractCellLinks);
166 
171 
175  void GetCellPoints(vtkIdType cellId, vtkIdType& npts, vtkIdType*& pts);
176 
180  void GetCellNeighbors(vtkIdType cellId, vtkIdType neighbors[6], int* wholeExtent = nullptr);
181 
190  void ComputeCellStructuredCoords(
191  vtkIdType cellId, int& i, int& j, int& k, bool adjustForExtent = true);
192 
201  vtkIdType ComputeCellId(int i, int j, int k, bool adjustForExtent = true);
202 
207 
209 
212  vtkSetStringMacro(FacesConnectivityFlagsArrayName);
213  vtkGetStringMacro(FacesConnectivityFlagsArrayName);
215 
217 
223  void BlankCell(vtkIdType cellId);
224  void UnBlankCell(vtkIdType cellId);
226 
230  bool HasAnyBlankCells() override;
231 
237  unsigned char IsCellVisible(vtkIdType cellId);
238 
244  unsigned char IsCellGhost(vtkIdType cellId);
245 
250 
252 
257  void Crop(const int* updateExtent) override;
258  virtual void Crop(
259  vtkExplicitStructuredGrid* input, const int* updateExtent, bool generateOriginalCellIds);
261 
263 
269 
278  unsigned long GetActualMemorySize() override;
279 
291 
293 
299  void GenerateGhostArray(int zeroExt[6], bool cellOnly) override;
301 
302 protected:
305 
310  virtual void ComputeScalarRange() override;
311 
316 
321 
326 
331  int FindConnectedFaces(int foundFaces[3]);
332 
337  static void CheckConnectedFaces(int& nFoundFaces, int foundFaces[3]);
338 
342  static void ComputeSwapFlag(int foundFaces[3], int swap[3]);
343 
347  static void ComputeMirrorFlag(int foundFaces[3], int mirror[3]);
348 
352  void ReorderCellsPoints(const int* ptsMap, const int transformFlag[3]);
353 
354  // Used by GetCell method
357 
360  int Extent[6];
362 
363 private:
365  void operator=(const vtkExplicitStructuredGrid&) = delete;
366 };
367 
368 //----------------------------------------------------------------------------
370 {
372 }
373 
374 //----------------------------------------------------------------------------
375 inline void vtkExplicitStructuredGrid::GetCellDims(int cellDims[3])
376 {
378 }
379 
380 //----------------------------------------------------------------------------
382  vtkIdType cellId, int& i, int& j, int& k, bool adjustForExtent)
383 {
384  int ijk[3];
385  if (adjustForExtent)
386  {
388  }
389  else
390  {
391  int dims[3];
392  this->GetDimensions(dims);
394  }
395  i = ijk[0];
396  j = ijk[1];
397  k = ijk[2];
398 }
399 
400 //----------------------------------------------------------------------------
401 inline vtkIdType vtkExplicitStructuredGrid::ComputeCellId(int i, int j, int k, bool adjustForExtent)
402 {
403  int ijk[] = { i, j, k };
404  if (adjustForExtent)
405  {
407  }
408  else
409  {
410  int dims[3];
411  this->GetDimensions(dims);
412  return vtkStructuredData::ComputeCellId(dims, ijk);
413  }
414 }
415 #endif
vtkExplicitStructuredGrid::GetCellPoints
void GetCellPoints(vtkIdType cellId, vtkIdList *ptIds) override
Topological inquiry to get points defining cell.
vtkExplicitStructuredGrid::Hexahedron
vtkNew< vtkHexahedron > Hexahedron
Definition: vtkExplicitStructuredGrid.h:355
vtkDataSet::GenerateGhostArray
virtual void GenerateGhostArray(int zeroExt[6])
Normally called by pipeline executives or algorithms only.
Definition: vtkDataSet.h:386
vtkExplicitStructuredGrid::HasAnyBlankCells
bool HasAnyBlankCells() override
Returns true if one or more cells are blanked, false otherwise.
vtkExplicitStructuredGrid::GetCell
vtkCell * GetCell(vtkIdType cellId) override
Get cell with cellId such that: 0 <= cellId < NumberOfCells.
vtkExplicitStructuredGrid::FindConnectedFaces
int FindConnectedFaces(int foundFaces[3])
Find a connected face for each axis if any.
vtkExplicitStructuredGrid::GetDimensions
void GetDimensions(int dim[3])
Definition: vtkExplicitStructuredGrid.h:369
vtkExplicitStructuredGrid::GetData
static vtkExplicitStructuredGrid * GetData(vtkInformationVector *v, int i=0)
vtkExplicitStructuredGrid::Crop
virtual void Crop(vtkExplicitStructuredGrid *input, const int *updateExtent, bool generateOriginalCellIds)
vtkExplicitStructuredGrid::SetDimensions
void SetDimensions(int i, int j, int k)
Set/Get the dimensions of this structured dataset in term of number of points along each direction.
vtkExplicitStructuredGrid::CopyStructure
void CopyStructure(vtkDataSet *ds) override
Copy the geometric and topological structure of an input poly data object.
vtkExplicitStructuredGrid::Crop
void Crop(const int *updateExtent) override
Reallocates and copies to set the Extent to the UpdateExtent.
vtkExplicitStructuredGrid::GetCell
void GetCell(vtkIdType cellId, vtkGenericCell *cell) override
Get cell with cellId such that: 0 <= cellId < NumberOfCells.
vtkHexahedron
a cell that represents a linear 3D hexahedron
Definition: vtkHexahedron.h:42
vtkExplicitStructuredGrid::New
static vtkExplicitStructuredGrid * New()
Standard methods for instantiation, type information, and printing.
vtkExplicitStructuredGrid::ComputeSwapFlag
static void ComputeSwapFlag(int foundFaces[3], int swap[3])
Compute a swap flag based if a face have been found.
vtkExplicitStructuredGrid::EmptyCell
vtkNew< vtkEmptyCell > EmptyCell
Definition: vtkExplicitStructuredGrid.h:356
vtkPointSet.h
vtkIdType
int vtkIdType
Definition: vtkType.h:338
vtkExplicitStructuredGrid::CheckConnectedFaces
static void CheckConnectedFaces(int &nFoundFaces, int foundFaces[3])
Check a list of connected faces and remove invalid face or extrapolate missing faces.
vtkExplicitStructuredGrid::ReorderCellsPoints
void ReorderCellsPoints(const int *ptsMap, const int transformFlag[3])
Reorder all cells points based on a transformFlag for each axis and a points map.
vtkStructuredData::GetCellDimensionsFromExtent
static void GetCellDimensionsFromExtent(const int ext[6], int celldims[3], int dataDescription=VTK_EMPTY)
Returns the cell dimensions, i.e., the number of cells along the i,j,k for the grid with the given gr...
Definition: vtkStructuredData.h:275
vtkStructuredData::ComputeCellStructuredCoords
static void ComputeCellStructuredCoords(const vtkIdType cellId, const int dim[3], int ijk[3], int dataDescription=VTK_EMPTY)
Given a cellId and grid dimensions 'dim', get the structured coordinates (i-j-k).
Definition: vtkStructuredData.h:394
vtkExplicitStructuredGrid::vtkExplicitStructuredGrid
vtkExplicitStructuredGrid()
vtkExplicitStructuredGrid::ComputeCellId
vtkIdType ComputeCellId(int i, int j, int k, bool adjustForExtent=true)
Given a location in structured coordinates (i-j-k), return the cell id.
Definition: vtkExplicitStructuredGrid.h:401
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:36
vtkEmptyCell
an empty cell used as a place-holder during processing
Definition: vtkEmptyCell.h:30
vtkExplicitStructuredGrid::ComputeMirrorFlag
static void ComputeMirrorFlag(int foundFaces[3], int mirror[3])
Compute a mirror flag based if a face have been found.
vtkExplicitStructuredGrid::GenerateGhostArray
void GenerateGhostArray(int zeroExt[6], bool cellOnly) override
vtkExplicitStructuredGrid::Initialize
void Initialize() override
Standard vtkDataSet API methods.
vtkExplicitStructuredGrid::InternalCopy
virtual void InternalCopy(vtkExplicitStructuredGrid *src)
Internal method used by DeepCopy and ShallowCopy.
vtkExplicitStructuredGrid::GetCellType
int GetCellType(vtkIdType cellId) override
Get type of cell with cellId such that: 0 <= cellId < NumberOfCells.
vtkExplicitStructuredGrid::GetNumberOfCells
vtkIdType GetNumberOfCells() override
Determine the number of cells composing the dataset.
vtkExplicitStructuredGrid::GetCellPoints
vtkIdType * GetCellPoints(vtkIdType cellId)
Get direct raw pointer to the 8 points indices of an hexahedra.
vtkExplicitStructuredGrid::ComputeFacesConnectivityFlagsArray
void ComputeFacesConnectivityFlagsArray()
Compute the faces connectivity flags array.
vtkExplicitStructuredGrid::GetCell
void GetCell(vtkIdType, vtkCell *)
Internal method used by GetCell.
vtkStructuredData::GetDimensionsFromExtent
static void GetDimensionsFromExtent(const int ext[6], int dims[3], int dataDescription=VTK_EMPTY)
Computes the structured grid dimensions based on the given extent.
Definition: vtkStructuredData.h:333
vtkExplicitStructuredGrid::GetPointCells
void GetPointCells(vtkIdType ptId, vtkIdList *cellIds) override
Topological inquiry to get cells using point.
vtkExplicitStructuredGrid::IsCellGhost
unsigned char IsCellGhost(vtkIdType cellId)
Return non-zero value if specified cell is a ghost cell.
VTK_3D_EXTENT
#define VTK_3D_EXTENT
Definition: vtkDataObject.h:56
vtkExplicitStructuredGrid::GetCellDims
void GetCellDims(int cellDims[3])
Computes the cell dimensions according to internal point dimensions.
Definition: vtkExplicitStructuredGrid.h:375
vtkStructuredData.h
vtkExplicitStructuredGrid::CheckAndReorderFaces
void CheckAndReorderFaces()
Check faces are numbered correctly regarding ijk numbering If not this will reorganize cell points or...
vtkExplicitStructuredGrid::GetData
static vtkExplicitStructuredGrid * GetData(vtkInformation *info)
Retrieve an instance of this class from an information object.
vtkExplicitStructuredGrid::ComputeCellStructuredCoords
void ComputeCellStructuredCoords(vtkIdType cellId, int &i, int &j, int &k, bool adjustForExtent=true)
Given a cellId, get the structured coordinates (i-j-k).
Definition: vtkExplicitStructuredGrid.h:381
vtkCell
abstract class to specify cell behavior
Definition: vtkCell.h:57
vtkExplicitStructuredGrid::SetDimensions
void SetDimensions(int dim[3])
vtkExplicitStructuredGrid::GetMaxCellSize
int GetMaxCellSize() override
Convenience method returns largest cell size in dataset.
Definition: vtkExplicitStructuredGrid.h:92
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:34
vtkExplicitStructuredGrid::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkCellArray
object to represent cell connectivity
Definition: vtkCellArray.h:180
vtkExplicitStructuredGrid::BuildLinks
void BuildLinks()
Create/Get upward links from points to cells that use each point.
vtkExplicitStructuredGrid::GetDataObjectType
int GetDataObjectType() override
Return what type of dataset this is.
Definition: vtkExplicitStructuredGrid.h:77
vtkIdList
list of point or cell ids
Definition: vtkIdList.h:31
vtkExplicitStructuredGrid::GetCellNeighbors
void GetCellNeighbors(vtkIdType cellId, vtkIdList *ptIds, vtkIdList *cellIds) override
Topological inquiry to get all cells using list of points exclusive of cell specified (e....
vtkNew< vtkHexahedron >
vtkExplicitStructuredGrid::UnBlankCell
void UnBlankCell(vtkIdType cellId)
vtkExplicitStructuredGrid::GetExtentType
int GetExtentType() override
The extent type is a 3D extent.
Definition: vtkExplicitStructuredGrid.h:135
vtkExplicitStructuredGrid::GetActualMemorySize
unsigned long GetActualMemorySize() override
Return the actual size of the data in kilobytes.
vtkExplicitStructuredGrid::ShallowCopy
void ShallowCopy(vtkDataObject *src) override
Shallow and Deep copy.
vtkDataSet
abstract class to specify dataset behavior
Definition: vtkDataSet.h:57
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:65
vtkX3D::info
@ info
Definition: vtkX3D.h:382
VTK_EXPLICIT_STRUCTURED_GRID
#define VTK_EXPLICIT_STRUCTURED_GRID
Definition: vtkType.h:125
vtkNew.h
vtkExplicitStructuredGrid::FacesConnectivityFlagsArrayName
char * FacesConnectivityFlagsArrayName
Definition: vtkExplicitStructuredGrid.h:361
vtkPointSet
abstract class for specifying dataset behavior
Definition: vtkPointSet.h:63
vtkExplicitStructuredGrid::BlankCell
void BlankCell(vtkIdType cellId)
Methods for supporting blanking of cells.
vtkGenericCell
provides thread-safe access to cells
Definition: vtkGenericCell.h:37
vtkExplicitStructuredGrid::GetCellNeighbors
void GetCellNeighbors(vtkIdType cellId, vtkIdType neighbors[6], int *wholeExtent=nullptr)
Get cell neighbors of the cell for every faces.
vtkExplicitStructuredGrid::Extent
int Extent[6]
Definition: vtkExplicitStructuredGrid.h:360
vtkExplicitStructuredGrid
structured grid with explicit topology and geometry
Definition: vtkExplicitStructuredGrid.h:63
vtkExplicitStructuredGrid::InternalCheckAndReorderFaces
void InternalCheckAndReorderFaces(bool swap)
Internal method used by CheckAndReorderFaces.
vtkExplicitStructuredGrid::GetCellBounds
void GetCellBounds(vtkIdType cellId, double bounds[6]) override
Get the bounds of the cell with cellId such that: 0 <= cellId < NumberOfCells.
vtkStructuredData::ComputeCellStructuredCoordsForExtent
static void ComputeCellStructuredCoordsForExtent(const vtkIdType cellIdx, const int ext[6], int ijk[3], int dataDescription=VTK_EMPTY)
Given the global grid extent and the linear index of a cell within the grid extent,...
Definition: vtkStructuredData.h:402
vtkX3D::extent
@ extent
Definition: vtkX3D.h:351
vtkExplicitStructuredGrid::SetExtent
void SetExtent(int x0, int x1, int y0, int y1, int z0, int z1)
Set/Get the extent of this structured dataset in term of number of points along each direction.
vtkExplicitStructuredGrid::SetCells
void SetCells(vtkCellArray *cells)
Set/Get the cell array defining hexahedron.
vtkExplicitStructuredGrid::GetDataDimension
int GetDataDimension()
Return the dimensionality of the data.
Definition: vtkExplicitStructuredGrid.h:112
vtkStructuredData::ComputeCellId
static vtkIdType ComputeCellId(const int dim[3], const int ijk[3], int dataDescription=VTK_EMPTY)
Given a location in structured coordinates (i-j-k), and the dimensions of the structured dataset,...
Definition: vtkStructuredData.h:289
vtkStructuredData::ComputeCellIdForExtent
static vtkIdType ComputeCellIdForExtent(const int extent[6], const int ijk[3], int dataDescription=VTK_EMPTY)
Given a location in structured coordinates (i-j-k), and the extent of the structured dataset,...
Definition: vtkStructuredData.h:381
vtkExplicitStructuredGrid::Cells
vtkCellArray * Cells
Definition: vtkExplicitStructuredGrid.h:358
vtkExplicitStructuredGrid::DeepCopy
void DeepCopy(vtkDataObject *src) override
vtkDataObject
general representation of visualization data
Definition: vtkDataObject.h:60
vtkExplicitStructuredGrid::Links
vtkAbstractCellLinks * Links
Definition: vtkExplicitStructuredGrid.h:359
vtkExplicitStructuredGrid::~vtkExplicitStructuredGrid
~vtkExplicitStructuredGrid() override
vtkExplicitStructuredGrid::IsCellVisible
unsigned char IsCellVisible(vtkIdType cellId)
Return non-zero value if specified cell is visible.
vtkExplicitStructuredGrid::GetCellPoints
void GetCellPoints(vtkIdType cellId, vtkIdType &npts, vtkIdType *&pts)
More efficient method to obtain cell points.
vtkExplicitStructuredGrid::SetExtent
void SetExtent(int extent[6])
vtkExplicitStructuredGrid::HasAnyGhostCells
bool HasAnyGhostCells()
Returns true if one or more cells are ghost, false otherwise.
vtkDataSet::GetCell
virtual vtkCell * GetCell(vtkIdType cellId)=0
Get cell with cellId such that: 0 <= cellId < NumberOfCells.
vtkExplicitStructuredGrid::ComputeScalarRange
virtual void ComputeScalarRange() override
Compute the range of the scalars and cache it into ScalarRange only if the cache became invalid (Scal...