VTK  9.2.6
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 =========================================================================*/
83 #ifndef vtkExplicitStructuredGrid_h
84 #define vtkExplicitStructuredGrid_h
85 
86 #include "vtkCommonDataModelModule.h" // For export macro
87 #include "vtkNew.h" // for vtkNew
88 #include "vtkPointSet.h"
89 #include "vtkStructuredData.h" // For static method usage
90 
91 class vtkCellArray;
93 class vtkEmptyCell;
94 class vtkHexahedron;
95 
96 class VTKCOMMONDATAMODEL_EXPORT vtkExplicitStructuredGrid : public vtkPointSet
97 {
98 public:
100 
105  void PrintSelf(ostream& os, vtkIndent indent) override;
107 
112 
114 
117  void Initialize() override;
118  using vtkDataSet::GetCell;
119  vtkCell* GetCell(vtkIdType cellId) override;
120  void GetCell(vtkIdType cellId, vtkGenericCell* cell) override;
121  void GetCellBounds(vtkIdType cellId, double bounds[6]) override;
122  int GetCellType(vtkIdType cellId) override;
123  vtkIdType GetCellSize(vtkIdType cellId) override;
125  void GetCellPoints(vtkIdType cellId, vtkIdList* ptIds) override;
126  void GetPointCells(vtkIdType ptId, vtkIdList* cellIds) override;
127  int GetMaxCellSize() override { return 8; } // hexahedron is the largest
128  void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds) override;
130 
134  void CopyStructure(vtkDataSet* ds) override;
135 
137 
140  void ShallowCopy(vtkDataObject* src) override;
141  void DeepCopy(vtkDataObject* src) override;
143 
147  inline int GetDataDimension() { return 3; }
148 
150 
155  void SetDimensions(int i, int j, int k);
156  void SetDimensions(int dim[3]);
157  void GetDimensions(int dim[3]);
159 
165  void GetCellDims(int cellDims[3]);
166 
170  int GetExtentType() override { return VTK_3D_EXTENT; }
171 
173 
180  void SetExtent(int x0, int x1, int y0, int y1, int z0, int z1);
181  void SetExtent(int extent[6]);
182  vtkGetVector6Macro(Extent, int);
184 
186 
189  void SetCells(vtkCellArray* cells);
190  vtkGetObjectMacro(Cells, vtkCellArray);
192 
194 
198  void BuildLinks();
199  vtkGetObjectMacro(Links, vtkAbstractCellLinks);
201 
208 
214  void GetCellPoints(vtkIdType cellId, vtkIdType& npts, vtkIdType*& pts);
215 
225  vtkIdType cellId, vtkIdType& npts, vtkIdType const*& pts, vtkIdList* ptIds) override;
226 
230  void GetCellNeighbors(vtkIdType cellId, vtkIdType neighbors[6], int* wholeExtent = nullptr);
231 
240  void ComputeCellStructuredCoords(
241  vtkIdType cellId, int& i, int& j, int& k, bool adjustForExtent = true);
242 
251  vtkIdType ComputeCellId(int i, int j, int k, bool adjustForExtent = true);
252 
259 
261 
264  vtkSetStringMacro(FacesConnectivityFlagsArrayName);
265  vtkGetStringMacro(FacesConnectivityFlagsArrayName);
267 
269 
275  void BlankCell(vtkIdType cellId);
276  void UnBlankCell(vtkIdType cellId);
278 
282  bool HasAnyBlankCells() override;
283 
289  unsigned char IsCellVisible(vtkIdType cellId);
290 
296  unsigned char IsCellGhost(vtkIdType cellId);
297 
302 
304 
309  void Crop(const int* updateExtent) override;
310  virtual void Crop(
311  vtkExplicitStructuredGrid* input, const int* updateExtent, bool generateOriginalCellIds);
313 
315 
321 
330  unsigned long GetActualMemorySize() override;
331 
343 
345 
351  void GenerateGhostArray(int zeroExt[6], bool cellOnly) override;
353 
354 protected:
357 
362  void ComputeScalarRange() override;
363 
368 
373 
378 
383  int FindConnectedFaces(int foundFaces[3]);
384 
389  static void CheckConnectedFaces(int& nFoundFaces, int foundFaces[3]);
390 
394  static void ComputeSwapFlag(int foundFaces[3], int swap[3]);
395 
399  static void ComputeMirrorFlag(int foundFaces[3], int mirror[3]);
400 
404  void ReorderCellsPoints(const int* ptsMap, const int transformFlag[3]);
405 
406  // Used by GetCell method
409 
412  int Extent[6];
414 
415 private:
417  void operator=(const vtkExplicitStructuredGrid&) = delete;
418 };
419 
420 //----------------------------------------------------------------------------
422 {
424 }
425 
426 //----------------------------------------------------------------------------
427 inline void vtkExplicitStructuredGrid::GetCellDims(int cellDims[3])
428 {
430 }
431 
432 //----------------------------------------------------------------------------
434  vtkIdType cellId, int& i, int& j, int& k, bool adjustForExtent)
435 {
436  int ijk[3];
437  if (adjustForExtent)
438  {
440  }
441  else
442  {
443  int dims[3];
444  this->GetDimensions(dims);
446  }
447  i = ijk[0];
448  j = ijk[1];
449  k = ijk[2];
450 }
451 
452 //----------------------------------------------------------------------------
453 inline vtkIdType vtkExplicitStructuredGrid::ComputeCellId(int i, int j, int k, bool adjustForExtent)
454 {
455  int ijk[] = { i, j, k };
456  if (adjustForExtent)
457  {
459  }
460  else
461  {
462  int dims[3];
463  this->GetDimensions(dims);
464  return vtkStructuredData::ComputeCellId(dims, ijk);
465  }
466 }
467 #endif
object to represent cell connectivity
Definition: vtkCellArray.h:296
abstract class to specify cell behavior
Definition: vtkCell.h:150
general representation of visualization data
abstract class to specify dataset behavior
Definition: vtkDataSet.h:172
virtual vtkCell * GetCell(vtkIdType cellId)=0
Get cell with cellId such that: 0 <= cellId < NumberOfCells.
virtual void GenerateGhostArray(int zeroExt[6])
Normally called by pipeline executives or algorithms only.
Definition: vtkDataSet.h:541
an empty cell used as a place-holder during processing
Definition: vtkEmptyCell.h:33
structured grid with explicit topology and geometry
void DeepCopy(vtkDataObject *src) override
Shallow and Deep copy.
vtkNew< vtkHexahedron > Hexahedron
void InternalCheckAndReorderFaces(bool swap)
Internal method used by CheckAndReorderFaces.
void Initialize() override
Standard vtkDataSet API methods.
void GetCellBounds(vtkIdType cellId, double bounds[6]) override
Standard vtkDataSet API methods.
void GetCellNeighbors(vtkIdType cellId, vtkIdList *ptIds, vtkIdList *cellIds) override
Standard vtkDataSet API methods.
void ComputeScalarRange() override
Compute the range of the scalars and cache it into ScalarRange only if the cache became invalid (Scal...
int GetDataObjectType() override
Return what type of dataset this is.
void Crop(const int *updateExtent) override
Reallocates and copies to set the Extent to the UpdateExtent.
void SetCells(vtkCellArray *cells)
Set/Get the cell array defining hexahedron.
void GetCellDims(int cellDims[3])
Computes the cell dimensions according to internal point dimensions.
void GetCell(vtkIdType cellId, vtkGenericCell *cell) override
Standard vtkDataSet API methods.
void GetCellPoints(vtkIdType cellId, vtkIdList *ptIds) override
Standard vtkDataSet API methods.
void ReorderCellsPoints(const int *ptsMap, const int transformFlag[3])
Reorder all cells points based on a transformFlag for each axis and a points map.
void ComputeCellStructuredCoords(vtkIdType cellId, int &i, int &j, int &k, bool adjustForExtent=true)
Given a cellId, get the structured coordinates (i-j-k).
int GetDataDimension()
Return the dimensionality of the data.
void CopyStructure(vtkDataSet *ds) override
Copy the geometric and topological structure of an input poly data object.
virtual void InternalCopy(vtkExplicitStructuredGrid *src)
Internal method used by DeepCopy and ShallowCopy.
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.
int FindConnectedFaces(int foundFaces[3])
Find a connected face for each axis if any.
virtual void Crop(vtkExplicitStructuredGrid *input, const int *updateExtent, bool generateOriginalCellIds)
Reallocates and copies to set the Extent to the UpdateExtent.
vtkIdType ComputeCellId(int i, int j, int k, bool adjustForExtent=true)
Given a location in structured coordinates (i-j-k), return the cell id.
void GetPointCells(vtkIdType ptId, vtkIdList *cellIds) override
Standard vtkDataSet API methods.
int GetCellType(vtkIdType cellId) override
Standard vtkDataSet API methods.
unsigned char IsCellVisible(vtkIdType cellId)
Return non-zero value if specified cell is visible.
static vtkExplicitStructuredGrid * GetData(vtkInformationVector *v, int i=0)
Retrieve an instance of this class from an information object.
void SetDimensions(int dim[3])
Set/Get the dimensions of this structured dataset in term of number of points along each direction.
unsigned long GetActualMemorySize() override
Return the actual size of the data in kilobytes.
void GetCellNeighbors(vtkIdType cellId, vtkIdType neighbors[6], int *wholeExtent=nullptr)
Get cell neighbors of the cell for every faces.
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methods for instantiation, type information, and printing.
void GetCell(vtkIdType, vtkCell *)
Internal method used by GetCell.
~vtkExplicitStructuredGrid() override
bool HasAnyGhostCells()
Returns true if one or more cells are ghost, false otherwise.
void GetCellPoints(vtkIdType cellId, vtkIdType &npts, vtkIdType *&pts)
More efficient method to obtain cell points.
void BuildLinks()
Create/Get upward links from points to cells that use each point.
void GetCellPoints(vtkIdType cellId, vtkIdType &npts, vtkIdType const *&pts, vtkIdList *ptIds) override
More efficient method to obtain cell points.
static void CheckConnectedFaces(int &nFoundFaces, int foundFaces[3])
Check a list of connected faces and remove invalid face or extrapolate missing faces.
int GetMaxCellSize() override
Standard vtkDataSet API methods.
static void ComputeSwapFlag(int foundFaces[3], int swap[3])
Compute a swap flag based if a face have been found.
int GetExtentType() override
The extent type is a 3D extent.
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.
void BlankCell(vtkIdType cellId)
Methods for supporting blanking of cells.
void ShallowCopy(vtkDataObject *src) override
Shallow and Deep copy.
void CheckAndReorderFaces()
Check faces are numbered correctly regarding ijk numbering If not this will reorganize cell points or...
vtkCell * GetCell(vtkIdType cellId) override
Standard vtkDataSet API methods.
void UnBlankCell(vtkIdType cellId)
Methods for supporting blanking of cells.
void GetDimensions(int dim[3])
Set/Get the dimensions of this structured dataset in term of number of points along each direction.
static void ComputeMirrorFlag(int foundFaces[3], int mirror[3])
Compute a mirror flag based if a face have been found.
vtkIdType GetNumberOfCells() override
Standard vtkDataSet API methods.
bool HasAnyBlankCells() override
Returns true if one or more cells are blanked, false otherwise.
vtkIdType GetCellSize(vtkIdType cellId) override
Standard vtkDataSet API methods.
static vtkExplicitStructuredGrid * GetData(vtkInformation *info)
Retrieve an instance of this class from an information object.
static vtkExplicitStructuredGrid * New()
Standard methods for instantiation, type information, and printing.
vtkIdType * GetCellPoints(vtkIdType cellId)
Get direct raw pointer to the 8 points indices of an hexahedra.
unsigned char IsCellGhost(vtkIdType cellId)
Return non-zero value if specified cell is a ghost cell.
void ComputeFacesConnectivityFlagsArray()
Compute the faces connectivity flags array.
void GenerateGhostArray(int zeroExt[6], bool cellOnly) override
Normally called by pipeline executives or algorithms only.
void SetExtent(int extent[6])
Set/Get the extent of this structured dataset in term of number of points along each direction.
provides thread-safe access to cells
a cell that represents a linear 3D hexahedron
list of point or cell ids
Definition: vtkIdList.h:143
a simple class to control print indentation
Definition: vtkIndent.h:119
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
concrete class for storing a set of points
Definition: vtkPointSet.h:109
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...
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).
static void GetDimensionsFromExtent(const int ext[6], int dims[3], int dataDescription=VTK_EMPTY)
Computes the structured grid dimensions based on the given extent.
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,...
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,...
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,...
@ info
Definition: vtkX3D.h:382
@ extent
Definition: vtkX3D.h:351
#define VTK_3D_EXTENT
int vtkIdType
Definition: vtkType.h:332
#define VTK_EXPLICIT_STRUCTURED_GRID
Definition: vtkType.h:117