VTK
vtkMFIXReader.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkMFIXReader.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 =========================================================================*/
37 #ifndef vtkMFIXReader_h
38 #define vtkMFIXReader_h
39 
40 #include "vtkIOGeometryModule.h" // For export macro
42 
44 class vtkDoubleArray;
45 class vtkStringArray;
46 class vtkIntArray;
47 class vtkFloatArray;
49 class vtkWedge;
50 class vtkQuad;
51 class vtkHexahedron;
52 class vtkPoints;
53 class vtkStdString;
54 
56 {
57 public:
58  static vtkMFIXReader *New();
60  void PrintSelf(ostream& os, vtkIndent indent);
61 
63 
64  vtkSetStringMacro(FileName);
65  vtkGetStringMacro(FileName);
67 
69 
71  vtkGetMacro(NumberOfCells,int);
73 
75 
77  vtkGetMacro(NumberOfPoints,int);
79 
81 
82  vtkGetMacro(NumberOfCellFields,int);
84 
86 
87  vtkSetMacro(TimeStep, int);
88  vtkGetMacro(TimeStep, int);
90 
92 
93  vtkGetMacro(NumberOfTimeSteps, int);
95 
97 
98  vtkGetVector2Macro(TimeStepRange, int);
99  vtkSetVector2Macro(TimeStepRange, int);
101 
104 
106  const char* GetCellArrayName(int index);
107 
109 
110  int GetCellArrayStatus(const char* name);
111  void SetCellArrayStatus(const char* name, int status);
113 
115 
119 
121  void GetCellDataRange(int cellComp, float *min, float *max);
122 
123 protected:
130 
131  //
132  // ParaView Variables
133  //
134 
135  char *FileName;
145  int TimeStep;
149  int *TimeSteps;
150  int TimeStepRange[2];
152 
153  //
154  // MFIX Variables
155  //
156 
157  vtkFloatArray **CellDataArray; // Arrays for variables that will
158  //attach to mesh
159  vtkPoints *Points; // Points array for building grid
160  vtkUnstructuredGrid *Mesh; // Unstructured Grid
161  vtkHexahedron *AHexahedron; // Hexahedron type cell
162  vtkWedge *AWedge; // Wedge type cell
163  vtkQuad *AQuad; // Quad type cell
164  vtkIntArray *Flag; // Cell Flag array
165  vtkDoubleArray *Dx; // Cell widths in x axis
166  vtkDoubleArray *Dy; // Cell widths in y axis
167  vtkDoubleArray *Dz; // Cell widths in z axis
168  vtkIntArray *NMax; // Array to hold number of species per phase
169  vtkDoubleArray *C; // Array used to parse restart file
170  vtkIntArray *TempI; // Array used to parse restart file
171  vtkDoubleArray *TempD; // Array used to parse restart file
172  vtkIntArray *SpxFileExists; // Array for keeping track of
173  // what spx files exist.
174 
175  char FileExtension[15];
176  char DataBuffer[513];
177  char Version[120];
183  double Ce;
184  double Cf;
185  double Phi;
186  double PhiW;
187  double DeltaTime;
188  double XMinimum;
189  char RunName[256];
195  int IMaximum;
196  int JMaximum;
197  int KMaximum;
206  int MMAX;
208  double XLength;
209  double YLength;
210  double ZLength;
213  bool BkEpsilon;
214  char CoordinateSystem[17];
215  char Units[17];
216 
217  //
218  // SPX Variables
219  //
220 
221  int MaximumTimestep; // maximum timesteps amongst the variables
222  int SPXRecordsPerTimestep; // number of records in a single
223  // timestep for a variable
224  vtkIntArray *SPXToNVarTable; // number of variables in each spx file
225  vtkIntArray *VariableToSkipTable; // skip value for each variable, this
226  // is needed in spx files
227  // with more than one variable.
228  vtkIntArray *VariableTimesteps; // number of timesteps for each variable
229  vtkIntArray *VariableTimestepTable; // Since the number of timesteps
230  // vary between variables
231  // this is a table that looks
232  // up the appropriate timestep
233  // for the particular variable.
234  vtkIntArray *variableIndexToSPX; // This gives the spx file number for the
235  // particular variable.
236  vtkIntArray *VariableIndexToSPX; // This gives the spx file number for the
237  // particular variable.
238  vtkIntArray *SPXTimestepIndexTable; // This a table look up for the index
239  // into a file for a certain variable.
240 
241 private:
242  vtkMFIXReader(const vtkMFIXReader&); // Not implemented.
243  void operator=(const vtkMFIXReader&); // Not implemented.
244 
245  void MakeMesh(vtkUnstructuredGrid *output);
246  void SwapDouble(double &value);
247  void SwapFloat(float &value);
248  void SwapInt(int &value);
249  vtkStdString ConvertIntToString(int in);
250  int ConvertCharToInt(char in);
251  int ConvertStringToInt(const vtkStdString & in);
252  void GetInt(istream& in, int &val);
253  void GetDouble(istream& in, double& val);
254  void GetFloat(istream& in, float& val);
255  void SkipBytes(istream& in, int n);
256  void RestartVersionNumber(const char* buffer);
257  void GetBlockOfDoubles(istream& in, vtkDoubleArray *v, int n);
258  void GetBlockOfFloats(istream& in, vtkFloatArray *v, int n);
259  void GetBlockOfInts(istream& in, vtkIntArray *v, int n);
260  void ReadRestartFile();
261  void GetVariableAtTimestep(int vari , int tstep, vtkFloatArray *v);
262  void CreateVariableNames();
263  void GetTimeSteps();
264  void MakeTimeStepTable(int nvars);
265  void SetProjectName (const char *infile);
266  void MakeSPXTimeStepIndexTable(int nvars);
267  void CalculateMaxTimeStep();
268  void GetNumberOfVariablesInSPXFiles();
269  void FillVectorVariable( int xindex, int yindex, int zindex,
270  vtkFloatArray *v);
271  void ConvertVectorFromCylindricalToCartesian( int xindex, int zindex);
272  void GetAllTimes(vtkInformationVector *outputVector);
273 
274 };
275 
276 #endif
vtkPoints
represent and manipulate 3D points
Definition: vtkPoints.h:39
vtkMFIXReader::NumberOfCellFields
int NumberOfCellFields
Definition: vtkMFIXReader.h:140
vtkMFIXReader::SPXRecordsPerTimestep
int SPXRecordsPerTimestep
Definition: vtkMFIXReader.h:222
vtkIOGeometryModule.h
vtkMFIXReader::New
static vtkMFIXReader * New()
vtkMFIXReader::Maximum
vtkFloatArray * Maximum
Definition: vtkMFIXReader.h:143
vtkMFIXReader::CurrentTimeStep
int CurrentTimeStep
Definition: vtkMFIXReader.h:147
vtkMFIXReader::NumberOfPoints
int NumberOfPoints
Definition: vtkMFIXReader.h:138
vtkMFIXReader::Cf
double Cf
Definition: vtkMFIXReader.h:184
vtkSetVector2Macro
#define vtkSetVector2Macro(name, type)
Definition: vtkSetGet.h:254
vtkMFIXReader::NMax
vtkIntArray * NMax
Definition: vtkMFIXReader.h:168
vtkMFIXReader::MMAX
int MMAX
Definition: vtkMFIXReader.h:206
vtkMFIXReader::RequestInformationFlag
int RequestInformationFlag
Definition: vtkMFIXReader.h:136
vtkHexahedron
a cell that represents a linear 3D hexahedron
Definition: vtkHexahedron.h:47
vtkMFIXReader::MaximumTimestep
int MaximumTimestep
Definition: vtkMFIXReader.h:221
vtkMFIXReader::GetCellArrayStatus
int GetCellArrayStatus(const char *name)
vtkGetVector2Macro
#define vtkGetVector2Macro(name, type)
Definition: vtkSetGet.h:270
vtkMFIXReader::MakeMeshFlag
int MakeMeshFlag
Definition: vtkMFIXReader.h:137
vtkMFIXReader::ZLength
double ZLength
Definition: vtkMFIXReader.h:210
vtkMFIXReader::JMaximum2
int JMaximum2
Definition: vtkMFIXReader.h:202
vtkMFIXReader::variableIndexToSPX
vtkIntArray * variableIndexToSPX
Definition: vtkMFIXReader.h:234
vtkFloatArray
dynamic, self-adjusting array of float
Definition: vtkFloatArray.h:49
vtkMFIXReader::CellDataArray
vtkFloatArray ** CellDataArray
Definition: vtkMFIXReader.h:157
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:41
vtkMFIXReader::BkEpsilon
bool BkEpsilon
Definition: vtkMFIXReader.h:213
vtkMFIXReader::XMinimum
double XMinimum
Definition: vtkMFIXReader.h:188
vtkMFIXReader::VariableNames
vtkStringArray * VariableNames
Definition: vtkMFIXReader.h:190
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkgl::n
GLclampd n
Definition: vtkgl.h:14370
vtkMFIXReader::IMaximum
int IMaximum
Definition: vtkMFIXReader.h:195
vtkMFIXReader::YLength
double YLength
Definition: vtkMFIXReader.h:209
vtkMFIXReader::DimensionBc
int DimensionBc
Definition: vtkMFIXReader.h:180
vtkMFIXReader::GetNumberOfCellArrays
int GetNumberOfCellArrays(void)
vtkMFIXReader::DisableAllCellArrays
void DisableAllCellArrays()
vtkMFIXReader::Dz
vtkDoubleArray * Dz
Definition: vtkMFIXReader.h:167
vtkgl::v
const GLdouble * v
Definition: vtkgl.h:11595
vtkXMLUnstructuredGridWriter
Write VTK XML UnstructuredGrid files.
Definition: vtkXMLUnstructuredGridWriter.h:42
vtkMFIXReader::C
vtkDoubleArray * C
Definition: vtkMFIXReader.h:169
vtkMFIXReader::DimensionC
int DimensionC
Definition: vtkMFIXReader.h:181
vtkMFIXReader::DimensionIc
int DimensionIc
Definition: vtkMFIXReader.h:179
vtkMFIXReader::RequestData
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
VTKIOGEOMETRY_EXPORT
#define VTKIOGEOMETRY_EXPORT
Definition: vtkIOGeometryModule.h:15
vtkgl::in
GLuint in
Definition: vtkgl.h:16905
vtkMFIXReader::SetCellArrayStatus
void SetCellArrayStatus(const char *name, int status)
vtkMFIXReader::NumberOfSPXFilesUsed
int NumberOfSPXFilesUsed
Definition: vtkMFIXReader.h:207
max
#define max(a, b)
Definition: vtkX3DExporterFIWriterHelper.h:30
vtkMFIXReader::VariableToSkipTable
vtkIntArray * VariableToSkipTable
Definition: vtkMFIXReader.h:225
vtkMFIXReader::SPXToNVarTable
vtkIntArray * SPXToNVarTable
Definition: vtkMFIXReader.h:224
vtkMFIXReader::GetCellDataRange
void GetCellDataRange(int cellComp, float *min, float *max)
vtkMFIXReader::VectorLength
vtkIntArray * VectorLength
Definition: vtkMFIXReader.h:141
vtkDataArraySelection
Store on/off settings for data arrays for a vtkSource.
Definition: vtkDataArraySelection.h:34
vtkgl::val
GLuint GLfloat * val
Definition: vtkgl.h:13789
vtkMFIXReader::Ce
double Ce
Definition: vtkMFIXReader.h:183
vtkMFIXReader::VariableComponents
vtkIntArray * VariableComponents
Definition: vtkMFIXReader.h:191
vtkMFIXReader::TempD
vtkDoubleArray * TempD
Definition: vtkMFIXReader.h:171
vtkgl::name
GLuint const GLchar * name
Definition: vtkgl.h:11983
vtkMFIXReader::IMaximum2
int IMaximum2
Definition: vtkMFIXReader.h:201
vtkgl::value
GLsizei const GLfloat * value
Definition: vtkgl.h:12021
vtkMFIXReader::IJKMaximum2
int IJKMaximum2
Definition: vtkMFIXReader.h:205
vtkMFIXReader::vtkMFIXReader
vtkMFIXReader()
vtkMFIXReader::IMaximum1
int IMaximum1
Definition: vtkMFIXReader.h:198
vtkMFIXReader::Points
vtkPoints * Points
Definition: vtkMFIXReader.h:159
vtkMFIXReader::NumberOfScalars
int NumberOfScalars
Definition: vtkMFIXReader.h:211
vtkMFIXReader::Dy
vtkDoubleArray * Dy
Definition: vtkMFIXReader.h:166
vtkWedge
a 3D cell that represents a linear wedge
Definition: vtkWedge.h:49
vtkMFIXReader::KMinimum1
int KMinimum1
Definition: vtkMFIXReader.h:194
vtkMFIXReader::VariableTimesteps
vtkIntArray * VariableTimesteps
Definition: vtkMFIXReader.h:228
vtkMFIXReader::Dx
vtkDoubleArray * Dx
Definition: vtkMFIXReader.h:165
vtkMFIXReader::PhiW
double PhiW
Definition: vtkMFIXReader.h:186
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkMFIXReader::IJMaximum2
int IJMaximum2
Definition: vtkMFIXReader.h:204
vtkSetStringMacro
#define vtkSetStringMacro(name)
Definition: vtkSetGet.h:104
vtkIntArray
dynamic, self-adjusting array of int
Definition: vtkIntArray.h:53
vtkMFIXReader::JMaximum
int JMaximum
Definition: vtkMFIXReader.h:196
vtkMFIXReader::KMaximum
int KMaximum
Definition: vtkMFIXReader.h:197
vtkMFIXReader::AQuad
vtkQuad * AQuad
Definition: vtkMFIXReader.h:163
vtkMFIXReader::EnableAllCellArrays
void EnableAllCellArrays()
vtkMFIXReader::DimensionIs
int DimensionIs
Definition: vtkMFIXReader.h:182
vtkMFIXReader::Minimum
vtkFloatArray * Minimum
Definition: vtkMFIXReader.h:142
vtkGetMacro
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:93
vtkGetStringMacro
vtkGetStringMacro(ExtensionsString)
vtkMFIXReader::VersionNumber
float VersionNumber
Definition: vtkMFIXReader.h:178
vtkMFIXReader::GetCellArrayName
const char * GetCellArrayName(int index)
vtkMFIXReader::NumberOfTimeSteps
int NumberOfTimeSteps
Definition: vtkMFIXReader.h:148
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:86
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
vtkgl::index
GLuint index
Definition: vtkgl.h:11983
vtkgl::buffer
GLuint buffer
Definition: vtkgl.h:11839
vtkMFIXReader::Flag
vtkIntArray * Flag
Definition: vtkMFIXReader.h:164
vtkMFIXReader::JMinimum1
int JMinimum1
Definition: vtkMFIXReader.h:193
vtkMFIXReader::IMinimum1
int IMinimum1
Definition: vtkMFIXReader.h:192
vtkMFIXReader::Mesh
vtkUnstructuredGrid * Mesh
Definition: vtkMFIXReader.h:160
vtkMFIXReader::KMaximum2
int KMaximum2
Definition: vtkMFIXReader.h:203
vtkUnstructuredGridAlgorithm.h
vtkMFIXReader::Phi
double Phi
Definition: vtkMFIXReader.h:185
vtkStringArray
a vtkAbstractArray subclass for strings
Definition: vtkStringArray.h:45
vtkMFIXReader
reads a dataset in MFIX file format
Definition: vtkMFIXReader.h:56
vtkMFIXReader::SPXTimestepIndexTable
vtkIntArray * SPXTimestepIndexTable
Definition: vtkMFIXReader.h:238
vtkMFIXReader::AWedge
vtkWedge * AWedge
Definition: vtkMFIXReader.h:162
vtkUnstructuredGridAlgorithm
Superclass for algorithms that produce only unstructured grid as output.
Definition: vtkUnstructuredGridAlgorithm.h:40
vtkDoubleArray
dynamic, self-adjusting array of double
Definition: vtkDoubleArray.h:49
vtkMFIXReader::SpxFileExists
vtkIntArray * SpxFileExists
Definition: vtkMFIXReader.h:172
vtkMFIXReader::JMaximum1
int JMaximum1
Definition: vtkMFIXReader.h:199
vtkMFIXReader::XLength
double XLength
Definition: vtkMFIXReader.h:208
vtkMFIXReader::VariableIndexToSPX
vtkIntArray * VariableIndexToSPX
Definition: vtkMFIXReader.h:236
vtkUnstructuredGrid
dataset represents arbitrary combinations of all possible cell types
Definition: vtkUnstructuredGrid.h:82
vtkMFIXReader::DeltaTime
double DeltaTime
Definition: vtkMFIXReader.h:187
vtkMFIXReader::TimeStep
int TimeStep
Definition: vtkMFIXReader.h:145
vtkStdString
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:48
vtkMFIXReader::FileName
char * FileName
Definition: vtkMFIXReader.h:135
vtkMFIXReader::VariableTimestepTable
vtkIntArray * VariableTimestepTable
Definition: vtkMFIXReader.h:229
vtkMFIXReader::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
vtkMFIXReader::ActualTimeStep
int ActualTimeStep
Definition: vtkMFIXReader.h:146
vtkMFIXReader::NumberOfReactionRates
int NumberOfReactionRates
Definition: vtkMFIXReader.h:212
vtkMFIXReader::CellDataArraySelection
vtkDataArraySelection * CellDataArraySelection
Definition: vtkMFIXReader.h:144
vtkMFIXReader::~vtkMFIXReader
~vtkMFIXReader()
vtkMFIXReader::KMaximum1
int KMaximum1
Definition: vtkMFIXReader.h:200
vtkMFIXReader::TimeStepWasReadOnce
int TimeStepWasReadOnce
Definition: vtkMFIXReader.h:151
vtkMFIXReader::RequestInformation
int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
vtkMFIXReader::NumberOfCells
int NumberOfCells
Definition: vtkMFIXReader.h:139
vtkQuad
a cell that represents a 2D quadrilateral
Definition: vtkQuad.h:41
vtkMFIXReader::AHexahedron
vtkHexahedron * AHexahedron
Definition: vtkMFIXReader.h:161
vtkMFIXReader::TempI
vtkIntArray * TempI
Definition: vtkMFIXReader.h:170
vtkMFIXReader::TimeSteps
int * TimeSteps
Definition: vtkMFIXReader.h:149