VTK
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 =========================================================================*/
26 #ifndef vtkCPExodusIIElementBlock_h
27 #define vtkCPExodusIIElementBlock_h
28 
29 #include "vtkObject.h"
30 #include "vtkIOExodusModule.h" // For export macro
31 
32 #include "vtkMappedUnstructuredGrid.h" // For mapped unstructured grid wrapper
33 
34 #include <string> // For std::string
35 
36 class vtkGenericCell;
37 
39 {
40 public:
42  virtual void PrintSelf(ostream &os, vtkIndent indent);
44 
45  //@{
52  bool SetExodusConnectivityArray(int *elements, const std::string &type,
53  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 GetPointCells(vtkIdType ptId, vtkIdList *cellIds);
61  int GetMaxCellSize();
62  void GetIdsOfCellsOfType(int type, vtkIdTypeArray *array);
63  int IsHomogeneous();
64 
65  // This container is read only -- these methods do nothing but print a
66  // warning.
67  void Allocate(vtkIdType numCells, int extSize = 1000);
68  vtkIdType InsertNextCell(int type, vtkIdList *ptIds);
69  vtkIdType InsertNextCell(int type, vtkIdType npts, vtkIdType *ptIds);
70  vtkIdType InsertNextCell(int type, vtkIdType npts, vtkIdType *ptIds,
71  vtkIdType nfaces, vtkIdType *faces);
72  void ReplaceCell(vtkIdType cellId, int npts, vtkIdType *pts);
73 
74 protected:
76  ~vtkCPExodusIIElementBlockImpl();
77 
78 private:
79  vtkCPExodusIIElementBlockImpl(const vtkCPExodusIIElementBlockImpl &); // Not implemented.
80  void operator=(const vtkCPExodusIIElementBlockImpl &); // Not implemented.
81 
82  // Convert between Exodus node ids and VTK point ids.
83  static vtkIdType NodeToPoint(const int &id)
84  {
85  return static_cast<vtkIdType>(id - 1);
86  }
87  static int PointToNode(const vtkIdType &id)
88  {
89  return static_cast<int>(id + 1);
90  }
91 
92  // Convenience methods to get pointers into the element array.
93  int* GetElementStart(vtkIdType cellId) const
94  {
95  return this->Elements + (cellId * this->CellSize);
96  }
97  int* GetElementEnd(vtkIdType cellId) const
98  {
99  return this->Elements + (cellId * this->CellSize) + this->CellSize;
100  }
101  int* GetStart() const { return this->Elements; }
102  int* GetEnd() const
103  {
104  return this->Elements + (this->NumberOfCells * this->CellSize);
105  }
106 
107  int *Elements;
108  int CellType;
109  int CellSize;
110  vtkIdType NumberOfCells;
111 };
112 
116 
117 #endif //vtkCPExodusIIElementBlock_h
abstract base class for most VTK objects
Definition: vtkObject.h:61
dynamic, self-adjusting array of vtkIdType
int vtkIdType
Definition: vtkType.h:275
provides thread-safe access to cells
virtual void PrintSelf(ostream &os, vtkIndent indent)
a simple class to control print indentation
Definition: vtkIndent.h:38
list of point or cell ids
Definition: vtkIdList.h:35
#define VTKIOEXODUS_EXPORT
Uses an Exodus II element block as a vtkMappedUnstructuredGrid's implementation.
static vtkObject * New()
#define vtkMakeExportedMappedUnstructuredGrid(_className, _impl, _exportDecl)