32 #ifndef vtkPEnSightReader_h 33 #define vtkPEnSightReader_h 54 class vtkPEnSightReaderCellIdsType;
56 #define NEXTMODULO3(x) (x == 0) ? 1 : ((x == 1) ? 2 : 0) 79 , cellLocalNumberOfIds(-1)
81 , ImplicitDimensions(NULL)
82 , ImplicitLocalDimensions(NULL)
83 , ImplicitSplitDimension(-1)
84 , ImplicitSplitDimensionBeginIndex(-1)
85 , ImplicitSplitDimensionEndIndex(-1)
93 , cellLocalNumberOfIds(-1)
95 , ImplicitDimensions(NULL)
96 , ImplicitLocalDimensions(NULL)
97 , ImplicitSplitDimension(-1)
98 , ImplicitSplitDimensionBeginIndex(-1)
99 , ImplicitSplitDimensionEndIndex(-1)
104 this->cellMap =
new IntIntMap;
105 this->cellNumberOfIds = 0;
106 this->cellVector = NULL;
110 this->ImplicitDimensions =
new int[3];
111 this->ImplicitSplitDimension = -1;
112 this->ImplicitSplitDimensionBeginIndex = -1;
113 this->ImplicitSplitDimensionEndIndex = -1;
117 this->cellMap = NULL;
118 this->cellVector =
new IntVector;
119 this->cellNumberOfIds = -1;
120 this->cellLocalNumberOfIds = -1;
126 delete this->cellMap;
127 delete this->cellVector;
128 delete[] this->ImplicitDimensions;
136 this->cellMap =
new IntIntMap;
137 this->cellNumberOfIds = 0;
138 this->cellVector = NULL;
142 this->ImplicitDimensions =
new int[3];
143 this->ImplicitSplitDimension = -1;
144 this->ImplicitSplitDimensionBeginIndex = -1;
145 this->ImplicitSplitDimensionEndIndex = -1;
149 this->cellMap = NULL;
150 this->cellVector =
new IntVector;
151 this->cellNumberOfIds = -1;
152 this->cellLocalNumberOfIds = -1;
158 this->ImplicitDimensions[0] = dim1;
159 this->ImplicitDimensions[1] = dim2;
160 this->ImplicitDimensions[2] = dim3;
167 this->ImplicitSplitDimensionBeginIndex = begin;
185 if (this->ImplicitSplitDimension == -1)
191 index[2] =
id / (this->ImplicitDimensions[0] * this->ImplicitDimensions[1]);
192 index[1] = (
id - (index[2] * this->ImplicitDimensions[0] * this->ImplicitDimensions[1])) /
193 this->ImplicitDimensions[0];
194 index[0] =
id - index[1] * this->ImplicitDimensions[0] -
195 index[2] * this->ImplicitDimensions[1] * this->ImplicitDimensions[0];
196 if ((index[this->ImplicitSplitDimension] < this->ImplicitSplitDimensionBeginIndex) ||
197 (index[this->ImplicitSplitDimension] >= this->ImplicitSplitDimensionEndIndex))
207 int dim = this->ImplicitSplitDimension;
208 localIndex[dim] = index[dim] - this->ImplicitSplitDimensionBeginIndex;
210 this->ImplicitSplitDimensionEndIndex - this->ImplicitSplitDimensionBeginIndex;
212 localIndex[dim] = index[dim];
213 localDim[dim] = this->ImplicitDimensions[dim];
215 localDim[dim] = this->ImplicitDimensions[dim];
216 localIndex[dim] = index[dim];
217 return localIndex[0] + localDim[0] * localIndex[1] +
218 localDim[0] * localDim[1] * localIndex[2];
223 std::map<int, int>::iterator it = this->cellMap->find(
id);
224 if (it == this->cellMap->end())
227 return (*this->cellMap)[id];
232 if (this->cellVector->size() > (
unsigned int)(
id))
233 return (*this->cellVector)[id];
253 std::map<int, int>::iterator it = this->cellMap->find(
id);
254 if (it == this->cellMap->end())
255 this->cellNumberOfIds++;
257 (*this->cellMap)[
id] = value;
262 if (this->cellVector->size() < (
unsigned int)(
id + 1))
265 int currentSize =
static_cast<int>(this->cellVector->size());
266 this->cellVector->resize(
id + 1);
267 for (k = currentSize; k < id; k++)
269 (*this->cellVector)[k] = -1;
271 (*this->cellVector)[
id] = value;
275 (*this->cellVector)[
id] = value;
298 (*this->cellMap)[this->cellNumberOfIds] =
id;
301 this->cellNumberOfIds++;
302 return this->cellNumberOfIds - 1;
307 this->cellVector->push_back(
id);
308 return static_cast<int>(this->cellVector->size() - 1);
312 return static_cast<int>(this->cellVector->size() - 1);
322 return this->cellNumberOfIds;
327 return this->cellNumberOfIds;
331 return this->cellNumberOfIds;
345 if (this->cellNumberOfIds >= 0)
347 return this->cellNumberOfIds;
350 return static_cast<int>(this->cellVector->size());
363 this->cellNumberOfIds = n;
377 this->cellLocalNumberOfIds = n;
385 this->cellMap->clear();
386 this->cellNumberOfIds = 0;
391 this->cellVector->clear();
392 if (this->cellNumberOfIds >= 0)
393 this->cellNumberOfIds = -1;
394 if (this->cellLocalNumberOfIds >= 0)
395 this->cellLocalNumberOfIds = -1;
406 return this->cellNumberOfIds;
411 return this->cellLocalNumberOfIds;
415 return static_cast<int>(this->cellMap->size());
425 if (this->cellLocalNumberOfIds >= 0)
427 return this->cellLocalNumberOfIds;
432 for (
unsigned int i = 0; i < this->cellVector->size(); i++)
434 if ((*this->cellVector)[i] != -1)
451 int dim = this->ImplicitSplitDimension;
453 this->ImplicitSplitDimensionEndIndex - this->ImplicitSplitDimensionBeginIndex;
455 localDim[dim] = this->ImplicitDimensions[dim];
457 localDim[dim] = this->ImplicitDimensions[dim];
461 for (
int k = 0; k < this->ImplicitDimensions[2]; k++)
463 for (
int j = 0; j < this->ImplicitDimensions[1]; j++)
465 for (
int i = 0; i < this->ImplicitDimensions[0]; i++)
467 int n = (this->ImplicitSplitDimension == 0)
469 : ((this->ImplicitSplitDimension == 1) ? j : k);
470 if ((n >= this->ImplicitSplitDimensionBeginIndex) &&
471 (n < this->ImplicitSplitDimensionEndIndex))
474 array->SetTypedTuple(index, &nn);
489 int min = 1000000000;
491 for (i = 0; i < this->GetNumberOfIds(); i++)
493 int id = this->GetId(i);
501 array->SetTypedTuple(
id, &ii);
546 NUMBER_OF_ELEMENT_TYPES = 17
553 TENSOR_SYMM_PER_NODE = 2,
554 SCALAR_PER_ELEMENT = 3,
555 VECTOR_PER_ELEMENT = 4,
556 TENSOR_SYMM_PER_ELEMENT = 5,
557 SCALAR_PER_MEASURED_NODE = 6,
558 VECTOR_PER_MEASURED_NODE = 7,
559 COMPLEX_SCALAR_PER_NODE = 8,
560 COMPLEX_VECTOR_PER_NODE = 9,
561 COMPLEX_SCALAR_PER_ELEMENT = 10,
562 COMPLEX_VECTOR_PER_ELEMENT = 11
577 vtkGetStringMacro(MeasuredFileName);
585 vtkGetStringMacro(MatchFileName);
605 vtkSetStringMacro(MeasuredFileName);
612 vtkSetStringMacro(MatchFileName);
620 int ReadCaseFileGeometry(
char* line);
621 int ReadCaseFileVariable(
char* line);
622 int ReadCaseFileTime(
char* line);
623 int ReadCaseFileFile(
char* line);
632 virtual int ReadGeometryFile(
639 virtual int ReadMeasuredGeometryFile(
651 virtual int ReadScalarsPerNode(
const char* fileName,
const char* description,
int timeStep,
653 int component = 0) = 0;
659 virtual int ReadVectorsPerNode(
const char* fileName,
const char* description,
int timeStep,
666 virtual int ReadTensorsPerNode(
673 virtual int ReadScalarsPerElement(
const char* fileName,
const char* description,
int timeStep,
680 virtual int ReadVectorsPerElement(
687 virtual int ReadTensorsPerElement(
694 virtual int CreateUnstructuredGridOutput(
701 virtual int CreateStructuredGridOutput(
707 void AddVariableFileName(
const char* fileName1,
const char* fileName2 = NULL);
712 void AddVariableDescription(
const char* description);
717 void AddVariableType();
723 int GetElementType(
const char* line);
729 int GetSectionType(
const char* line);
734 void ReplaceWildcards(
char* filename,
int num);
739 void RemoveLeadingBlanks(
char* line);
751 vtkIdType GetTotalNumberOfCellIds(
int index);
752 vtkIdType GetLocalTotalNumberOfCellIds(
int index);
786 const std::vector<vtkIdType>& faces = {});
787 void InsertVariableComponent(
vtkFloatArray* array,
int i,
int component,
float* content,
788 int partId,
int ensightCellType,
int insertionType);
803 void PrepareStructuredDimensionsForDistribution(
int partId,
int* oldDimensions,
804 int* newDimensions,
int* splitDimension,
int* splitDimensionBeginIndex,
int ghostLevel,
864 vtkSetMacro(UseTimeSets,
int);
865 vtkGetMacro(UseTimeSets,
int);
866 vtkBooleanMacro(UseTimeSets,
int);
869 vtkSetMacro(UseFileSets,
int);
870 vtkGetMacro(UseFileSets,
int);
871 vtkBooleanMacro(UseFileSets,
int);
881 int CheckOutputConsistency();
void SetMode(EnsightReaderCellIdMode amode)
std::vector< int > IntVector
vtkPEnSightReaderCellIds(EnsightReaderCellIdMode amode)
void SetImplicitSplitDimensionEndIndex(int end)
vtkIdList * VariableTimeSetIds
EnsightReaderCellIdMode mode
Superclass for EnSight file parallel readers.
vtkIdList * TimeSetsWithFilenameNumbers
vtkIdList * ComplexVariableFileSetIds
int NumberOfGeometryParts
std::map< int, int > IntIntMap
int ImplicitSplitDimensionBeginIndex
void SetImplicitSplitDimensionBeginIndex(int begin)
char ** ComplexVariableFileNames
vtkIdList * UnstructuredPartIds
class to read any type of EnSight files
vtkPEnSightReaderCellIdsType * CellIds
virtual void SetName(const char *)
void PrintSelf(ostream &os, vtkIndent indent) override
void SetImplicitSplitDimension(int dim)
vtkIdTypeArray * GenerateGlobalIdsArray(const char *name)
static vtkIdTypeArray * New()
void SetLocalNumberOfIds(int n)
vtkIdList * VariableFileSetIds
int GetLocalNumberOfIds()
int * ImplicitLocalDimensions
bool InjectGlobalElementIds
virtual void SetNumberOfComponents(int)
vtkPEnSightReaderCellIds()
vtkIdListCollection * FileSetFileNameNumbers
int ImplicitSplitDimensionEndIndex
void SetImplicitDimensions(int dim1, int dim2, int dim3)
~vtkPEnSightReaderCellIds()
char ** VariableFileNames
void SetId(int id, int value)
vtkIdListCollection * TimeSetFileNameNumbers
vtkIdList * ComplexVariableTimeSetIds
virtual void SetNumberOfTuples(vtkIdType numTuples)=0
int ImplicitSplitDimension
void SetNumberOfIds(int n)
vtkIdListCollection * FileSetNumberOfSteps
#define VTKPVVTKEXTENSIONSIOENSIGHT_EXPORT
vtkIdList * StructuredPartIds
std::map< std::string, std::map< int, long > > FileOffsets
int NumberOfMeasuredPoints
vtkPEnSightReaderCellIdsType * PointIds
vtkIdList * FileSetsWithFilenameNumbers