• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

dox/IO/vtkOpenFOAMReader.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkOpenFOAMReader.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 =========================================================================*/
00030 #ifndef __vtkOpenFOAMReader_h
00031 #define __vtkOpenFOAMReader_h
00032 
00033 #include "vtkMultiBlockDataSetAlgorithm.h"
00034 
00035 typedef struct
00036 {
00037   int faceIndex;
00038   bool neighborFace;
00039 } face;
00040 
00041 class vtkUnstructuredGrid;
00042 class vtkPoints;
00043 class vtkIntArray;
00044 class vtkFloatArray;
00045 class vtkDoubleArray;
00046 class vtkDataArraySelection;
00047 struct stdString;
00048 struct stringVector;
00049 struct intVector;
00050 struct intVectorVector;
00051 struct faceVectorVector;
00052 
00053 class VTK_IO_EXPORT vtkOpenFOAMReader : public vtkMultiBlockDataSetAlgorithm
00054 {
00055 public:
00056   static vtkOpenFOAMReader *New();
00057   vtkTypeRevisionMacro(vtkOpenFOAMReader, vtkMultiBlockDataSetAlgorithm);
00058   void PrintSelf(ostream& os, vtkIndent indent);
00059 
00061 
00062   vtkSetStringMacro(FileName);
00063   vtkGetStringMacro(FileName);
00065 
00067 
00068   vtkGetMacro(NumberOfTimeSteps, int);
00070 
00072 
00073   vtkSetMacro(TimeStep, int);
00074   vtkGetMacro(TimeStep, int);
00076 
00078 
00079   vtkGetVector2Macro(TimeStepRange, int);
00081 
00083   int GetNumberOfCellArrays(void);
00084 
00086 
00087   int GetCellArrayStatus(const char* name);
00088   void SetCellArrayStatus(const char* name, int status);
00090 
00092   const char* GetCellArrayName(int index);
00093 
00095 
00096   void DisableAllCellArrays();
00097   void EnableAllCellArrays();
00099 
00100 
00101 protected:
00102   vtkOpenFOAMReader();
00103   ~vtkOpenFOAMReader();
00104   int RequestData(vtkInformation *,
00105     vtkInformationVector **, vtkInformationVector *);
00106   int RequestInformation(vtkInformation *,
00107     vtkInformationVector **, vtkInformationVector *);
00108 
00109 private:
00110   vtkOpenFOAMReader(const vtkOpenFOAMReader&);  // Not implemented.
00111   void operator=(const vtkOpenFOAMReader&);  // Not implemented.
00112 
00113   vtkSetVector2Macro(TimeStepRange, int);
00114 
00115   char * FileName;
00116   int NumberOfTimeSteps;
00117   int TimeStep;
00118   int TimeStepRange[2];
00119   double * Steps;
00120   bool RequestInformationFlag;
00121   int StartFace;
00122 
00123   stdString * Path;
00124   stdString * PathPrefix;
00125   stringVector * TimeStepData;
00126   vtkDataArraySelection * CellDataArraySelection;
00127   intVectorVector * FacePoints;
00128   intVectorVector * FacesOwnerCell;
00129   intVectorVector * FacesNeighborCell;
00130   faceVectorVector * FacesOfCell;
00131   vtkPoints * Points;
00132   vtkIdType NumCells;
00133   vtkIdType NumFaces;
00134   vtkIntArray * FaceOwner;
00135   //vtkIntArray * FaceNeighbor;
00136   stringVector * PolyMeshPointsDir;
00137   stringVector * PolyMeshFacesDir;
00138   vtkIdType NumPoints;
00139   intVector * SizeOfBoundary;
00140   stringVector * BoundaryNames;
00141   stringVector * PointZoneNames;
00142   stringVector * FaceZoneNames;
00143   stringVector * CellZoneNames;
00144   int NumBlocks;
00145 
00146   void CombineOwnerNeigbor();
00147   vtkUnstructuredGrid * MakeInternalMesh();
00148   double ControlDictDataParser(const char *);
00149   void ReadControlDict ();
00150   void GetPoints (int);
00151   void ReadFacesFile (const char *);
00152   void ReadOwnerFile(const char *);
00153   void ReadNeighborFile(const char *);
00154   void PopulatePolyMeshDirArrays();
00155   const char * GetDataType(const char *, const char *);
00156   vtkDoubleArray * GetInternalVariableAtTimestep(const char *, int);
00157   vtkDoubleArray * GetBoundaryVariableAtTimestep(int, const char *, int,
00158                                                  vtkUnstructuredGrid *);
00159   stringVector *GatherBlocks(const char *, int);
00160   vtkUnstructuredGrid * GetBoundaryMesh(int, int);
00161   vtkUnstructuredGrid * GetPointZoneMesh(int, int);
00162   vtkUnstructuredGrid * GetFaceZoneMesh(int, int);
00163   vtkUnstructuredGrid * GetCellZoneMesh(int, int);
00164   void CreateDataSet(vtkMultiBlockDataSet *);
00165   stdString * GetLine(ifstream *);
00166 };
00167 
00168 #endif

Generated by  doxygen 1.7.1