VTK  9.2.6
vtkFLUENTReader.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkFLUENTReader.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 =========================================================================*/
38 #ifndef vtkFLUENTReader_h
39 #define vtkFLUENTReader_h
40 
41 #include "vtkIOGeometryModule.h" // For export macro
43 
45 class vtkPoints;
46 class vtkTriangle;
47 class vtkTetra;
48 class vtkQuad;
49 class vtkHexahedron;
50 class vtkPyramid;
51 class vtkWedge;
52 class vtkConvexPointSet;
53 
54 class VTKIOGEOMETRY_EXPORT vtkFLUENTReader : public vtkMultiBlockDataSetAlgorithm
55 {
56 public:
57  static vtkFLUENTReader* New();
59  void PrintSelf(ostream& os, vtkIndent indent) override;
60 
62 
65  vtkSetFilePathMacro(FileName);
66  vtkGetFilePathMacro(FileName);
68 
70 
74  vtkGetMacro(NumberOfCells, vtkIdType);
76 
80  int GetNumberOfCellArrays(void);
81 
86  const char* GetCellArrayName(int index);
87 
89 
93  int GetCellArrayStatus(const char* name);
94  void SetCellArrayStatus(const char* name, int status);
96 
98 
101  void DisableAllCellArrays();
102  void EnableAllCellArrays();
104 
106 
120  void SetDataByteOrderToBigEndian();
121  void SetDataByteOrderToLittleEndian();
122  int GetDataByteOrder();
123  void SetDataByteOrder(int);
124  const char* GetDataByteOrderAsString();
125  //
126  // Structures
127  //
128  struct Cell;
129  struct Face;
130  struct ScalarDataChunk;
131  struct VectorDataChunk;
132  struct stdString;
133  struct intVector;
134  struct doubleVector;
135  struct stringVector;
136  struct cellVector;
137  struct faceVector;
138  struct stdMap;
139  struct scalarDataVector;
140  struct vectorDataVector;
141  struct intVectorVector;
143 
144 protected:
145  vtkFLUENTReader();
146  ~vtkFLUENTReader() override;
149 
151 
155  vtkSetMacro(SwapBytes, vtkTypeBool);
156  vtkTypeBool GetSwapBytes() { return this->SwapBytes; }
157  vtkBooleanMacro(SwapBytes, vtkTypeBool);
159 
160  virtual bool OpenCaseFile(const char* filename);
161  virtual bool OpenDataFile(const char* filename);
162  virtual int GetCaseChunk();
163  virtual void GetNumberOfCellZones();
164  virtual int GetCaseIndex();
165  virtual void LoadVariableNames();
166  virtual int GetDataIndex();
167  virtual int GetDataChunk();
168  virtual void GetSpeciesVariableNames();
169 
170  virtual void ParseCaseFile();
171  virtual int GetDimension();
172  virtual void GetLittleEndianFlag();
173  virtual void GetNodesAscii();
174  virtual void GetNodesSinglePrecision();
175  virtual void GetNodesDoublePrecision();
176  virtual void GetCellsAscii();
177  virtual void GetCellsBinary();
178  virtual void GetFacesAscii();
179  virtual void GetFacesBinary();
180  virtual void GetPeriodicShadowFacesAscii();
181  virtual void GetPeriodicShadowFacesBinary();
182  virtual void GetCellTreeAscii();
183  virtual void GetCellTreeBinary();
184  virtual void GetFaceTreeAscii();
185  virtual void GetFaceTreeBinary();
186  virtual void GetInterfaceFaceParentsAscii();
187  virtual void GetInterfaceFaceParentsBinary();
188  virtual void GetNonconformalGridInterfaceFaceInformationAscii();
189  virtual void GetNonconformalGridInterfaceFaceInformationBinary();
190  virtual void GetPartitionInfo() {}
191  virtual void CleanCells();
192  virtual void PopulateCellNodes();
193  virtual int GetCaseBufferInt(int ptr);
194  virtual float GetCaseBufferFloat(int ptr);
195  virtual double GetCaseBufferDouble(int ptr);
196  virtual void PopulateTriangleCell(int i);
197  virtual void PopulateTetraCell(int i);
198  virtual void PopulateQuadCell(int i);
199  virtual void PopulateHexahedronCell(int i);
200  virtual void PopulatePyramidCell(int i);
201  virtual void PopulateWedgeCell(int i);
202  virtual void PopulatePolyhedronCell(int i);
203  virtual void ParseDataFile();
204  virtual int GetDataBufferInt(int ptr);
205  virtual float GetDataBufferFloat(int ptr);
206  virtual double GetDataBufferDouble(int ptr);
207  virtual void GetData(int dataType);
208  virtual bool ParallelCheckCell(int vtkNotUsed(i)) { return true; }
209 
210  //
211  // Variables
212  //
214  char* FileName;
217 
218  istream* FluentCaseFile;
219  istream* FluentDataFile;
220  stdString* CaseBuffer;
221  stdString* DataBuffer;
222 
231 
232  cellVector* Cells;
233  faceVector* Faces;
234  stdMap* VariableNames;
235  intVector* CellZones;
236  scalarDataVector* ScalarDataChunks;
237  vectorDataVector* VectorDataChunks;
238 
239  intVectorVector* SubSectionZones;
240  intVector* SubSectionIds;
241  intVector* SubSectionSize;
242 
243  stringVector* ScalarVariableNames;
245  stringVector* VectorVariableNames;
247 
250  int DataPass;
253 
254 private:
255  vtkFLUENTReader(const vtkFLUENTReader&) = delete;
256  void operator=(const vtkFLUENTReader&) = delete;
257 };
258 #endif
scalarDataVector * ScalarDataChunks
intVector * SubSectionSize
vectorDataVector * VectorDataChunks
Store vtkAlgorithm input/output information.
a 3D cell that represents a linear pyramid
Definition: vtkPyramid.h:46
vtkDataArraySelection * CellDataArraySelection
virtual bool ParallelCheckCell(int vtkNotUsed(i))
a cell that represents a 2D quadrilateral
Definition: vtkQuad.h:38
int vtkIdType
Definition: vtkType.h:332
Superclass for algorithms that produce only vtkMultiBlockDataSet as output.
stdString * DataBuffer
intVectorVector * SubSectionZones
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
virtual void GetPartitionInfo()
vtkTriangle * Triangle
vtkTypeBool GetSwapBytes()
Set/Get the byte swapping to explicitly swap the bytes of a file.
static vtkMultiBlockDataSetAlgorithm * New()
int vtkTypeBool
Definition: vtkABI.h:69
a 3D cell that represents a tetrahedron
Definition: vtkTetra.h:44
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkPyramid * Pyramid
stdMap * VariableNames
Store on/off settings for data arrays, etc.
vtkHexahedron * Hexahedron
cellVector * Cells
reads a dataset in Fluent file format
a cell that represents a linear 3D hexahedron
Definition: vtkHexahedron.h:44
intVector * CellZones
a 3D cell defined by a set of convex points
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkSmartPointer< vtkDataArray > GetData(const Ioss::GroupingEntity *entity, const std::string &fieldname, Ioss::Transform *transform=nullptr, Cache *cache=nullptr, const std::string &cachekey=std::string())
Returns a VTK array for a given field (fieldname) on the chosen block (or set) entity.
vtkIdType NumberOfCells
istream * FluentDataFile
intVector * ScalarSubSectionIds
intVector * SubSectionIds
a cell that represents a triangle
Definition: vtkTriangle.h:38
faceVector * Faces
stdString * CaseBuffer
Store zero or more vtkInformation instances.
istream * FluentCaseFile
stringVector * VectorVariableNames
vtkConvexPointSet * ConvexPointSet
vtkTypeBool SwapBytes
stringVector * ScalarVariableNames
vtkPoints * Points
a 3D cell that represents a linear wedge
Definition: vtkWedge.h:46
represent and manipulate 3D points
Definition: vtkPoints.h:39
virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
intVector * VectorSubSectionIds