VTK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
vtkMultiBlockPLOT3DReader.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkMultiBlockPLOT3DReader.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 =========================================================================*/
91 #ifndef __vtkMultiBlockPLOT3DReader_h
92 #define __vtkMultiBlockPLOT3DReader_h
93 
94 #include "vtkIOGeometryModule.h" // For export macro
96 
97 class vtkDataArray;
99 class vtkIntArray;
100 class vtkStructuredGrid;
101 //BTX
103 //ETX
105 {
106 public:
107  static vtkMultiBlockPLOT3DReader *New();
109  void PrintSelf(ostream& os, vtkIndent indent);
110 
112 
113  void SetFileName(const char* name) { this->SetXYZFileName(name); }
114  const char* GetFileName() { return this->GetXYZFileName(); }
115  virtual void SetXYZFileName( const char* );
116  vtkGetStringMacro(XYZFileName);
118 
120 
121  vtkSetStringMacro(QFileName);
122  vtkGetStringMacro(QFileName);
124 
126 
127  vtkSetStringMacro(FunctionFileName);
128  vtkGetStringMacro(FunctionFileName);
130 
132 
140  vtkSetMacro(AutoDetectFormat, int);
141  vtkGetMacro(AutoDetectFormat, int);
142  vtkBooleanMacro(AutoDetectFormat, int);
144 
146 
148  vtkSetMacro(BinaryFile, int);
149  vtkGetMacro(BinaryFile, int);
150  vtkBooleanMacro(BinaryFile, int);
152 
154 
157  vtkSetMacro(MultiGrid, int);
158  vtkGetMacro(MultiGrid, int);
159  vtkBooleanMacro(MultiGrid, int);
161 
163 
166  vtkSetMacro(HasByteCount, int);
167  vtkGetMacro(HasByteCount, int);
168  vtkBooleanMacro(HasByteCount, int);
170 
172 
175  vtkSetMacro(IBlanking, int);
176  vtkGetMacro(IBlanking, int);
177  vtkBooleanMacro(IBlanking, int);
179 
181 
182  vtkSetMacro(TwoDimensionalGeometry, int);
183  vtkGetMacro(TwoDimensionalGeometry, int);
184  vtkBooleanMacro(TwoDimensionalGeometry, int);
186 
188 
190  vtkSetMacro(DoublePrecision, int);
191  vtkGetMacro(DoublePrecision, int);
192  vtkBooleanMacro(DoublePrecision, int);
194 
196 
200  vtkSetMacro(ForceRead, int);
201  vtkGetMacro(ForceRead, int);
202  vtkBooleanMacro(ForceRead, int);
204 
206 
209  void SetByteOrderToBigEndian();
210  void SetByteOrderToLittleEndian();
211  vtkSetMacro(ByteOrder, int);
212  vtkGetMacro(ByteOrder, int);
213  const char *GetByteOrderAsString();
215 
217 
218  vtkSetMacro(R,double);
219  vtkGetMacro(R,double);
221 
223 
224  vtkSetMacro(Gamma,double);
225  vtkGetMacro(Gamma,double);
227 
229 
231  void SetScalarFunctionNumber(int num);
232  vtkGetMacro(ScalarFunctionNumber,int);
234 
236 
238  void SetVectorFunctionNumber(int num);
239  vtkGetMacro(VectorFunctionNumber,int);
241 
243 
246  void AddFunction(int functionNumber);
247  void RemoveFunction(int);
248  void RemoveAllFunctions();
250 
253  virtual int CanReadBinaryFile(const char* fname);
254 
257  virtual void Modified();
258 
259 //BTX
260  enum
261  {
262  FILE_BIG_ENDIAN=0,
263  FILE_LITTLE_ENDIAN=1
264  };
265 //ETX
266 
267 protected:
270 
271  vtkDataArray* CreateFloatArray();
272 
273  int CheckFile(FILE*& fp, const char* fname);
274  int CheckGeometryFile(FILE*& xyzFp);
275  int CheckSolutionFile(FILE*& qFp);
276  int CheckFunctionFile(FILE*& fFp);
277 
278  int SkipByteCount (FILE* fp);
279  int ReadIntBlock (FILE* fp, int n, int* block);
280 
281  int ReadScalar(FILE* fp, int n, vtkDataArray* scalar);
282  int ReadVector(FILE* fp, int n, int numDims, vtkDataArray* vector);
283 
284  int GetNumberOfBlocksInternal(FILE* xyzFp, int allocate);
285 
286  int ReadGeometryHeader(FILE* fp);
287  int ReadQHeader(FILE* fp, bool checkGrid, int& nq, int& nqc, int& overflow);
288  int ReadFunctionHeader(FILE* fp, int* nFunctions);
289 
290  void CalculateFileSize(FILE* fp);
291  long EstimateSize(int ni, int nj, int nk);
292 
293  int AutoDetectionCheck(FILE* fp);
294 
295 
296  void AssignAttribute(int fNumber, vtkStructuredGrid* output,
297  int attributeType);
298  void MapFunction(int fNumber, vtkStructuredGrid* output);
299  void ComputeTemperature(vtkStructuredGrid* output);
300  void ComputePressure(vtkStructuredGrid* output);
301  void ComputeEnthalpy(vtkStructuredGrid* output);
302  void ComputeKineticEnergy(vtkStructuredGrid* output);
303  void ComputeVelocityMagnitude(vtkStructuredGrid* output);
304  void ComputeEntropy(vtkStructuredGrid* output);
305  void ComputeSwirl(vtkStructuredGrid* output);
306  void ComputeVelocity(vtkStructuredGrid* output);
307  void ComputeVorticity(vtkStructuredGrid* output);
308  void ComputePressureGradient(vtkStructuredGrid* output);
309  void ComputePressureCoefficient(vtkStructuredGrid* output);
310  void ComputeMachNumber(vtkStructuredGrid* output);
311  void ComputeSoundSpeed(vtkStructuredGrid* output);
312  void ComputeVorticityMagnitude(vtkStructuredGrid* output);
313  void ComputeStrainRate(vtkStructuredGrid* output);
314 
315  // Returns a vtkFloatArray or a vtkDoubleArray depending
316  // on DoublePrecision setting
317  vtkDataArray* NewFloatArray();
318 
319  // Delete references to any existing vtkPoints and
320  // I-blank arrays. The next Update() will (re)read
321  // the XYZ file.
322  void ClearGeometryCache();
323 
324  //plot3d FileNames
325  char *XYZFileName;
326  char *QFileName;
328 
338 
339  long FileSize;
340 
341  //parameters used in computing derived functions
342  double R;
343  double Gamma;
344  double Uvinf;
345  double Vvinf;
346  double Wvinf;
347 
348  //functions to read that are not scalars or vectors
350 
353 
355 
356  virtual int RequestData(vtkInformation*,
359  virtual int RequestInformation(vtkInformation*,
362 
364 
365 private:
366  vtkMultiBlockPLOT3DReader(const vtkMultiBlockPLOT3DReader&); // Not implemented.
367  void operator=(const vtkMultiBlockPLOT3DReader&); // Not implemented.
368 };
369 
370 #endif
371 
372 
void SetFileName(const char *name)
Store vtkAlgorithm input/output information.
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:83
Superclass for algorithms that produce only vtkMultiBlockDataSet as output.
#define vtkSetStringMacro(name)
Definition: vtkSetGet.h:94
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:619
GLuint GLuint num
Definition: vtkgl.h:16907
#define VTKIOGEOMETRY_EXPORT
static vtkMultiBlockDataSetAlgorithm * New()
virtual int FillOutputPortInformation(int port, vtkInformation *info)
dynamic, self-adjusting array of int
Definition: vtkIntArray.h:45
GLuint const GLchar * name
Definition: vtkgl.h:11983
a simple class to control print indentation
Definition: vtkIndent.h:38
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:53
vtkMultiBlockPLOT3DReaderInternals * Internal
virtual void Modified()
#define vtkGetStringMacro(name)
Definition: vtkSetGet.h:120
dynamic, self-adjusting array of unsigned char
topologically regular array of data
void PrintSelf(ostream &os, vtkIndent indent)
GLclampd n
Definition: vtkgl.h:14370
Store zero or more vtkInformation instances.
#define vtkBooleanMacro(name, type)
Definition: vtkSetGet.h:234
virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
#define vtkSetMacro(name, type)
Definition: vtkSetGet.h:69