VTK
vtkOpenFOAMReader.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkOpenFOAMReader.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 =========================================================================*/
43 #ifndef vtkOpenFOAMReader_h
44 #define vtkOpenFOAMReader_h
45 
46 #include "vtkIOGeometryModule.h" // For export macro
48 
49 class vtkCollection;
50 class vtkCharArray;
52 class vtkDoubleArray;
53 class vtkStdString;
54 class vtkStringArray;
55 
56 class vtkOpenFOAMReaderPrivate;
57 
59 {
60 public:
61  static vtkOpenFOAMReader *New();
63  void PrintSelf(ostream &, vtkIndent);
64 
66  int CanReadFile(const char *);
67 
69 
70  vtkSetStringMacro(FileName);
71  vtkGetStringMacro(FileName);
73 
75 
77  { return this->GetNumberOfSelectionArrays(this->CellDataArraySelection); }
79 
81 
82  int GetCellArrayStatus(const char *name)
83  { return this->GetSelectionArrayStatus(this->CellDataArraySelection, name); }
84  void SetCellArrayStatus(const char *name, int status)
85  { this->SetSelectionArrayStatus(this->CellDataArraySelection, name, status); }
87 
89 
90  const char *GetCellArrayName(int index)
91  { return this->GetSelectionArrayName(this->CellDataArraySelection, index); }
93 
95 
97  { this->DisableAllSelectionArrays(this->CellDataArraySelection); }
99  { this->EnableAllSelectionArrays(this->CellDataArraySelection); }
101 
103 
105  { return this->GetNumberOfSelectionArrays(this->PointDataArraySelection); }
107 
109 
110  int GetPointArrayStatus(const char *name)
111  { return this->GetSelectionArrayStatus(this->PointDataArraySelection, name); }
112  void SetPointArrayStatus(const char *name, int status)
113  { this->SetSelectionArrayStatus(this->PointDataArraySelection,
114  name, status); }
116 
118 
119  const char *GetPointArrayName(int index)
120  { return this->GetSelectionArrayName(this->PointDataArraySelection, index); }
122 
124 
126  { this->DisableAllSelectionArrays(this->PointDataArraySelection); }
128  { this->EnableAllSelectionArrays(this->PointDataArraySelection); }
130 
132 
134  { return this->GetNumberOfSelectionArrays(
135  this->LagrangianDataArraySelection); }
137 
139 
142  { return this->GetSelectionArrayStatus(this->LagrangianDataArraySelection,
143  name); }
144  void SetLagrangianArrayStatus(const char *name, int status)
145  { this->SetSelectionArrayStatus(this->LagrangianDataArraySelection, name,
146  status); }
148 
150 
152  const char* GetLagrangianArrayName(int index)
153  { return this->GetSelectionArrayName(this->LagrangianDataArraySelection,
154  index); }
156 
158 
160  { this->DisableAllSelectionArrays(this->LagrangianDataArraySelection); }
162  { this->EnableAllSelectionArrays(this->LagrangianDataArraySelection); }
164 
166 
169  { return this->GetNumberOfSelectionArrays(this->PatchDataArraySelection); }
171 
173 
174  int GetPatchArrayStatus(const char *name)
175  { return this->GetSelectionArrayStatus(this->PatchDataArraySelection, name); }
176  void SetPatchArrayStatus(const char *name, int status)
177  { this->SetSelectionArrayStatus(this->PatchDataArraySelection, name,
178  status); }
180 
182 
183  const char *GetPatchArrayName(int index)
184  { return this->GetSelectionArrayName(this->PatchDataArraySelection, index); }
186 
188 
190  { this->DisableAllSelectionArrays(this->PatchDataArraySelection); }
192  { this->EnableAllSelectionArrays(this->PatchDataArraySelection); }
194 
196 
198  vtkSetMacro(CreateCellToPoint,int);
199  vtkGetMacro(CreateCellToPoint,int);
200  vtkBooleanMacro(CreateCellToPoint, int);
202 
204 
205  vtkSetMacro(CacheMesh, int);
206  vtkGetMacro(CacheMesh, int);
207  vtkBooleanMacro(CacheMesh, int);
209 
211 
212  vtkSetMacro(DecomposePolyhedra, int);
213  vtkGetMacro(DecomposePolyhedra, int);
214  vtkBooleanMacro(DecomposePolyhedra, int);
216 
217  // Option for reading old binary lagrangian/positions format
219 
220  vtkSetMacro(PositionsIsIn13Format, int);
221  vtkGetMacro(PositionsIsIn13Format, int);
222  vtkBooleanMacro(PositionsIsIn13Format, int);
224 
226 
228  vtkSetMacro(ListTimeStepsByControlDict, int);
229  vtkGetMacro(ListTimeStepsByControlDict, int);
230  vtkBooleanMacro(ListTimeStepsByControlDict, int);
232 
234 
235  vtkSetMacro(AddDimensionsToArrayNames, int);
236  vtkGetMacro(AddDimensionsToArrayNames, int);
237  vtkBooleanMacro(AddDimensionsToArrayNames, int);
239 
241 
242  vtkSetMacro(ReadZones, int);
243  vtkGetMacro(ReadZones, int);
244  vtkBooleanMacro(ReadZones, int);
246 
247  void SetRefresh() { this->Refresh = true; this->Modified(); }
248 
249  void SetParent(vtkOpenFOAMReader *parent) { this->Parent = parent; }
250  int MakeInformationVector(vtkInformationVector *, const vtkStdString &);
251  bool SetTimeValue(const double);
252  vtkDoubleArray *GetTimeValues();
253  int MakeMetaDataAtTimeStep(const bool);
254 
255  //BTX
256  friend class vtkOpenFOAMReaderPrivate;
257  //ETX
258 
259 protected:
260  // refresh flag
261  bool Refresh;
262 
263  // for creating cell-to-point translated data
265 
266  // for caching mesh
268 
269  // for decomposing polyhedra on-the-fly
271 
272  // for reading old binary lagrangian/positions format
274 
275  // for reading point/face/cell-Zones
277 
278  // determine if time directories are listed according to controlDict
280 
281  // add dimensions to array names
283 
284  char *FileName;
287 
288  // DataArraySelection for Patch / Region Data
293 
294  // old selection status
295  unsigned long int PatchSelectionMTimeOld;
296  unsigned long int CellSelectionMTimeOld;
297  unsigned long int PointSelectionMTimeOld;
298  unsigned long int LagrangianSelectionMTimeOld;
299 
300  // preserved old information
308 
309  // paths to Lagrangians
311 
312  // number of reader instances
314  // index of the active reader
316 
323 
324  void CreateCasePath(vtkStdString &, vtkStdString &);
325  void SetTimeInformation(vtkInformationVector *, vtkDoubleArray *);
326  void CreateCharArrayFromString(vtkCharArray *, const char *, vtkStdString &);
327  void UpdateStatus();
328  void UpdateProgress(double);
329 
330 private:
331  vtkOpenFOAMReader *Parent;
332 
333  vtkOpenFOAMReader(const vtkOpenFOAMReader&); // Not implemented.
334  void operator=(const vtkOpenFOAMReader&); // Not implemented.
335 
336  int GetNumberOfSelectionArrays(vtkDataArraySelection *);
337  int GetSelectionArrayStatus(vtkDataArraySelection *, const char *);
338  void SetSelectionArrayStatus(vtkDataArraySelection *, const char *, int);
339  const char *GetSelectionArrayName(vtkDataArraySelection *, int);
340  void DisableAllSelectionArrays(vtkDataArraySelection *);
341  void EnableAllSelectionArrays(vtkDataArraySelection *);
342 
343  void AddSelectionNames(vtkDataArraySelection *, vtkStringArray *);
344 };
345 
346 #endif
int GetCellArrayStatus(const char *name)
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:46
unsigned long int LagrangianSelectionMTimeOld
void SetParent(vtkOpenFOAMReader *parent)
void SetLagrangianArrayStatus(const char *name, int status)
int GetPatchArrayStatus(const char *name)
void SetPointArrayStatus(const char *name, int status)
Store vtkAlgorithm input/output information.
int GetNumberOfCellArrays(void)
vtkDataArraySelection * LagrangianDataArraySelection
int GetPointArrayStatus(const char *name)
const char * GetCellArrayName(int index)
vtkStringArray * LagrangianPaths
vtkDataArraySelection * CellDataArraySelection
a vtkAbstractArray subclass for strings
const char * GetPatchArrayName(int index)
Superclass for algorithms that produce only vtkMultiBlockDataSet as output.
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
int GetNumberOfLagrangianArrays(void)
unsigned long int CellSelectionMTimeOld
const char * GetLagrangianArrayName(int index)
#define VTKIOGEOMETRY_EXPORT
dynamic, self-adjusting array of double
static vtkMultiBlockDataSetAlgorithm * New()
vtkStdString * FileNameOld
dynamic, self-adjusting array of char
Definition: vtkCharArray.h:42
int GetNumberOfPatchArrays(void)
a simple class to control print indentation
Definition: vtkIndent.h:38
Store on/off settings for data arrays for a vtkSource.
vtkDataArraySelection * PointDataArraySelection
reads a dataset in OpenFOAM format
unsigned long int PointSelectionMTimeOld
virtual void Modified()
const char * GetPointArrayName(int index)
void UpdateProgress(double amount)
int GetNumberOfPointArrays(void)
unsigned long int PatchSelectionMTimeOld
create and manipulate unsorted lists of objects
Definition: vtkCollection.h:52
void SetPatchArrayStatus(const char *name, int status)
vtkCharArray * CasePath
void PrintSelf(ostream &os, vtkIndent indent)
int GetLagrangianArrayStatus(const char *name)
Store zero or more vtkInformation instances.
vtkCollection * Readers
void SetCellArrayStatus(const char *name, int status)
virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
vtkDataArraySelection * PatchDataArraySelection