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 =========================================================================*/
45 #ifndef vtkOpenFOAMReader_h
46 #define vtkOpenFOAMReader_h
47 
48 #include "vtkIOGeometryModule.h" // For export macro
50 
51 class vtkCollection;
52 class vtkCharArray;
54 class vtkDoubleArray;
55 class vtkStdString;
56 class vtkStringArray;
57 
58 class vtkOpenFOAMReaderPrivate;
59 
60 class VTKIOGEOMETRY_EXPORT vtkOpenFOAMReader : public vtkMultiBlockDataSetAlgorithm
61 {
62 public:
63  static vtkOpenFOAMReader *New();
65  void PrintSelf(ostream &, vtkIndent) VTK_OVERRIDE;
66 
70  int CanReadFile(const char *);
71 
73 
76  vtkSetStringMacro(FileName);
77  vtkGetStringMacro(FileName);
79 
83  int GetNumberOfCellArrays(void)
84  { return this->GetNumberOfSelectionArrays(this->CellDataArraySelection); }
85 
90  int GetCellArrayStatus(const char *name)
91  { return this->GetSelectionArrayStatus(this->CellDataArraySelection, name); }
92  void SetCellArrayStatus(const char *name, int status)
93  { this->SetSelectionArrayStatus(this->CellDataArraySelection, name, status); }
94 
99  const char *GetCellArrayName(int index)
100  { return this->GetSelectionArrayName(this->CellDataArraySelection, index); }
101 
106  { this->DisableAllSelectionArrays(this->CellDataArraySelection); }
108  { this->EnableAllSelectionArrays(this->CellDataArraySelection); }
109 
114  { return this->GetNumberOfSelectionArrays(this->PointDataArraySelection); }
115 
120  int GetPointArrayStatus(const char *name)
121  { return this->GetSelectionArrayStatus(this->PointDataArraySelection, name); }
122  void SetPointArrayStatus(const char *name, int status)
123  { this->SetSelectionArrayStatus(this->PointDataArraySelection,
124  name, status); }
125 
130  const char *GetPointArrayName(int index)
131  { return this->GetSelectionArrayName(this->PointDataArraySelection, index); }
132 
137  { this->DisableAllSelectionArrays(this->PointDataArraySelection); }
139  { this->EnableAllSelectionArrays(this->PointDataArraySelection); }
140 
145  { return this->GetNumberOfSelectionArrays(
146  this->LagrangianDataArraySelection); }
147 
153  { return this->GetSelectionArrayStatus(this->LagrangianDataArraySelection,
154  name); }
155  void SetLagrangianArrayStatus(const char *name, int status)
156  { this->SetSelectionArrayStatus(this->LagrangianDataArraySelection, name,
157  status); }
158 
163  const char* GetLagrangianArrayName(int index)
164  { return this->GetSelectionArrayName(this->LagrangianDataArraySelection,
165  index); }
166 
171  { this->DisableAllSelectionArrays(this->LagrangianDataArraySelection); }
173  { this->EnableAllSelectionArrays(this->LagrangianDataArraySelection); }
174 
179  { return this->GetNumberOfSelectionArrays(this->PatchDataArraySelection); }
180 
185  int GetPatchArrayStatus(const char *name)
186  { return this->GetSelectionArrayStatus(this->PatchDataArraySelection, name); }
187  void SetPatchArrayStatus(const char *name, int status)
188  { this->SetSelectionArrayStatus(this->PatchDataArraySelection, name,
189  status); }
190 
195  const char *GetPatchArrayName(int index)
196  { return this->GetSelectionArrayName(this->PatchDataArraySelection, index); }
197 
202  { this->DisableAllSelectionArrays(this->PatchDataArraySelection); }
204  { this->EnableAllSelectionArrays(this->PatchDataArraySelection); }
205 
207 
210  vtkSetMacro(CreateCellToPoint, int);
211  vtkGetMacro(CreateCellToPoint, int);
212  vtkBooleanMacro(CreateCellToPoint, int);
214 
216 
219  vtkSetMacro(CacheMesh, int);
220  vtkGetMacro(CacheMesh, int);
221  vtkBooleanMacro(CacheMesh, int);
223 
225 
228  vtkSetMacro(DecomposePolyhedra, int);
229  vtkGetMacro(DecomposePolyhedra, int);
230  vtkBooleanMacro(DecomposePolyhedra, int);
232 
233  // Option for reading old binary lagrangian/positions format
235 
241  vtkSetMacro(PositionsIsIn13Format, int);
242  vtkGetMacro(PositionsIsIn13Format, int);
243  vtkBooleanMacro(PositionsIsIn13Format, int);
245 
247 
251  vtkSetMacro(SkipZeroTime, bool);
252  vtkGetMacro(SkipZeroTime, bool);
253  vtkBooleanMacro(SkipZeroTime, bool);
255 
257 
260  vtkSetMacro(ListTimeStepsByControlDict, int);
261  vtkGetMacro(ListTimeStepsByControlDict, int);
262  vtkBooleanMacro(ListTimeStepsByControlDict, int);
264 
266 
269  vtkSetMacro(AddDimensionsToArrayNames, int);
270  vtkGetMacro(AddDimensionsToArrayNames, int);
271  vtkBooleanMacro(AddDimensionsToArrayNames, int);
273 
275 
278  vtkSetMacro(ReadZones, int);
279  vtkGetMacro(ReadZones, int);
280  vtkBooleanMacro(ReadZones, int);
282 
284 
287  virtual void SetUse64BitLabels(bool val);
288  vtkGetMacro(Use64BitLabels, bool)
289  vtkBooleanMacro(Use64BitLabels, bool)
291 
293 
298  virtual void SetUse64BitFloats(bool val);
299  vtkGetMacro(Use64BitFloats, bool)
300  vtkBooleanMacro(Use64BitFloats, bool)
302 
303  void SetRefresh() { this->Refresh = true; this->Modified(); }
304 
305  void SetParent(vtkOpenFOAMReader *parent) { this->Parent = parent; }
306  int MakeInformationVector(vtkInformationVector *, const vtkStdString &);
307  bool SetTimeValue(const double);
308  vtkDoubleArray *GetTimeValues();
309  int MakeMetaDataAtTimeStep(const bool);
310 
311  friend class vtkOpenFOAMReaderPrivate;
312 
313 protected:
314  // refresh flag
315  bool Refresh;
316 
317  // for creating cell-to-point translated data
319 
320  // for caching mesh
322 
323  // for decomposing polyhedra on-the-fly
325 
326  // for lagrangian/positions without extra data (OF 1.4 - 2.4)
328 
329  // for reading point/face/cell-Zones
331 
332  // Ignore 0/ directory
334 
335  // determine if time directories are listed according to controlDict
337 
338  // add dimensions to array names
340 
341  // Expect label size to be 64-bit integers instead of 32-bit.
343 
344  // Expect float data to be 64-bit floats instead of 32-bit.
345  // Note that vtkFloatArrays may still be used -- this just tells the reader how to
346  // parse the binary data.
348 
349  char *FileName;
352 
353  // DataArraySelection for Patch / Region Data
358 
359  // old selection status
364 
365  // preserved old information
376 
377  // paths to Lagrangians
379 
380  // number of reader instances
382  // index of the active reader
384 
386  ~vtkOpenFOAMReader() VTK_OVERRIDE;
387  int RequestInformation(vtkInformation *, vtkInformationVector **,
388  vtkInformationVector *) VTK_OVERRIDE;
389  int RequestData(vtkInformation *, vtkInformationVector **,
390  vtkInformationVector *) VTK_OVERRIDE;
391 
392  void CreateCasePath(vtkStdString &, vtkStdString &);
393  void SetTimeInformation(vtkInformationVector *, vtkDoubleArray *);
394  void CreateCharArrayFromString(vtkCharArray *, const char *, vtkStdString &);
395  void UpdateStatus();
396  void UpdateProgress(double);
397 
398 private:
399  vtkOpenFOAMReader *Parent;
400 
401  vtkOpenFOAMReader(const vtkOpenFOAMReader&) VTK_DELETE_FUNCTION;
402  void operator=(const vtkOpenFOAMReader&) VTK_DELETE_FUNCTION;
403 
404  int GetNumberOfSelectionArrays(vtkDataArraySelection *);
405  int GetSelectionArrayStatus(vtkDataArraySelection *, const char *);
406  void SetSelectionArrayStatus(vtkDataArraySelection *, const char *, int);
407  const char *GetSelectionArrayName(vtkDataArraySelection *, int);
408  void DisableAllSelectionArrays(vtkDataArraySelection *);
409  void EnableAllSelectionArrays(vtkDataArraySelection *);
410 
411  void AddSelectionNames(vtkDataArraySelection *, vtkStringArray *);
412 };
413 
414 #endif
int GetCellArrayStatus(const char *name)
Get/Set whether the cell array with the given name is to be read.
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:41
void SetParent(vtkOpenFOAMReader *parent)
void SetLagrangianArrayStatus(const char *name, int status)
int GetPatchArrayStatus(const char *name)
Get/Set whether the Patch with the given name is to be read.
void SetPointArrayStatus(const char *name, int status)
vtkMTimeType LagrangianSelectionMTimeOld
Store vtkAlgorithm input/output information.
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:300
vtkDataArraySelection * LagrangianDataArraySelection
int GetPointArrayStatus(const char *name)
Get/Set whether the point array with the given name is to be read.
vtkMTimeType CellSelectionMTimeOld
const char * GetCellArrayName(int index)
Get the name of the cell array with the given index in the input.
vtkStringArray * LagrangianPaths
vtkDataArraySelection * CellDataArraySelection
a vtkAbstractArray subclass for strings
const char * GetPatchArrayName(int index)
Get the name of the Patch with the given index in the input.
Superclass for algorithms that produce only vtkMultiBlockDataSet as output.
int GetNumberOfLagrangianArrays(void)
Get the number of Lagrangian arrays available in the input.
const char * GetLagrangianArrayName(int index)
Get the name of the Lagrangian array with the given index in the input.
dynamic, self-adjusting array of double
static vtkMultiBlockDataSetAlgorithm * New()
vtkStdString * FileNameOld
void DisableAllCellArrays()
Turn on/off all cell arrays.
dynamic, self-adjusting array of char
Definition: vtkCharArray.h:35
int GetNumberOfPatchArrays(void)
Get the number of Patches (including Internal Mesh) available in the input.
a simple class to control print indentation
Definition: vtkIndent.h:33
Store on/off settings for data arrays for a vtkSource.
vtkDataArraySelection * PointDataArraySelection
reads a dataset in OpenFOAM format
vtkGetStringMacro(ExtensionsString)
Returns a string listing all available extensions.
virtual void Modified()
Update the modification time for this object.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
vtkMTimeType PatchSelectionMTimeOld
void DisableAllPatchArrays()
Turn on/off all Patches including the Internal Mesh.
void DisableAllLagrangianArrays()
Turn on/off all Lagrangian arrays.
const char * GetPointArrayName(int index)
Get the name of the point array with the given index in the input.
int GetNumberOfPointArrays(void)
Get the number of point arrays available in the input.
create and manipulate ordered lists of objects
Definition: vtkCollection.h:48
void SetPatchArrayStatus(const char *name, int status)
vtkCharArray * CasePath
void DisableAllPointArrays()
Turn on/off all point arrays.
int GetLagrangianArrayStatus(const char *name)
Get/Set whether the Lagrangian array with the given name is to be read.
Store zero or more vtkInformation instances.
vtkCollection * Readers
vtkMTimeType PointSelectionMTimeOld
vtkBooleanMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
void SetCellArrayStatus(const char *name, int status)
vtkDataArraySelection * PatchDataArraySelection