40 #ifndef vtkFLUENTReader_h
41 #define vtkFLUENTReader_h
43 #include "vtkIOGeometryModule.h"
48 #include <unordered_set>
50 VTK_ABI_NAMESPACE_BEGIN
73 vtkSetFilePathMacro(FileName);
74 vtkGetFilePathMacro(FileName);
90 vtkGetMacro(CacheData,
bool);
91 vtkSetMacro(CacheData,
bool);
92 vtkBooleanMacro(CacheData,
bool);
98 int GetNumberOfCellArrays();
104 const char* GetCellArrayName(
int index);
111 int GetCellArrayStatus(
const char*
name);
112 void SetCellArrayStatus(
const char*
name,
int status);
119 void DisableAllCellArrays();
120 void EnableAllCellArrays();
146 void SetDataByteOrderToBigEndian();
147 void SetDataByteOrderToLittleEndian();
148 int GetDataByteOrder();
149 void SetDataByteOrder(
int);
150 const char* GetDataByteOrderAsString();
158 struct ScalarDataChunk;
159 struct VectorDataChunk;
186 virtual bool OpenCaseFile(
const char* filename);
187 virtual bool OpenDataFile(
const char* filename);
188 virtual int GetCaseChunk();
189 virtual int GetCaseIndex();
190 virtual void LoadVariableNames();
191 virtual int GetDataIndex();
192 virtual int GetDataChunk();
193 virtual void GetSpeciesVariableNames();
195 virtual int GetDimension();
196 virtual void GetLittleEndianFlag();
197 virtual void GetNodesAscii();
198 virtual void GetNodesSinglePrecision();
199 virtual void GetNodesDoublePrecision();
200 virtual void GetCellsAscii();
201 virtual void GetCellsBinary();
202 virtual bool GetFacesAscii();
203 virtual void GetFacesBinary();
204 virtual void GetPeriodicShadowFacesAscii();
205 virtual void GetPeriodicShadowFacesBinary();
206 virtual void GetCellTreeAscii();
207 virtual void GetCellTreeBinary();
208 virtual void GetFaceTreeAscii();
209 virtual void GetFaceTreeBinary();
210 virtual void GetInterfaceFaceParentsAscii();
211 virtual void GetInterfaceFaceParentsBinary();
212 virtual void GetNonconformalGridInterfaceFaceInformationAscii();
213 virtual void GetNonconformalGridInterfaceFaceInformationBinary();
215 virtual void CleanCells();
216 virtual void PopulateCellNodes();
217 virtual void PopulateTriangleCell(
size_t cellIdx);
218 virtual void PopulateTetraCell(
size_t cellIdx);
219 virtual void PopulateQuadCell(
size_t cellIdx);
220 virtual void PopulateHexahedronCell(
size_t cellIdx);
221 virtual void PopulatePyramidCell(
size_t cellIdx);
222 virtual void PopulateWedgeCell(
size_t cellIdx);
223 virtual void PopulatePolyhedronCell(
size_t cellIdx);
224 virtual void GetData(
int dataType);
228 int GetCaseBufferInt(
size_t ptr);
229 float GetCaseBufferFloat(
size_t ptr);
230 double GetCaseBufferDouble(
size_t ptr);
231 int GetDataBufferInt(
size_t ptr);
232 float GetDataBufferFloat(
size_t ptr);
233 double GetDataBufferDouble(
size_t ptr);
238 bool AreCellsEnabled();
242 void DisableZones(std::unordered_set<unsigned int>& disabledZones,
bool& areAllZonesDisabled);
246 bool FillMultiblock(std::unordered_set<unsigned int>& disabledZones,
247 const std::map<unsigned int, size_t>& zoneIDToBlockIdx,
252 void FillMultiblockData(std::unordered_set<unsigned int>& disabledZones,
253 const std::map<unsigned int, size_t>& zoneIDToBlockIdx,
258 void GetArraysFromSubSections();
263 std::map<unsigned int, size_t>& zoneIDToBlockIdx,
268 void ParseDataZone(
int index);
275 void ParseDataZones(
bool areCellsEnabled);
279 void ParseZone(
int index);
286 void ParseZones(
bool areCellsEnabled);
291 bool PreParseDataFile();
297 bool PreParseFluentFile();
302 bool ReadDataZoneSectionId(
unsigned int& zoneSectionId);
307 bool ReadZoneSectionId(
unsigned int& zoneSectionId);
312 bool ReadZoneSection(
int limit);
317 void UpdateZoneSectionSelection();
331 const std::map<unsigned int, size_t>& zoneIDToBlockIdx,
332 std::unordered_set<unsigned int>& disabledZones);
342 char* FileName =
nullptr;
344 bool CacheData =
true;
346 istream* FluentFile =
nullptr;
347 istream* FluentDataFile =
nullptr;
353 std::vector<Cell>
Cells;
354 std::vector<Face> Faces;
355 std::vector<ZoneSection> ZoneSections;
356 std::map<size_t, std::string> VariableNames;
357 std::vector<ScalarDataChunk> ScalarDataChunks;
358 std::vector<VectorDataChunk> VectorDataChunks;
359 std::vector<SubSection> SubSections;
361 std::vector<std::string> ScalarVariableNames;
362 std::vector<int> ScalarSubSectionIds;
363 std::vector<std::string> VectorVariableNames;
364 std::vector<int> VectorSubSectionIds;
367 int GridDimension = 0;
368 int NumberOfScalars = 0;
369 int NumberOfVectors = 0;
371 std::vector<Zone> Zones;
372 std::vector<Zone> DataZones;
373 std::vector<ZoneSection> CurrentZoneSections;
375 bool IsFilePreParsed =
false;
378 VTK_ABI_NAMESPACE_END
vtkTypeUInt32 vtkMTimeType
a 3D cell that represents a linear pyramid
a cell that represents a 2D quadrilateral
Hold a reference to a vtkObjectBase instance.
Superclass for algorithms that produce only vtkMultiBlockDataSet as output.
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
virtual void GetPartitionInfo()
vtkTypeBool GetSwapBytes()
Set/Get the byte swapping to explicitly swap the bytes of a file.
static vtkMultiBlockDataSetAlgorithm * New()
a 3D cell that represents a tetrahedron
a simple class to control print indentation
Store on/off settings for data arrays, etc.
dataset represents arbitrary combinations of all possible cell types
virtual vtkMTimeType GetMTime()
Return this object's modified time.
virtual bool ParallelCheckCell(int i)
reads a dataset in Fluent file format
a cell that represents a linear 3D hexahedron
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.
A cell specified by degrees of freedom held in arrays.
a cell that represents a triangle
Composite dataset that organizes datasets into blocks.
a 3D cell that represents a linear wedge
represent and manipulate 3D points
virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.