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