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 =========================================================================*/
91 #ifndef vtkMultiBlockPLOT3DReader_h
92 #define vtkMultiBlockPLOT3DReader_h
93 
94 #include "vtkIOParallelModule.h" // For export macro
96 
97 class vtkDataArray;
99 class vtkIntArray;
100 class vtkStructuredGrid;
102 
104 
106 {
107 public:
108  static vtkMultiBlockPLOT3DReader *New();
110  void PrintSelf(ostream& os, vtkIndent indent);
111 
113 
114  void SetFileName(const char* name) { this->SetXYZFileName(name); }
115  const char* GetFileName() { return this->GetXYZFileName(); }
116  virtual void SetXYZFileName( const char* );
117  vtkGetStringMacro(XYZFileName);
119 
121 
122  vtkSetStringMacro(QFileName);
123  vtkGetStringMacro(QFileName);
125 
127 
128  vtkSetStringMacro(FunctionFileName);
129  vtkGetStringMacro(FunctionFileName);
131 
133 
141  vtkSetMacro(AutoDetectFormat, int);
142  vtkGetMacro(AutoDetectFormat, int);
143  vtkBooleanMacro(AutoDetectFormat, int);
145 
147 
149  vtkSetMacro(BinaryFile, int);
150  vtkGetMacro(BinaryFile, int);
151  vtkBooleanMacro(BinaryFile, int);
153 
155 
158  vtkSetMacro(MultiGrid, int);
159  vtkGetMacro(MultiGrid, int);
160  vtkBooleanMacro(MultiGrid, int);
162 
164 
167  vtkSetMacro(HasByteCount, int);
168  vtkGetMacro(HasByteCount, int);
169  vtkBooleanMacro(HasByteCount, int);
171 
173 
176  vtkSetMacro(IBlanking, int);
177  vtkGetMacro(IBlanking, int);
178  vtkBooleanMacro(IBlanking, int);
180 
182 
183  vtkSetMacro(TwoDimensionalGeometry, int);
184  vtkGetMacro(TwoDimensionalGeometry, int);
185  vtkBooleanMacro(TwoDimensionalGeometry, int);
187 
189 
191  vtkSetMacro(DoublePrecision, int);
192  vtkGetMacro(DoublePrecision, int);
193  vtkBooleanMacro(DoublePrecision, int);
195 
197 
201  vtkSetMacro(ForceRead, int);
202  vtkGetMacro(ForceRead, int);
203  vtkBooleanMacro(ForceRead, int);
205 
207 
210  void SetByteOrderToBigEndian();
211  void SetByteOrderToLittleEndian();
212  vtkSetMacro(ByteOrder, int);
213  vtkGetMacro(ByteOrder, int);
214  const char *GetByteOrderAsString();
216 
218 
219  vtkSetMacro(R,double);
220  vtkGetMacro(R,double);
222 
224 
225  vtkSetMacro(Gamma,double);
226  vtkGetMacro(Gamma,double);
228 
230 
232  void SetScalarFunctionNumber(int num);
233  vtkGetMacro(ScalarFunctionNumber,int);
235 
237 
239  void SetVectorFunctionNumber(int num);
240  vtkGetMacro(VectorFunctionNumber,int);
242 
244 
247  void AddFunction(int functionNumber);
248  void RemoveFunction(int);
249  void RemoveAllFunctions();
251 
254  virtual int CanReadBinaryFile(const char* fname);
255 
257 
259  void SetController(vtkMultiProcessController *c);
260  vtkGetObjectMacro(Controller, vtkMultiProcessController);
262 
263 //BTX
264  enum
265  {
266  FILE_BIG_ENDIAN=0,
267  FILE_LITTLE_ENDIAN=1
268  };
269 //ETX
270 
271 protected:
274 
275  vtkDataArray* CreateFloatArray();
276 
277  int CheckFile(FILE*& fp, const char* fname);
278  int CheckGeometryFile(FILE*& xyzFp);
279  int CheckSolutionFile(FILE*& qFp);
280  int CheckFunctionFile(FILE*& fFp);
281 
282  int GetByteCountSize();
283  int SkipByteCount (FILE* fp);
284  int ReadIntBlock (FILE* fp, int n, int* block);
285 
286  vtkIdType ReadValues(
287  FILE* fp,
288  int n,
289  vtkDataArray* scalar);
290  virtual int ReadIntScalar(
291  void* vfp,
292  int extent[6], int wextent[6],
293  vtkDataArray* scalar, vtkTypeUInt64 offset);
294  virtual int ReadScalar(
295  void* vfp,
296  int extent[6], int wextent[6],
297  vtkDataArray* scalar, vtkTypeUInt64 offset);
298  virtual int ReadVector(
299  void* vfp,
300  int extent[6], int wextent[6],
301  int numDims, vtkDataArray* vector, vtkTypeUInt64 offset);
302  virtual int OpenFileForDataRead(void*& fp, const char* fname);
303  virtual void CloseFile(void* fp);
304 
305  int GetNumberOfBlocksInternal(FILE* xyzFp, int allocate);
306 
307  int ReadGeometryHeader(FILE* fp);
308  int ReadQHeader(FILE* fp, bool checkGrid, int& nq, int& nqc, int& overflow);
309  int ReadFunctionHeader(FILE* fp, int* nFunctions);
310 
311  void CalculateFileSize(FILE* fp);
312 
313  int AutoDetectionCheck(FILE* fp);
314 
315  void AssignAttribute(int fNumber, vtkStructuredGrid* output,
316  int attributeType);
317  void MapFunction(int fNumber, vtkStructuredGrid* output);
318  void ComputeTemperature(vtkStructuredGrid* output);
319  void ComputePressure(vtkStructuredGrid* output);
320  void ComputeEnthalpy(vtkStructuredGrid* output);
321  void ComputeKineticEnergy(vtkStructuredGrid* output);
322  void ComputeVelocityMagnitude(vtkStructuredGrid* output);
323  void ComputeEntropy(vtkStructuredGrid* output);
324  void ComputeSwirl(vtkStructuredGrid* output);
325  void ComputeVelocity(vtkStructuredGrid* output);
326  void ComputeVorticity(vtkStructuredGrid* output);
327  void ComputePressureGradient(vtkStructuredGrid* output);
328  void ComputePressureCoefficient(vtkStructuredGrid* output);
329  void ComputeMachNumber(vtkStructuredGrid* output);
330  void ComputeSoundSpeed(vtkStructuredGrid* output);
331  void ComputeVorticityMagnitude(vtkStructuredGrid* output);
332  void ComputeStrainRate(vtkStructuredGrid* output);
333 
334  // Returns a vtkFloatArray or a vtkDoubleArray depending
335  // on DoublePrecision setting
336  vtkDataArray* NewFloatArray();
337 
338  // Delete references to any existing vtkPoints and
339  // I-blank arrays. The next Update() will (re)read
340  // the XYZ file.
341  void ClearGeometryCache();
342 
343  //plot3d FileNames
344  char *XYZFileName;
345  char *QFileName;
347 
357 
359 
360  size_t FileSize;
361 
362  //parameters used in computing derived functions
363  double R;
364  double Gamma;
365  double Uvinf;
366  double Vvinf;
367  double Wvinf;
368 
369  //functions to read that are not scalars or vectors
371 
374 
376 
377  virtual int RequestData(vtkInformation*,
380  virtual int RequestInformation(vtkInformation*,
383 
385 
387 
388 private:
389  vtkMultiBlockPLOT3DReader(const vtkMultiBlockPLOT3DReader&); // Not implemented.
390  void operator=(const vtkMultiBlockPLOT3DReader&); // Not implemented.
391 };
392 
393 #endif
#define VTKIOPARALLEL_EXPORT
void SetFileName(const char *name)
Store vtkAlgorithm input/output information.
vtkMultiProcessController * Controller
int vtkIdType
Definition: vtkType.h:275
Superclass for algorithms that produce only vtkMultiBlockDataSet as output.
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
static vtkMultiBlockDataSetAlgorithm * New()
virtual int FillOutputPortInformation(int port, vtkInformation *info)
dynamic, self-adjusting array of int
Definition: vtkIntArray.h:49
a simple class to control print indentation
Definition: vtkIndent.h:38
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:54
vtkMultiBlockPLOT3DReaderInternals * Internal
dynamic, self-adjusting array of unsigned char
topologically regular array of data
void PrintSelf(ostream &os, vtkIndent indent)
Store zero or more vtkInformation instances.
virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
Multiprocessing communication superclass.