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=========================================================================*/
27#ifndef vtkCPExodusIIElementBlock_h
28#define vtkCPExodusIIElementBlock_h
29
30#include "vtkObject.h"
31#include "vtkIOExodusModule.h" // For export macro
32
33#include "vtkMappedUnstructuredGrid.h" // For mapped unstructured grid wrapper
34
35#include <string> // For std::string
36
37class vtkGenericCell;
38
39class VTKIOEXODUS_EXPORT vtkCPExodusIIElementBlockImpl : public vtkObject
40{
41public:
43 virtual void PrintSelf(ostream &os, vtkIndent indent);
45
46
53 bool SetExodusConnectivityArray(int *elements, const std::string &type,
54 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
74protected:
77
78private:
80 void operator=(const vtkCPExodusIIElementBlockImpl &) VTK_DELETE_FUNCTION;
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
115 VTKIOEXODUS_EXPORT)
116
117#endif //vtkCPExodusIIElementBlock_h
virtual void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
static vtkCPExodusIIElementBlockImpl * New()
Uses an Exodus II element block as a vtkMappedUnstructuredGrid's implementation.
provides thread-safe access to cells
list of point or cell ids
Definition: vtkIdList.h:37
dynamic, self-adjusting array of vtkIdType
a simple class to control print indentation
Definition: vtkIndent.h:40
abstract base class for most VTK objects
Definition: vtkObject.h:60
@ type
Definition: vtkX3D.h:516
#define vtkMakeExportedMappedUnstructuredGrid(_className, _impl, _exportDecl)
int vtkIdType
Definition: vtkType.h:287