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
vtkMultiBlockPLOT3DReader::NewFloatArray
vtkDataArray * NewFloatArray()
vtkMultiBlockPLOT3DReader::Vvinf
double Vvinf
Definition: vtkMultiBlockPLOT3DReader.h:410
vtkMultiBlockPLOT3DReader::MultiGrid
int MultiGrid
Definition: vtkMultiBlockPLOT3DReader.h:395
vtkMultiBlockPLOT3DReader::ComputeSwirl
void ComputeSwirl(vtkStructuredGrid *output)
vtkX3D::vector
@ vector
Definition: vtkX3D.h:237
vtkMultiBlockPLOT3DReader::ComputeVelocity
void ComputeVelocity(vtkStructuredGrid *output)
vtkMultiBlockPLOT3DReader::ComputeEntropy
void ComputeEntropy(vtkStructuredGrid *output)
vtkMultiBlockPLOT3DReader::XYZFileName
char * XYZFileName
Definition: vtkMultiBlockPLOT3DReader.h:388
vtkMultiBlockPLOT3DReader::OpenFileForDataRead
virtual int OpenFileForDataRead(void *&fp, const char *fname)
vtkMultiBlockPLOT3DReader::ComputeKineticEnergy
void ComputeKineticEnergy(vtkStructuredGrid *output)
vtkMultiBlockPLOT3DReader::Wvinf
double Wvinf
Definition: vtkMultiBlockPLOT3DReader.h:411
vtkMultiBlockPLOT3DReader::ComputePressure
void ComputePressure(vtkStructuredGrid *output)
vtkMultiBlockPLOT3DReader::ComputeSoundSpeed
void ComputeSoundSpeed(vtkStructuredGrid *output)
vtkIdType
int vtkIdType
Definition: vtkType.h:287
vtkMultiBlockPLOT3DReader::AssignAttribute
void AssignAttribute(int fNumber, vtkStructuredGrid *output, int attributeType)
vtkMultiBlockPLOT3DReader::VectorFunctionNumber
int VectorFunctionNumber
Definition: vtkMultiBlockPLOT3DReader.h:417
vtkMultiBlockPLOT3DReader::ComputeStrainRate
void ComputeStrainRate(vtkStructuredGrid *output)
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:42
vtkMultiBlockPLOT3DReader::SetXYZFileName
virtual void SetXYZFileName(const char *)
vtkMultiBlockPLOT3DReader::AutoDetectionCheck
int AutoDetectionCheck(FILE *fp)
vtkUnsignedCharArray
dynamic, self-adjusting array of unsigned char
Definition: vtkUnsignedCharArray.h:42
vtkMultiBlockPLOT3DReader::CreateFloatArray
vtkDataArray * CreateFloatArray()
vtkStructuredGrid
topologically regular array of data
Definition: vtkStructuredGrid.h:64
vtkMultiBlockPLOT3DReader::ComputeVorticity
void ComputeVorticity(vtkStructuredGrid *output)
vtkMultiBlockPLOT3DReader::SetFileName
void SetFileName(const char *name)
Set/Get the PLOT3D geometry filename.
Definition: vtkMultiBlockPLOT3DReader.h:117
vtkMultiBlockPLOT3DReader::ComputeVelocityMagnitude
void ComputeVelocityMagnitude(vtkStructuredGrid *output)
vtkMultiBlockPLOT3DReader::SetByteOrderToLittleEndian
void SetByteOrderToLittleEndian()
vtkMultiBlockPLOT3DReader::New
static vtkMultiBlockPLOT3DReader * New()
vtkMultiBlockPLOT3DReader::DoublePrecision
int DoublePrecision
Definition: vtkMultiBlockPLOT3DReader.h:399
vtkMultiBlockPLOT3DReader
read PLOT3D data files
Definition: vtkMultiBlockPLOT3DReader.h:107
vtkMultiBlockPLOT3DReader::MapFunction
void MapFunction(int fNumber, vtkStructuredGrid *output)
vtkDataArray
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:55
vtkMultiBlockPLOT3DReader::R
double R
Definition: vtkMultiBlockPLOT3DReader.h:407
vtkMultiBlockPLOT3DReader::ExecutedGhostLevels
int ExecutedGhostLevels
Definition: vtkMultiBlockPLOT3DReader.h:402
vtkMultiBlockPLOT3DReader::Uvinf
double Uvinf
Definition: vtkMultiBlockPLOT3DReader.h:409
vtkMultiBlockPLOT3DReader::ReadIntScalar
virtual int ReadIntScalar(void *vfp, int extent[6], int wextent[6], vtkDataArray *scalar, vtkTypeUInt64 offset, const vtkMultiBlockPLOT3DReaderRecord &currentRecord)
vtkMultiBlockPLOT3DReader::ReadScalar
virtual int ReadScalar(void *vfp, int extent[6], int wextent[6], vtkDataArray *scalar, vtkTypeUInt64 offset, const vtkMultiBlockPLOT3DReaderRecord &currentRecord)
vtkMultiBlockPLOT3DReader::ReadQHeader
int ReadQHeader(FILE *fp, bool checkGrid, int &nq, int &nqc, int &overflow)
vtkMultiBlockPLOT3DReader::GetFileName
const char * GetFileName()
Definition: vtkMultiBlockPLOT3DReader.h:118
vtkMultiBlockPLOT3DReader::ReadValues
vtkIdType ReadValues(FILE *fp, int n, vtkDataArray *scalar)
vtkMultiBlockPLOT3DReader::CheckFunctionFile
int CheckFunctionFile(FILE *&fFp)
vtkX3D::port
@ port
Definition: vtkX3D.h:447
vtkMultiBlockPLOT3DReader::ClearGeometryCache
void ClearGeometryCache()
vtkMultiBlockPLOT3DReader::Controller
vtkMultiProcessController * Controller
Definition: vtkMultiBlockPLOT3DReader.h:430
vtkMultiBlockPLOT3DReader::ComputeMachNumber
void ComputeMachNumber(vtkStructuredGrid *output)
vtkMultiBlockPLOT3DReaderInternals
Definition: vtkMultiBlockPLOT3DReaderInternals.h:40
vtkX3D::offset
@ offset
Definition: vtkX3D.h:438
vtkMultiBlockPLOT3DReader::RequestData
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
vtkMultiBlockPLOT3DReader::CheckSolutionFile
int CheckSolutionFile(FILE *&qFp)
vtkMultiProcessController
Multiprocessing communication superclass.
Definition: vtkMultiProcessController.h:83
vtkMultiBlockPLOT3DReader::SetVectorFunctionNumber
void SetVectorFunctionNumber(int num)
Specify the vector function to extract.
vtkMultiBlockPLOT3DReader::ComputeVorticityMagnitude
void ComputeVorticityMagnitude(vtkStructuredGrid *output)
vtkMultiBlockPLOT3DReader::AddFunction
void AddFunction(int functionNumber)
Specify additional functions to read.
vtkMultiBlockPLOT3DReader::~vtkMultiBlockPLOT3DReader
~vtkMultiBlockPLOT3DReader()
vtkMultiBlockPLOT3DReader::RequestInformation
virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:40
vtkIntArray
dynamic, self-adjusting array of int
Definition: vtkIntArray.h:46
vtkMultiBlockPLOT3DReader::ReadFunctionHeader
int ReadFunctionHeader(FILE *fp, int *nFunctions)
vtkMultiBlockPLOT3DReader::ComputePressureGradient
void ComputePressureGradient(vtkStructuredGrid *output)
vtkMultiBlockPLOT3DReader::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
vtkMultiBlockPLOT3DReader::QFileName
char * QFileName
Definition: vtkMultiBlockPLOT3DReader.h:389
vtkMultiBlockPLOT3DReader::ScalarFunctionNumber
int ScalarFunctionNumber
Definition: vtkMultiBlockPLOT3DReader.h:416
vtkMultiBlockDataSetAlgorithm.h
vtkMultiBlockPLOT3DReader::SetScalarFunctionNumber
void SetScalarFunctionNumber(int num)
Specify the scalar function to extract.
vtkMultiBlockPLOT3DReader::BinaryFile
int BinaryFile
Definition: vtkMultiBlockPLOT3DReader.h:392
vtkMultiBlockPLOT3DReader::CheckGeometryFile
int CheckGeometryFile(FILE *&xyzFp)
vtkMultiBlockPLOT3DReader::FileSize
size_t FileSize
Definition: vtkMultiBlockPLOT3DReader.h:404
vtkGetStringMacro
vtkGetStringMacro(ExtensionsString)
Returns a string listing all available extensions.
vtkMultiBlockPLOT3DReader::ReadIntBlock
int ReadIntBlock(FILE *fp, int n, int *block)
vtkMultiBlockPLOT3DReader::FillOutputPortInformation
virtual int FillOutputPortInformation(int port, vtkInformation *info)
Fill the output port information objects for this algorithm.
vtkMultiBlockPLOT3DReader::CloseFile
virtual void CloseFile(void *fp)
vtkMultiBlockPLOT3DReader::GetNumberOfBlocksInternal
int GetNumberOfBlocksInternal(FILE *xyzFp, int allocate)
vtkX3D::name
@ name
Definition: vtkX3D.h:219
vtkMultiBlockPLOT3DReader::CalculateFileSize
void CalculateFileSize(FILE *fp)
vtkMultiBlockPLOT3DReader::FunctionList
vtkIntArray * FunctionList
Definition: vtkMultiBlockPLOT3DReader.h:414
vtkMultiBlockPLOT3DReader::CheckFile
int CheckFile(FILE *&fp, const char *fname)
vtkMultiBlockPLOT3DReader::ComputePressureCoefficient
void ComputePressureCoefficient(vtkStructuredGrid *output)
vtkBooleanMacro
vtkBooleanMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:87
vtkMultiBlockPLOT3DReader::RemoveAllFunctions
void RemoveAllFunctions()
vtkMultiBlockPLOT3DReader::FunctionFileName
char * FunctionFileName
Definition: vtkMultiBlockPLOT3DReader.h:390
vtkMultiBlockPLOT3DReader::SetController
void SetController(vtkMultiProcessController *c)
Set/Get the communicator object (we'll use global World controller if you don't set a different one).
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkX3D::info
@ info
Definition: vtkX3D.h:376
vtkMultiBlockPLOT3DReader::IBlanking
int IBlanking
Definition: vtkMultiBlockPLOT3DReader.h:398
vtkMultiBlockPLOT3DReader::AutoDetectFormat
int AutoDetectFormat
Definition: vtkMultiBlockPLOT3DReader.h:400
vtkMultiBlockPLOT3DReader::ForceRead
int ForceRead
Definition: vtkMultiBlockPLOT3DReader.h:396
vtkMultiBlockPLOT3DReader::RemoveFunction
void RemoveFunction(int)
vtkMultiBlockPLOT3DReader::SkipByteCount
int SkipByteCount(FILE *fp)
vtkMultiBlockPLOT3DReader::SetByteOrderToBigEndian
void SetByteOrderToBigEndian()
Set the byte order of the file (remember, more Unix workstations write big endian whereas PCs write l...
vtkMultiBlockPLOT3DReader::CanReadBinaryFile
virtual int CanReadBinaryFile(const char *fname)
Return 1 if the reader can read the given file name.
vtkMultiBlockPLOT3DReader::vtkMultiBlockPLOT3DReader
vtkMultiBlockPLOT3DReader()
vtkMultiBlockPLOT3DReader::Gamma
double Gamma
Definition: vtkMultiBlockPLOT3DReader.h:408
vtkX3D::extent
@ extent
Definition: vtkX3D.h:345
vtkMultiBlockPLOT3DReader::ReadGeometryHeader
int ReadGeometryHeader(FILE *fp)
vtkMultiBlockPLOT3DReader::ByteOrder
int ByteOrder
Definition: vtkMultiBlockPLOT3DReader.h:397
vtkMultiBlockPLOT3DReader::ComputeEnthalpy
void ComputeEnthalpy(vtkStructuredGrid *output)
vtkMultiBlockPLOT3DReader::Internal
vtkMultiBlockPLOT3DReaderInternals * Internal
Definition: vtkMultiBlockPLOT3DReader.h:428
vtkMultiBlockPLOT3DReader::GetByteOrderAsString
const char * GetByteOrderAsString()
vtkMultiBlockPLOT3DReader::ReadVector
virtual int ReadVector(void *vfp, int extent[6], int wextent[6], int numDims, vtkDataArray *vector, vtkTypeUInt64 offset, const vtkMultiBlockPLOT3DReaderRecord &currentRecord)
vtkMultiBlockPLOT3DReaderRecord
Definition: vtkMultiBlockPLOT3DReaderInternals.h:130
vtkMultiBlockPLOT3DReader::TwoDimensionalGeometry
int TwoDimensionalGeometry
Definition: vtkMultiBlockPLOT3DReader.h:394
vtkMultiBlockPLOT3DReader::ComputeTemperature
void ComputeTemperature(vtkStructuredGrid *output)
vtkMultiBlockPLOT3DReader::HasByteCount
int HasByteCount
Definition: vtkMultiBlockPLOT3DReader.h:393
vtkMultiBlockPLOT3DReader::GetByteCountSize
int GetByteCountSize()
vtkMultiBlockDataSetAlgorithm
Superclass for algorithms that produce only vtkMultiBlockDataSet as output.
Definition: vtkMultiBlockDataSetAlgorithm.h:33