VTK  9.7.0
vtkExplicitStructuredGrid.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
44
45#ifndef vtkExplicitStructuredGrid_h
46#define vtkExplicitStructuredGrid_h
47
48#include "vtkAbstractCellLinks.h" // For vtkAbstractCellLinks
49#include "vtkCellArray.h" // For vtkCellArray
50#include "vtkCommonDataModelModule.h" // For export macro
51#include "vtkNew.h" // for vtkNew
52#include "vtkPointSet.h"
53#include "vtkStructuredData.h" // For static method usage
54
55VTK_ABI_NAMESPACE_BEGIN
56class vtkCellArray;
57
58class VTKCOMMONDATAMODEL_EXPORT vtkExplicitStructuredGrid : public vtkPointSet
59{
60public:
62
67 void PrintSelf(ostream& os, vtkIndent indent) override;
69
73 int GetDataObjectType() VTK_FUTURE_CONST override { return VTK_EXPLICIT_STRUCTURED_GRID; }
74
76
79 void Initialize() override;
81 vtkCell* GetCell(vtkIdType cellId) override;
82 void GetCell(vtkIdType cellId, vtkGenericCell* cell) override;
83 void GetCellBounds(vtkIdType cellId, double bounds[6]) override;
84 int GetCellType(vtkIdType cellId) override;
87 void GetCellPoints(vtkIdType cellId, vtkIdList* ptIds) override;
88 void GetPointCells(vtkIdType ptId, vtkIdList* cellIds) override;
89 int GetMaxCellSize() override { return 8; } // hexahedron is the largest
90 int GetMaxSpatialDimension() override { return 3; }
91 int GetMinSpatialDimension() override { return 3; }
92 void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds) override;
94
98 void CopyStructure(vtkDataSet* ds) override;
99
101
104 void ShallowCopy(vtkDataObject* src) override;
105 void DeepCopy(vtkDataObject* src) override;
107
111 int GetDataDimension() { return 3; }
112
114
119 void SetDimensions(int i, int j, int k);
120 void SetDimensions(int dim[3]);
121 void GetDimensions(int dim[3]);
123
129 void GetCellDims(int cellDims[3]);
130
134 int GetExtentType() VTK_FUTURE_CONST override { return VTK_3D_EXTENT; }
135
137
144 void SetExtent(int x0, int x1, int y0, int y1, int z0, int z1);
145 void SetExtent(VTK_FUTURE_CONST int extent[6]);
146 vtkGetVector6Macro(Extent, int);
148
150
153 vtkSetSmartPointerMacro(Cells, vtkCellArray);
154 vtkGetSmartPointerMacro(Cells, vtkCellArray);
156
162
164
167 vtkSetSmartPointerMacro(Links, vtkAbstractCellLinks);
168 vtkGetSmartPointerMacro(Links, vtkAbstractCellLinks);
170
177
183 void GetCellPoints(vtkIdType cellId, vtkIdType& npts, vtkIdType*& pts);
184
194 vtkIdType cellId, vtkIdType& npts, vtkIdType const*& pts, vtkIdList* ptIds) override;
195
200 vtkIdType cellId, vtkIdType neighbors[6], VTK_FUTURE_CONST int wholeExtent[6] = nullptr);
201
211 vtkIdType cellId, int& i, int& j, int& k, bool adjustForExtent = true);
212
221 vtkIdType ComputeCellId(int i, int j, int k, bool adjustForExtent = true);
222
229
231
237
239
245 void BlankCell(vtkIdType cellId);
246 void UnBlankCell(vtkIdType cellId);
248
252 bool HasAnyBlankCells() override;
253
259 unsigned char IsCellVisible(vtkIdType cellId);
260
266 unsigned char IsCellGhost(vtkIdType cellId);
267
272
274
279 void Crop(const int updateExtent[6]) override;
280 virtual void Crop(
281 vtkExplicitStructuredGrid* input, const int updateExtent[6], bool generateOriginalCellIds);
283
285
291
300 unsigned long GetActualMemorySize() override;
301
313
315
321 void GenerateGhostArray(int zeroExt[6], bool cellOnly) override;
323
324protected:
327
329
334 void ComputeScalarRange() override;
335
340
345
350 int FindConnectedFaces(int foundFaces[3]);
351
356 static void CheckConnectedFaces(int& nFoundFaces, int foundFaces[3]);
357
361 static void ComputeSwapFlag(int foundFaces[3], int swap[3]);
362
366 static void ComputeMirrorFlag(int foundFaces[3], int mirror[3]);
367
371 void ReorderCellsPoints(const int* ptsMap, const int transformFlag[3]);
372
375 int Extent[6];
377
378private:
380 void operator=(const vtkExplicitStructuredGrid&) = delete;
381};
382
383//----------------------------------------------------------------------------
385{
387}
388
389//----------------------------------------------------------------------------
390inline void vtkExplicitStructuredGrid::GetCellDims(int cellDims[3])
391{
393}
394
395//----------------------------------------------------------------------------
397 vtkIdType cellId, int& i, int& j, int& k, bool adjustForExtent)
398{
399 int ijk[3];
400 if (adjustForExtent)
401 {
403 }
404 else
405 {
406 int dims[3];
407 this->GetDimensions(dims);
409 }
410 i = ijk[0];
411 j = ijk[1];
412 k = ijk[2];
413}
414
415//----------------------------------------------------------------------------
416inline vtkIdType vtkExplicitStructuredGrid::ComputeCellId(int i, int j, int k, bool adjustForExtent)
417{
418 int ijk[] = { i, j, k };
419 if (adjustForExtent)
420 {
422 }
423 else
424 {
425 int dims[3];
426 this->GetDimensions(dims);
427 return vtkStructuredData::ComputeCellId(dims, ijk);
428 }
429}
430VTK_ABI_NAMESPACE_END
431#endif
object to represent cell connectivity
abstract class to specify cell behavior
Definition vtkCell.h:51
virtual void GenerateGhostArray(int zeroExt[6])
Normally called by pipeline executives or algorithms only.
Definition vtkDataSet.h:477
virtual vtkCell * GetCell(vtkIdType cellId)=0
Get cell with cellId such that: 0 <= cellId < NumberOfCells.
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.
int GetMinSpatialDimension() override
Standard vtkDataSet API methods.
void InternalCheckAndReorderFaces(bool swap)
Internal method used by CheckAndReorderFaces.
vtkSmartPointer< vtkAbstractCellLinks > Links
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 SetExtent(VTK_FUTURE_CONST int extent[6])
Set/Get the extent of this structured dataset in term of number of points along each direction.
void ComputeScalarRange() override
Compute the range of the scalars and cache it into ScalarRange only if the cache became invalid (Scal...
void ReportReferences(vtkGarbageCollector *) override
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.
int GetMaxSpatialDimension() override
Standard vtkDataSet API methods.
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 GetExtentType() VTK_FUTURE_CONST override
The extent type is a 3D extent.
int FindConnectedFaces(int foundFaces[3])
Find a connected face for each axis if any.
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 PrintSelf(ostream &os, vtkIndent indent) override
Standard methods for instantiation, type information, and printing.
void GetCellNeighbors(vtkIdType cellId, vtkIdType neighbors[6], VTK_FUTURE_CONST int wholeExtent[6]=nullptr)
Get cell neighbors of the cell for every faces.
virtual void Crop(vtkExplicitStructuredGrid *input, const int updateExtent[6], bool generateOriginalCellIds)
Reallocates and copies to set the Extent to the UpdateExtent.
static vtkExplicitStructuredGrid * GetData(vtkInformation *info)
Retrieve an instance of this class from an information object.
~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 Crop(const int updateExtent[6]) override
Reallocates and copies to set the Extent to the UpdateExtent.
void BuildLinks()
Build topological links from points to lists of 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 GetDataObjectType() VTK_FUTURE_CONST override
Return what type of dataset this is.
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.
vtkCell * GetCell(vtkIdType cellId) override
Standard vtkDataSet API methods.
vtkSmartPointer< vtkCellArray > Cells
Detect and break reference loops.
provides thread-safe access to cells
list of point or cell ids
Definition vtkIdList.h:26
a simple class to control print indentation
Definition vtkIndent.h:29
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Hold a reference to a vtkObjectBase instance.
static void GetCellDimensionsFromExtent(const int ext[6], int celldims[3], int dataDescription=vtkStructuredData::VTK_STRUCTURED_EMPTY)
Returns the cell dimensions, i.e., the number of cells along the i,j,k for the grid with the given gr...
static vtkIdType ComputeCellIdForExtent(const int extent[6], const int ijk[3], int dataDescription=vtkStructuredData::VTK_STRUCTURED_EMPTY)
Given a location in structured coordinates (i-j-k), and the extent of the structured dataset,...
static void ComputeCellStructuredCoords(vtkIdType cellId, const int dim[3], int ijk[3], int dataDescription=vtkStructuredData::VTK_STRUCTURED_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=vtkStructuredData::VTK_STRUCTURED_EMPTY)
Computes the structured grid dimensions based on the given extent.
static void ComputeCellStructuredCoordsForExtent(vtkIdType cellIdx, const int ext[6], int ijk[3], int dataDescription=vtkStructuredData::VTK_STRUCTURED_EMPTY)
Given the global grid extent and the linear index of a cell within the grid extent,...
static vtkIdType ComputeCellId(const int dim[3], const int ijk[3], int dataDescription=vtkStructuredData::VTK_STRUCTURED_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:363
@ VTK_EXPLICIT_STRUCTURED_GRID
Definition vtkType.h:149