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=========================================================================*/
63#ifndef vtkExplicitStructuredGrid_h
64#define vtkExplicitStructuredGrid_h
65
66#include "vtkCommonDataModelModule.h" // For export macro
67#include "vtkNew.h" // for vtkNew
68#include "vtkPointSet.h"
69#include "vtkStructuredData.h" // For static method usage
70
71class vtkCellArray;
73class vtkEmptyCell;
74class vtkHexahedron;
75
76class VTKCOMMONDATAMODEL_EXPORT vtkExplicitStructuredGrid : public vtkPointSet
77{
78public:
80
85 void PrintSelf(ostream& os, vtkIndent indent) override;
87
92
94
97 void Initialize() override;
99 vtkCell* GetCell(vtkIdType cellId) override;
100 void GetCell(vtkIdType cellId, vtkGenericCell* cell) override;
101 void GetCellBounds(vtkIdType cellId, double bounds[6]) override;
102 int GetCellType(vtkIdType cellId) override;
105 void GetCellPoints(vtkIdType cellId, vtkIdList* ptIds) override;
106 void GetPointCells(vtkIdType ptId, vtkIdList* cellIds) override;
107 int GetMaxCellSize() override { return 8; } // hexahedron is the largest
108 void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds) override;
110
114 void CopyStructure(vtkDataSet* ds) override;
115
117
120 void ShallowCopy(vtkDataObject* src) override;
121 void DeepCopy(vtkDataObject* src) override;
123
127 inline int GetDataDimension() { return 3; }
128
130
135 void SetDimensions(int i, int j, int k);
136 void SetDimensions(int dim[3]);
137 void GetDimensions(int dim[3]);
139
145 void GetCellDims(int cellDims[3]);
146
150 int GetExtentType() override { return VTK_3D_EXTENT; }
151
153
160 void SetExtent(int x0, int x1, int y0, int y1, int z0, int z1);
161 void SetExtent(int extent[6]);
162 vtkGetVector6Macro(Extent, int);
164
166
169 void SetCells(vtkCellArray* cells);
170 vtkGetObjectMacro(Cells, vtkCellArray);
172
174
179 vtkGetObjectMacro(Links, vtkAbstractCellLinks);
181
188
194 void GetCellPoints(vtkIdType cellId, vtkIdType& npts, vtkIdType*& pts);
195
205 vtkIdType cellId, vtkIdType& npts, vtkIdType const*& pts, vtkIdList* ptIds) override;
206
210 void GetCellNeighbors(vtkIdType cellId, vtkIdType neighbors[6], int* wholeExtent = nullptr);
211
220 void ComputeCellStructuredCoords(
221 vtkIdType cellId, int& i, int& j, int& k, bool adjustForExtent = true);
222
231 vtkIdType ComputeCellId(int i, int j, int k, bool adjustForExtent = true);
232
239
241
244 vtkSetStringMacro(FacesConnectivityFlagsArrayName);
245 vtkGetStringMacro(FacesConnectivityFlagsArrayName);
247
249
255 void BlankCell(vtkIdType cellId);
256 void UnBlankCell(vtkIdType cellId);
258
262 bool HasAnyBlankCells() override;
263
269 unsigned char IsCellVisible(vtkIdType cellId);
270
276 unsigned char IsCellGhost(vtkIdType cellId);
277
282
284
289 void Crop(const int* updateExtent) override;
290 virtual void Crop(
291 vtkExplicitStructuredGrid* input, const int* updateExtent, bool generateOriginalCellIds);
293
295
301
310 unsigned long GetActualMemorySize() override;
311
323
325
331 void GenerateGhostArray(int zeroExt[6], bool cellOnly) override;
333
334protected:
337
342 void ComputeScalarRange() override;
343
348
353
358
363 int FindConnectedFaces(int foundFaces[3]);
364
369 static void CheckConnectedFaces(int& nFoundFaces, int foundFaces[3]);
370
374 static void ComputeSwapFlag(int foundFaces[3], int swap[3]);
375
379 static void ComputeMirrorFlag(int foundFaces[3], int mirror[3]);
380
384 void ReorderCellsPoints(const int* ptsMap, const int transformFlag[3]);
385
386 // Used by GetCell method
389
392 int Extent[6];
394
395private:
397 void operator=(const vtkExplicitStructuredGrid&) = delete;
398};
399
400//----------------------------------------------------------------------------
402{
404}
405
406//----------------------------------------------------------------------------
407inline void vtkExplicitStructuredGrid::GetCellDims(int cellDims[3])
408{
410}
411
412//----------------------------------------------------------------------------
414 vtkIdType cellId, int& i, int& j, int& k, bool adjustForExtent)
415{
416 int ijk[3];
417 if (adjustForExtent)
418 {
420 }
421 else
422 {
423 int dims[3];
424 this->GetDimensions(dims);
426 }
427 i = ijk[0];
428 j = ijk[1];
429 k = ijk[2];
430}
431
432//----------------------------------------------------------------------------
433inline vtkIdType vtkExplicitStructuredGrid::ComputeCellId(int i, int j, int k, bool adjustForExtent)
434{
435 int ijk[] = { i, j, k };
436 if (adjustForExtent)
437 {
439 }
440 else
441 {
442 int dims[3];
443 this->GetDimensions(dims);
444 return vtkStructuredData::ComputeCellId(dims, ijk);
445 }
446}
447#endif
object to represent cell connectivity
abstract class to specify cell behavior
Definition vtkCell.h:70
general representation of visualization data
abstract class to specify dataset behavior
Definition vtkDataSet.h:72
virtual void GenerateGhostArray(int zeroExt[6])
Normally called by pipeline executives or algorithms only.
Definition vtkDataSet.h:441
virtual vtkCell * GetCell(vtkIdType cellId)=0
Get cell with cellId such that: 0 <= cellId < NumberOfCells.
an empty cell used as a place-holder during processing
structured grid with explicit topology and geometry
void DeepCopy(vtkDataObject *src) override
Shallow and Deep copy.
vtkIdType * GetCellPoints(vtkIdType cellId)
Get direct raw pointer to the 8 points indices of an hexahedra.
void InternalCheckAndReorderFaces(bool swap)
Internal method used by CheckAndReorderFaces.
static vtkExplicitStructuredGrid * New()
Standard methods for instantiation, type information, and printing.
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.
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.
static vtkExplicitStructuredGrid * GetData(vtkInformationVector *v, int i=0)
Retrieve an instance of this class from an information object.
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.
static vtkExplicitStructuredGrid * GetData(vtkInformation *info)
Retrieve an instance of this class from an information object.
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...
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.
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.
vtkCell * GetCell(vtkIdType cellId) override
Standard vtkDataSet API methods.
provides thread-safe access to cells
a cell that represents a linear 3D hexahedron
list of point or cell ids
Definition vtkIdList.h:43
a simple class to control print indentation
Definition vtkIndent.h:49
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Allocate and hold a VTK object.
Definition vtkNew.h:71
concrete class for storing a set of points
Definition vtkPointSet.h:79
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,...
#define VTK_3D_EXTENT
int vtkIdType
Definition vtkType.h:332
#define VTK_EXPLICIT_STRUCTURED_GRID
Definition vtkType.h:117