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 =========================================================================*/
48 #ifndef vtkOpenFOAMReader_h
49 #define vtkOpenFOAMReader_h
50 
51 #include "vtkIOGeometryModule.h" // For export macro
53 
54 class vtkCollection;
55 class vtkCharArray;
57 class vtkDoubleArray;
58 class vtkStdString;
59 class vtkStringArray;
60 
61 class vtkOpenFOAMReaderPrivate;
62 
63 class VTKIOGEOMETRY_EXPORT vtkOpenFOAMReader : public vtkMultiBlockDataSetAlgorithm
64 {
65 public:
66  static vtkOpenFOAMReader *New();
68  void PrintSelf(ostream &, vtkIndent) override;
69 
73  int CanReadFile(const char *);
74 
76 
79  vtkSetStringMacro(FileName);
80  vtkGetStringMacro(FileName);
82 
87  { return this->GetNumberOfSelectionArrays(this->CellDataArraySelection); }
88 
93  int GetCellArrayStatus(const char *name)
94  { return this->GetSelectionArrayStatus(this->CellDataArraySelection, name); }
95  void SetCellArrayStatus(const char *name, int status)
96  { this->SetSelectionArrayStatus(this->CellDataArraySelection, name, status); }
97 
102  const char *GetCellArrayName(int index)
103  { return this->GetSelectionArrayName(this->CellDataArraySelection, index); }
104 
109  { this->DisableAllSelectionArrays(this->CellDataArraySelection); }
111  { this->EnableAllSelectionArrays(this->CellDataArraySelection); }
112 
117  { return this->GetNumberOfSelectionArrays(this->PointDataArraySelection); }
118 
123  int GetPointArrayStatus(const char *name)
124  { return this->GetSelectionArrayStatus(this->PointDataArraySelection, name); }
125  void SetPointArrayStatus(const char *name, int status)
126  { this->SetSelectionArrayStatus(this->PointDataArraySelection,
127  name, status); }
128 
133  const char *GetPointArrayName(int index)
134  { return this->GetSelectionArrayName(this->PointDataArraySelection, index); }
135 
140  { this->DisableAllSelectionArrays(this->PointDataArraySelection); }
142  { this->EnableAllSelectionArrays(this->PointDataArraySelection); }
143 
148  { return this->GetNumberOfSelectionArrays(
149  this->LagrangianDataArraySelection); }
150 
156  { return this->GetSelectionArrayStatus(this->LagrangianDataArraySelection,
157  name); }
158  void SetLagrangianArrayStatus(const char *name, int status)
159  { this->SetSelectionArrayStatus(this->LagrangianDataArraySelection, name,
160  status); }
161 
166  const char* GetLagrangianArrayName(int index)
167  { return this->GetSelectionArrayName(this->LagrangianDataArraySelection,
168  index); }
169 
174  { this->DisableAllSelectionArrays(this->LagrangianDataArraySelection); }
176  { this->EnableAllSelectionArrays(this->LagrangianDataArraySelection); }
177 
182  { return this->GetNumberOfSelectionArrays(this->PatchDataArraySelection); }
183 
188  int GetPatchArrayStatus(const char *name)
189  { return this->GetSelectionArrayStatus(this->PatchDataArraySelection, name); }
190  void SetPatchArrayStatus(const char *name, int status)
191  { this->SetSelectionArrayStatus(this->PatchDataArraySelection, name,
192  status); }
193 
198  const char *GetPatchArrayName(int index)
199  { return this->GetSelectionArrayName(this->PatchDataArraySelection, index); }
200 
205  { this->DisableAllSelectionArrays(this->PatchDataArraySelection); }
207  { this->EnableAllSelectionArrays(this->PatchDataArraySelection); }
208 
210 
213  vtkSetMacro(CreateCellToPoint, int);
214  vtkGetMacro(CreateCellToPoint, int);
215  vtkBooleanMacro(CreateCellToPoint, int);
217 
219 
222  vtkSetMacro(CacheMesh, int);
223  vtkGetMacro(CacheMesh, int);
224  vtkBooleanMacro(CacheMesh, int);
226 
228 
231  vtkSetMacro(DecomposePolyhedra, int);
232  vtkGetMacro(DecomposePolyhedra, int);
233  vtkBooleanMacro(DecomposePolyhedra, int);
235 
236  // Option for reading old binary lagrangian/positions format
238 
244  vtkSetMacro(PositionsIsIn13Format, int);
245  vtkGetMacro(PositionsIsIn13Format, int);
246  vtkBooleanMacro(PositionsIsIn13Format, int);
248 
250 
254  vtkSetMacro(SkipZeroTime, bool);
255  vtkGetMacro(SkipZeroTime, bool);
256  vtkBooleanMacro(SkipZeroTime, bool);
258 
260 
263  vtkSetMacro(ListTimeStepsByControlDict, int);
264  vtkGetMacro(ListTimeStepsByControlDict, int);
265  vtkBooleanMacro(ListTimeStepsByControlDict, int);
267 
269 
272  vtkSetMacro(AddDimensionsToArrayNames, int);
273  vtkGetMacro(AddDimensionsToArrayNames, int);
274  vtkBooleanMacro(AddDimensionsToArrayNames, int);
276 
278 
281  vtkSetMacro(ReadZones, int);
282  vtkGetMacro(ReadZones, int);
283  vtkBooleanMacro(ReadZones, int);
285 
287 
290  virtual void SetUse64BitLabels(bool val);
291  vtkGetMacro(Use64BitLabels, bool)
292  vtkBooleanMacro(Use64BitLabels, bool)
294 
296 
301  virtual void SetUse64BitFloats(bool val);
302  vtkGetMacro(Use64BitFloats, bool)
303  vtkBooleanMacro(Use64BitFloats, bool)
305 
306  void SetRefresh() { this->Refresh = true; this->Modified(); }
307 
308  void SetParent(vtkOpenFOAMReader *parent) { this->Parent = parent; }
309  int MakeInformationVector(vtkInformationVector *, const vtkStdString &);
310  bool SetTimeValue(const double);
311  vtkDoubleArray *GetTimeValues();
312  int MakeMetaDataAtTimeStep(const bool);
313 
314  friend class vtkOpenFOAMReaderPrivate;
315 
316 protected:
317  // refresh flag
318  bool Refresh;
319 
320  // for creating cell-to-point translated data
322 
323  // for caching mesh
325 
326  // for decomposing polyhedra on-the-fly
328 
329  // for lagrangian/positions without extra data (OF 1.4 - 2.4)
331 
332  // for reading point/face/cell-Zones
334 
335  // Ignore 0/ directory
337 
338  // determine if time directories are listed according to controlDict
340 
341  // add dimensions to array names
343 
344  // Expect label size to be 64-bit integers instead of 32-bit.
346 
347  // Expect float data to be 64-bit floats instead of 32-bit.
348  // Note that vtkFloatArrays may still be used -- this just tells the reader how to
349  // parse the binary data.
351 
352  char *FileName;
355 
356  // DataArraySelection for Patch / Region Data
361 
362  // old selection status
367 
368  // preserved old information
379 
380  // paths to Lagrangians
382 
383  // number of reader instances
385  // index of the active reader
387 
389  ~vtkOpenFOAMReader() override;
391  vtkInformationVector *) override;
393  vtkInformationVector *) override;
394 
395  void CreateCasePath(vtkStdString &, vtkStdString &);
396  void SetTimeInformation(vtkInformationVector *, vtkDoubleArray *);
397  void CreateCharArrayFromString(vtkCharArray *, const char *, vtkStdString &);
398  void UpdateStatus();
399  void UpdateProgress(double);
400 
401 private:
402  vtkOpenFOAMReader *Parent;
403 
404  vtkOpenFOAMReader(const vtkOpenFOAMReader&) = delete;
405  void operator=(const vtkOpenFOAMReader&) = delete;
406 
407  int GetNumberOfSelectionArrays(vtkDataArraySelection *);
408  int GetSelectionArrayStatus(vtkDataArraySelection *, const char *);
409  void SetSelectionArrayStatus(vtkDataArraySelection *, const char *, int);
410  const char *GetSelectionArrayName(vtkDataArraySelection *, int);
411  void DisableAllSelectionArrays(vtkDataArraySelection *);
412  void EnableAllSelectionArrays(vtkDataArraySelection *);
413 
414  void AddSelectionNames(vtkDataArraySelection *, vtkStringArray *);
415 };
416 
417 #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:40
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
int GetNumberOfCellArrays(void)
Get the number of cell arrays available in the input.
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.
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
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:38
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:39
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.
void UpdateProgress(double amount)
Update the progress of the process object.
int GetNumberOfPointArrays(void)
Get the number of point arrays available in the input.
create and manipulate ordered lists of objects
Definition: vtkCollection.h:51
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)
virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
vtkDataArraySelection * PatchDataArraySelection