00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00084 #ifndef __vtkPLOT3DReader_h
00085 #define __vtkPLOT3DReader_h
00086
00087 #include "vtkStructuredGridSource.h"
00088
00089 class vtkIntArray;
00090 class vtkStructuredGrid;
00091
00092 class VTK_IO_EXPORT vtkPLOT3DReader : public vtkStructuredGridSource
00093 {
00094 public:
00095 static vtkPLOT3DReader *New();
00096 vtkTypeRevisionMacro(vtkPLOT3DReader,vtkStructuredGridSource);
00097 void PrintSelf(ostream& os, vtkIndent indent);
00098
00100
00101 void SetFileName(const char* name) { this->SetXYZFileName(name); }
00102 const char* GetFileName() { return this->GetXYZFileName(); }
00103 vtkSetStringMacro(XYZFileName);
00104 vtkGetStringMacro(XYZFileName);
00106
00108
00109 vtkSetStringMacro(QFileName);
00110 vtkGetStringMacro(QFileName);
00112
00114
00120 int GetNumberOfOutputs();
00121 int GetNumberOfGrids() { return this->GetNumberOfOutputs(); }
00123
00125 void SetOutput(int idx, vtkStructuredGrid *output);
00126
00128
00130 vtkSetMacro(BinaryFile, int);
00131 vtkGetMacro(BinaryFile, int);
00132 vtkBooleanMacro(BinaryFile, int);
00134
00136
00139 vtkSetMacro(MultiGrid, int);
00140 vtkGetMacro(MultiGrid, int);
00141 vtkBooleanMacro(MultiGrid, int);
00143
00145
00148 vtkSetMacro(HasByteCount, int);
00149 vtkGetMacro(HasByteCount, int);
00150 vtkBooleanMacro(HasByteCount, int);
00152
00154
00157 vtkSetMacro(IBlanking, int);
00158 vtkGetMacro(IBlanking, int);
00159 vtkBooleanMacro(IBlanking, int);
00161
00163
00164 vtkSetMacro(TwoDimensionalGeometry, int);
00165 vtkGetMacro(TwoDimensionalGeometry, int);
00166 vtkBooleanMacro(TwoDimensionalGeometry, int);
00168
00170
00174 vtkSetMacro(ForceRead, int);
00175 vtkGetMacro(ForceRead, int);
00176 vtkBooleanMacro(ForceRead, int);
00178
00180
00185 vtkSetMacro(DoNotReduceNumberOfOutputs, int);
00186 vtkGetMacro(DoNotReduceNumberOfOutputs, int);
00187 vtkBooleanMacro(DoNotReduceNumberOfOutputs, int);
00189
00191
00194 void SetByteOrderToBigEndian();
00195 void SetByteOrderToLittleEndian();
00196 vtkSetMacro(ByteOrder, int);
00197 vtkGetMacro(ByteOrder, int);
00198 const char *GetByteOrderAsString();
00200
00202
00203 vtkSetMacro(R,float);
00204 vtkGetMacro(R,float);
00206
00208
00209 vtkSetMacro(Gamma,float);
00210 vtkGetMacro(Gamma,float);
00212
00214
00215 vtkSetMacro(Uvinf,float);
00216 vtkGetMacro(Uvinf,float);
00218
00220
00221 vtkSetMacro(Vvinf,float);
00222 vtkGetMacro(Vvinf,float);
00224
00226
00227 vtkSetMacro(Wvinf,float);
00228 vtkGetMacro(Wvinf,float);
00230
00232
00234 void SetScalarFunctionNumber(int num);
00235 vtkGetMacro(ScalarFunctionNumber,int);
00237
00239
00241 void SetVectorFunctionNumber(int num);
00242 vtkGetMacro(VectorFunctionNumber,int);
00244
00246
00249 void AddFunction(int functionNumber);
00250 void RemoveFunction(int);
00251 void RemoveAllFunctions();
00253
00256 virtual int CanReadFile(const char* fname);
00257
00258
00259 enum
00260 {
00261 FILE_BIG_ENDIAN=0,
00262 FILE_LITTLE_ENDIAN=1
00263 };
00264
00265
00266 protected:
00267 vtkPLOT3DReader();
00268 ~vtkPLOT3DReader();
00269
00270 void ExecuteInformation();
00271 void Execute();
00272
00273 int CheckFile(FILE*& fp, const char* fname);
00274 int CheckGeometryFile(FILE*& xyzFp);
00275 int CheckSolutionFile(FILE*& qFp);
00276
00277 void SkipByteCount (FILE* fp);
00278 int ReadIntBlock (FILE* fp, int n, int* block);
00279 int ReadFloatBlock(FILE* fp, int n, float* block);
00280
00281 int GetNumberOfOutputsInternal(FILE* xyzFp, int verify=1);
00282
00283 int ReadGeometryHeader(FILE* fp);
00284 int ReadQHeader(FILE* fp);
00285
00286 void CalculateFileSize(FILE* fp);
00287 long EstimateSize(int ni, int nj, int nk);
00288
00289 void AssignAttribute(int fNumber, vtkStructuredGrid* output,
00290 int attributeType);
00291 void MapFunction(int fNumber, vtkStructuredGrid* output);
00292 void ComputeTemperature(vtkStructuredGrid* output);
00293 void ComputePressure(vtkStructuredGrid* output);
00294 void ComputeEnthalpy(vtkStructuredGrid* output);
00295 void ComputeKineticEnergy(vtkStructuredGrid* output);
00296 void ComputeVelocityMagnitude(vtkStructuredGrid* output);
00297 void ComputeEntropy(vtkStructuredGrid* output);
00298 void ComputeSwirl(vtkStructuredGrid* output);
00299 void ComputeVelocity(vtkStructuredGrid* output);
00300 void ComputeVorticity(vtkStructuredGrid* output);
00301 void ComputePressureGradient(vtkStructuredGrid* output);
00302
00303
00304
00305 char *XYZFileName;
00306 char *QFileName;
00307
00308 int BinaryFile;
00309 int HasByteCount;
00310 int TwoDimensionalGeometry;
00311 int MultiGrid;
00312 int ForceRead;
00313 int ByteOrder;
00314 int IBlanking;
00315 int DoNotReduceNumberOfOutputs;
00316
00317 long FileSize;
00318
00319
00320 float R;
00321 float Gamma;
00322 float Uvinf;
00323 float Vvinf;
00324 float Wvinf;
00325
00326
00327 vtkIntArray *FunctionList;
00328
00329 int ScalarFunctionNumber;
00330 int VectorFunctionNumber;
00331
00332 private:
00333 vtkPLOT3DReader(const vtkPLOT3DReader&);
00334 void operator=(const vtkPLOT3DReader&);
00335 };
00336
00337 #endif
00338
00339