VTK  9.2.6
vtkCPExodusIIElementBlock.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkCPExodusIIElementBlock.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 =========================================================================*/
27 #ifndef vtkCPExodusIIElementBlock_h
28 #define vtkCPExodusIIElementBlock_h
29 
30 #include "vtkIOExodusModule.h" // For export macro
31 #include "vtkObject.h"
32 
33 #include "vtkMappedUnstructuredGrid.h" // For mapped unstructured grid wrapper
34 
35 #include <string> // For std::string
36 
37 class vtkGenericCell;
38 
39 class VTKIOEXODUS_EXPORT vtkCPExodusIIElementBlockImpl : public vtkObject
40 {
41 public:
43  void PrintSelf(ostream& os, vtkIndent indent) override;
45 
53  bool SetExodusConnectivityArray(
54  int* elements, const std::string& type, int numElements, int nodesPerElement);
55 
56  // API for vtkMappedUnstructuredGrid's implementation.
57  vtkIdType GetNumberOfCells();
58  int GetCellType(vtkIdType cellId);
59  void GetCellPoints(vtkIdType cellId, vtkIdList* ptIds);
60  void GetFaceStream(vtkIdType cellId, vtkIdList* ptIds);
61  void GetPointCells(vtkIdType ptId, vtkIdList* cellIds);
62  int GetMaxCellSize();
63  void GetIdsOfCellsOfType(int type, vtkIdTypeArray* array);
64  int IsHomogeneous();
65 
66  // This container is read only -- these methods do nothing but print a
67  // warning.
68  void Allocate(vtkIdType numCells, int extSize = 1000);
69  vtkIdType InsertNextCell(int type, vtkIdList* ptIds);
70  vtkIdType InsertNextCell(int type, vtkIdType npts, const vtkIdType ptIds[])
71  VTK_SIZEHINT(ptIds, npts);
72  vtkIdType InsertNextCell(int type, vtkIdType npts, const vtkIdType ptIds[], vtkIdType nfaces,
73  const vtkIdType faces[]) VTK_SIZEHINT(ptIds, npts) VTK_SIZEHINT(faces, nfaces);
74  void ReplaceCell(vtkIdType cellId, int npts, const vtkIdType pts[]) VTK_SIZEHINT(pts, npts);
75 
76 protected:
78  ~vtkCPExodusIIElementBlockImpl() override;
79 
80 private:
81  vtkCPExodusIIElementBlockImpl(const vtkCPExodusIIElementBlockImpl&) = delete;
82  void operator=(const vtkCPExodusIIElementBlockImpl&) = delete;
83 
84  // Convert between Exodus node ids and VTK point ids.
85  static vtkIdType NodeToPoint(const int& id) { return static_cast<vtkIdType>(id - 1); }
86  static int PointToNode(const vtkIdType& id) { return static_cast<int>(id + 1); }
87 
88  // Convenience methods to get pointers into the element array.
89  int* GetElementStart(vtkIdType cellId) const
90  {
91  return this->Elements + (cellId * this->CellSize);
92  }
93  int* GetElementEnd(vtkIdType cellId) const
94  {
95  return this->Elements + (cellId * this->CellSize) + this->CellSize;
96  }
97  int* GetStart() const { return this->Elements; }
98  int* GetEnd() const { return this->Elements + (this->NumberOfCells * this->CellSize); }
99 
100  int* Elements;
101  int CellType;
102  int CellSize;
103  vtkIdType NumberOfCells;
104 };
105 
108 
109 #endif // vtkCPExodusIIElementBlock_h
abstract base class for most VTK objects
Definition: vtkObject.h:62
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
dynamic, self-adjusting array of vtkIdType
int vtkIdType
Definition: vtkType.h:332
provides thread-safe access to cells
a simple class to control print indentation
Definition: vtkIndent.h:39
list of point or cell ids
Definition: vtkIdList.h:33
#define VTK_SIZEHINT(...)
vtkMakeExportedMappedUnstructuredGrid(vtkCPExodusIIElementBlock, vtkCPExodusIIElementBlockImpl, VTKIOEXODUS_EXPORT)
int GetCellType(const Ioss::ElementTopology *topology)
Returns VTK celltype for a Ioss topology element.
Uses an Exodus II element block as a vtkMappedUnstructuredGrid's implementation.
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...