Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

dox/IO/vtkPLOT3DReader.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkPLOT3DReader.h,v $ 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00080 #ifndef __vtkPLOT3DReader_h 00081 #define __vtkPLOT3DReader_h 00082 00083 #include "vtkStructuredGridSource.h" 00084 00085 class vtkUnsignedCharArray; 00086 class vtkIntArray; 00087 class vtkFloatArray; 00088 class vtkStructuredGrid; 00089 00090 class VTK_IO_EXPORT vtkPLOT3DReader : public vtkStructuredGridSource 00091 { 00092 public: 00093 static vtkPLOT3DReader *New(); 00094 vtkTypeRevisionMacro(vtkPLOT3DReader,vtkStructuredGridSource); 00095 void PrintSelf(ostream& os, vtkIndent indent); 00096 00098 00099 void SetFileName(const char* name) { this->SetXYZFileName(name); } 00100 const char* GetFileName() { return this->GetXYZFileName(); } 00101 virtual void SetXYZFileName( const char* ); 00102 vtkGetStringMacro(XYZFileName); 00104 00106 00107 vtkSetStringMacro(QFileName); 00108 vtkGetStringMacro(QFileName); 00110 00112 00118 int GetNumberOfOutputs(); 00119 int GetNumberOfGrids() { return this->GetNumberOfOutputs(); } 00121 00123 void SetOutput(int idx, vtkStructuredGrid *output); 00124 00126 00128 vtkSetMacro(BinaryFile, int); 00129 vtkGetMacro(BinaryFile, int); 00130 vtkBooleanMacro(BinaryFile, int); 00132 00134 00137 vtkSetMacro(MultiGrid, int); 00138 vtkGetMacro(MultiGrid, int); 00139 vtkBooleanMacro(MultiGrid, int); 00141 00143 00146 vtkSetMacro(HasByteCount, int); 00147 vtkGetMacro(HasByteCount, int); 00148 vtkBooleanMacro(HasByteCount, int); 00150 00152 00155 vtkSetMacro(IBlanking, int); 00156 vtkGetMacro(IBlanking, int); 00157 vtkBooleanMacro(IBlanking, int); 00159 00161 00162 vtkSetMacro(TwoDimensionalGeometry, int); 00163 vtkGetMacro(TwoDimensionalGeometry, int); 00164 vtkBooleanMacro(TwoDimensionalGeometry, int); 00166 00168 00172 vtkSetMacro(ForceRead, int); 00173 vtkGetMacro(ForceRead, int); 00174 vtkBooleanMacro(ForceRead, int); 00176 00178 00183 vtkSetMacro(DoNotReduceNumberOfOutputs, int); 00184 vtkGetMacro(DoNotReduceNumberOfOutputs, int); 00185 vtkBooleanMacro(DoNotReduceNumberOfOutputs, int); 00187 00189 00192 void SetByteOrderToBigEndian(); 00193 void SetByteOrderToLittleEndian(); 00194 vtkSetMacro(ByteOrder, int); 00195 vtkGetMacro(ByteOrder, int); 00196 const char *GetByteOrderAsString(); 00198 00200 00201 vtkSetMacro(R,double); 00202 vtkGetMacro(R,double); 00204 00206 00207 vtkSetMacro(Gamma,double); 00208 vtkGetMacro(Gamma,double); 00210 00212 00213 vtkSetMacro(Uvinf,double); 00214 vtkGetMacro(Uvinf,double); 00216 00218 00219 vtkSetMacro(Vvinf,double); 00220 vtkGetMacro(Vvinf,double); 00222 00224 00225 vtkSetMacro(Wvinf,double); 00226 vtkGetMacro(Wvinf,double); 00228 00230 00232 void SetScalarFunctionNumber(int num); 00233 vtkGetMacro(ScalarFunctionNumber,int); 00235 00237 00239 void SetVectorFunctionNumber(int num); 00240 vtkGetMacro(VectorFunctionNumber,int); 00242 00244 00247 void AddFunction(int functionNumber); 00248 void RemoveFunction(int); 00249 void RemoveAllFunctions(); 00251 00254 virtual int CanReadBinaryFile(const char* fname); 00255 00256 int GenerateDefaultConfiguration(); 00257 00258 //BTX 00259 enum 00260 { 00261 FILE_BIG_ENDIAN=0, 00262 FILE_LITTLE_ENDIAN=1 00263 }; 00264 //ETX 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 // Delete references to any existing vtkPoints and 00304 // I-blank arrays. The next Update() will (re)read 00305 // the XYZ file. 00306 void ClearGeometryCache(); 00307 00308 //plot3d FileNames 00309 char *XYZFileName; 00310 char *QFileName; 00311 00312 int BinaryFile; 00313 int HasByteCount; 00314 int TwoDimensionalGeometry; 00315 int MultiGrid; 00316 int ForceRead; 00317 int ByteOrder; 00318 int IBlanking; 00319 int DoNotReduceNumberOfOutputs; 00320 00321 long FileSize; 00322 00323 //parameters used in computing derived functions 00324 double R; 00325 double Gamma; 00326 double Uvinf; 00327 double Vvinf; 00328 double Wvinf; 00329 00330 //functions to read that are not scalars or vectors 00331 vtkIntArray *FunctionList; 00332 00333 int ScalarFunctionNumber; 00334 int VectorFunctionNumber; 00335 00336 // Cache of geometry 00337 vtkFloatArray** PointCache; 00338 vtkUnsignedCharArray** IBlankCache; 00339 00340 int VerifySettings(char* buf, int bufSize); 00341 void ReadIntBlockV(char** buf, int n, int* block); 00342 void SkipByteCountV(char** buf); 00343 00344 00345 private: 00346 vtkPLOT3DReader(const vtkPLOT3DReader&); // Not implemented. 00347 void operator=(const vtkPLOT3DReader&); // Not implemented. 00348 }; 00349 00350 #endif 00351 00352