VTK
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 =========================================================================*/
92 #ifndef vtkMultiBlockPLOT3DReader_h
93 #define vtkMultiBlockPLOT3DReader_h
94 
95 #include "vtkIOParallelModule.h" // For export macro
97 
98 class vtkDataArray;
100 class vtkIntArray;
101 class vtkStructuredGrid;
105 
106 class VTKIOPARALLEL_EXPORT vtkMultiBlockPLOT3DReader : public vtkMultiBlockDataSetAlgorithm
107 {
108 public:
111  void PrintSelf(ostream& os, vtkIndent indent);
112 
114 
117  void SetFileName(const char* name) { this->SetXYZFileName(name); }
118  const char* GetFileName() { return this->GetXYZFileName(); }
119  virtual void SetXYZFileName( const char* );
120  vtkGetStringMacro(XYZFileName);
122 
124 
127  vtkSetStringMacro(QFileName);
128  vtkGetStringMacro(QFileName);
130 
132 
135  vtkSetStringMacro(FunctionFileName);
136  vtkGetStringMacro(FunctionFileName);
138 
140 
150  vtkSetMacro(AutoDetectFormat, int);
151  vtkGetMacro(AutoDetectFormat, int);
152  vtkBooleanMacro(AutoDetectFormat, int);
154 
156 
160  vtkSetMacro(BinaryFile, int);
161  vtkGetMacro(BinaryFile, int);
162  vtkBooleanMacro(BinaryFile, int);
164 
166 
172  vtkSetMacro(MultiGrid, int);
173  vtkGetMacro(MultiGrid, int);
174  vtkBooleanMacro(MultiGrid, int);
176 
178 
183  vtkSetMacro(HasByteCount, int);
184  vtkGetMacro(HasByteCount, int);
185  vtkBooleanMacro(HasByteCount, int);
187 
189 
194  vtkSetMacro(IBlanking, int);
195  vtkGetMacro(IBlanking, int);
196  vtkBooleanMacro(IBlanking, int);
198 
200 
204  vtkSetMacro(TwoDimensionalGeometry, int);
205  vtkGetMacro(TwoDimensionalGeometry, int);
206  vtkBooleanMacro(TwoDimensionalGeometry, int);
208 
210 
215  vtkSetMacro(DoublePrecision, int);
216  vtkGetMacro(DoublePrecision, int);
217  vtkBooleanMacro(DoublePrecision, int);
219 
221 
227  vtkSetMacro(ForceRead, int);
228  vtkGetMacro(ForceRead, int);
229  vtkBooleanMacro(ForceRead, int);
231 
233 
241  vtkSetMacro(ByteOrder, int);
242  vtkGetMacro(ByteOrder, int);
243  const char *GetByteOrderAsString();
245 
247 
250  vtkSetMacro(R,double);
251  vtkGetMacro(R,double);
253 
255 
258  vtkSetMacro(Gamma,double);
259  vtkGetMacro(Gamma,double);
261 
263 
267  void SetScalarFunctionNumber(int num);
268  vtkGetMacro(ScalarFunctionNumber,int);
270 
272 
276  void SetVectorFunctionNumber(int num);
277  vtkGetMacro(VectorFunctionNumber,int);
279 
281 
286  void AddFunction(int functionNumber);
287  void RemoveFunction(int);
290 
295  virtual int CanReadBinaryFile(const char* fname);
296 
298 
303  vtkGetObjectMacro(Controller, vtkMultiProcessController);
305 
306  enum
307  {
308  FILE_BIG_ENDIAN=0,
309  FILE_LITTLE_ENDIAN=1
310  };
311 
312 protected:
315 
317 
318  int CheckFile(FILE*& fp, const char* fname);
319  int CheckGeometryFile(FILE*& xyzFp);
320  int CheckSolutionFile(FILE*& qFp);
321  int CheckFunctionFile(FILE*& fFp);
322 
324  int SkipByteCount (FILE* fp);
325  int ReadIntBlock (FILE* fp, int n, int* block);
326 
328  FILE* fp,
329  int n,
330  vtkDataArray* scalar);
331  virtual int ReadIntScalar(
332  void* vfp,
333  int extent[6], int wextent[6],
334  vtkDataArray* scalar, vtkTypeUInt64 offset,
335  const vtkMultiBlockPLOT3DReaderRecord& currentRecord);
336  virtual int ReadScalar(
337  void* vfp,
338  int extent[6], int wextent[6],
339  vtkDataArray* scalar, vtkTypeUInt64 offset,
340  const vtkMultiBlockPLOT3DReaderRecord& currentRecord);
341  virtual int ReadVector(
342  void* vfp,
343  int extent[6], int wextent[6],
344  int numDims, vtkDataArray* vector, vtkTypeUInt64 offset,
345  const vtkMultiBlockPLOT3DReaderRecord& currentRecord);
346  virtual int OpenFileForDataRead(void*& fp, const char* fname);
347  virtual void CloseFile(void* fp);
348 
349  int GetNumberOfBlocksInternal(FILE* xyzFp, int allocate);
350 
351  int ReadGeometryHeader(FILE* fp);
352  int ReadQHeader(FILE* fp, bool checkGrid, int& nq, int& nqc, int& overflow);
353  int ReadFunctionHeader(FILE* fp, int* nFunctions);
354 
355  void CalculateFileSize(FILE* fp);
356 
357  int AutoDetectionCheck(FILE* fp);
358 
359  void AssignAttribute(int fNumber, vtkStructuredGrid* output,
360  int attributeType);
361  void MapFunction(int fNumber, vtkStructuredGrid* output);
377 
378  // Returns a vtkFloatArray or a vtkDoubleArray depending
379  // on DoublePrecision setting
381 
382  // Delete references to any existing vtkPoints and
383  // I-blank arrays. The next Update() will (re)read
384  // the XYZ file.
386 
387  //plot3d FileNames
388  char *XYZFileName;
389  char *QFileName;
391 
401 
403 
404  size_t FileSize;
405 
406  //parameters used in computing derived functions
407  double R;
408  double Gamma;
409  double Uvinf;
410  double Vvinf;
411  double Wvinf;
412 
413  //functions to read that are not scalars or vectors
415 
418 
420 
427 
429 
431 
432 private:
433  vtkMultiBlockPLOT3DReader(const vtkMultiBlockPLOT3DReader&) VTK_DELETE_FUNCTION;
434  void operator=(const vtkMultiBlockPLOT3DReader&) VTK_DELETE_FUNCTION;
435 };
436 
437 #endif
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:55
a simple class to control print indentation
Definition: vtkIndent.h:40
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
dynamic, self-adjusting array of int
Definition: vtkIntArray.h:46
Superclass for algorithms that produce only vtkMultiBlockDataSet as output.
void SetFileName(const char *name)
Set/Get the PLOT3D geometry filename.
virtual int OpenFileForDataRead(void *&fp, const char *fname)
vtkDataArray * NewFloatArray()
int ReadFunctionHeader(FILE *fp, int *nFunctions)
void ComputePressure(vtkStructuredGrid *output)
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
void ComputeTemperature(vtkStructuredGrid *output)
const char * GetByteOrderAsString()
void ComputeSwirl(vtkStructuredGrid *output)
void ComputeEnthalpy(vtkStructuredGrid *output)
void ComputePressureCoefficient(vtkStructuredGrid *output)
vtkIdType ReadValues(FILE *fp, int n, vtkDataArray *scalar)
virtual int CanReadBinaryFile(const char *fname)
Return 1 if the reader can read the given file name.
int CheckSolutionFile(FILE *&qFp)
void ComputeEntropy(vtkStructuredGrid *output)
void ComputeVelocity(vtkStructuredGrid *output)
void SetVectorFunctionNumber(int num)
Specify the vector function to extract.
virtual int FillOutputPortInformation(int port, vtkInformation *info)
Fill the output port information objects for this algorithm.
void ComputeSoundSpeed(vtkStructuredGrid *output)
void CalculateFileSize(FILE *fp)
virtual int ReadVector(void *vfp, int extent[6], int wextent[6], int numDims, vtkDataArray *vector, vtkTypeUInt64 offset, const vtkMultiBlockPLOT3DReaderRecord &currentRecord)
int ReadQHeader(FILE *fp, bool checkGrid, int &nq, int &nqc, int &overflow)
virtual void CloseFile(void *fp)
void ComputeStrainRate(vtkStructuredGrid *output)
void ComputePressureGradient(vtkStructuredGrid *output)
virtual int ReadIntScalar(void *vfp, int extent[6], int wextent[6], vtkDataArray *scalar, vtkTypeUInt64 offset, const vtkMultiBlockPLOT3DReaderRecord &currentRecord)
int CheckFunctionFile(FILE *&fFp)
int CheckGeometryFile(FILE *&xyzFp)
virtual void SetXYZFileName(const char *)
int AutoDetectionCheck(FILE *fp)
vtkMultiProcessController * Controller
virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
int ReadIntBlock(FILE *fp, int n, int *block)
vtkDataArray * CreateFloatArray()
void ComputeKineticEnergy(vtkStructuredGrid *output)
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
virtual int ReadScalar(void *vfp, int extent[6], int wextent[6], vtkDataArray *scalar, vtkTypeUInt64 offset, const vtkMultiBlockPLOT3DReaderRecord &currentRecord)
void SetByteOrderToBigEndian()
Set the byte order of the file (remember, more Unix workstations write big endian whereas PCs write l...
void AddFunction(int functionNumber)
Specify additional functions to read.
void ComputeVorticity(vtkStructuredGrid *output)
int CheckFile(FILE *&fp, const char *fname)
void ComputeMachNumber(vtkStructuredGrid *output)
void SetScalarFunctionNumber(int num)
Specify the scalar function to extract.
int ReadGeometryHeader(FILE *fp)
void MapFunction(int fNumber, vtkStructuredGrid *output)
int SkipByteCount(FILE *fp)
void AssignAttribute(int fNumber, vtkStructuredGrid *output, int attributeType)
vtkMultiBlockPLOT3DReaderInternals * Internal
static vtkMultiBlockPLOT3DReader * New()
int GetNumberOfBlocksInternal(FILE *xyzFp, int allocate)
void ComputeVelocityMagnitude(vtkStructuredGrid *output)
void ComputeVorticityMagnitude(vtkStructuredGrid *output)
void SetController(vtkMultiProcessController *c)
Set/Get the communicator object (we'll use global World controller if you don't set a different one).
Multiprocessing communication superclass.
topologically regular array of data
dynamic, self-adjusting array of unsigned char
@ vector
Definition: vtkX3D.h:237
@ info
Definition: vtkX3D.h:376
@ port
Definition: vtkX3D.h:447
@ extent
Definition: vtkX3D.h:345
@ name
Definition: vtkX3D.h:219
@ offset
Definition: vtkX3D.h:438
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkBooleanMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkGetStringMacro(ExtensionsString)
Returns a string listing all available extensions.
int vtkIdType
Definition: vtkType.h:287