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 =========================================================================*/
44 #ifndef vtkOpenFOAMReader_h
45 #define vtkOpenFOAMReader_h
46 
47 #include "vtkIOGeometryModule.h" // For export macro
49 
50 class vtkCollection;
51 class vtkCharArray;
53 class vtkDoubleArray;
54 class vtkStdString;
55 class vtkStringArray;
56 
57 class vtkOpenFOAMReaderPrivate;
58 
59 class VTKIOGEOMETRY_EXPORT vtkOpenFOAMReader : public vtkMultiBlockDataSetAlgorithm
60 {
61 public:
62  static vtkOpenFOAMReader *New();
64  void PrintSelf(ostream &, vtkIndent);
65 
69  int CanReadFile(const char *);
70 
72 
75  vtkSetStringMacro(FileName);
76  vtkGetStringMacro(FileName);
78 
83  { return this->GetNumberOfSelectionArrays(this->CellDataArraySelection); }
84 
89  int GetCellArrayStatus(const char *name)
90  { return this->GetSelectionArrayStatus(this->CellDataArraySelection, name); }
91  void SetCellArrayStatus(const char *name, int status)
92  { this->SetSelectionArrayStatus(this->CellDataArraySelection, name, status); }
93 
98  const char *GetCellArrayName(int index)
99  { return this->GetSelectionArrayName(this->CellDataArraySelection, index); }
100 
105  { this->DisableAllSelectionArrays(this->CellDataArraySelection); }
107  { this->EnableAllSelectionArrays(this->CellDataArraySelection); }
108 
113  { return this->GetNumberOfSelectionArrays(this->PointDataArraySelection); }
114 
119  int GetPointArrayStatus(const char *name)
120  { return this->GetSelectionArrayStatus(this->PointDataArraySelection, name); }
121  void SetPointArrayStatus(const char *name, int status)
122  { this->SetSelectionArrayStatus(this->PointDataArraySelection,
123  name, status); }
124 
129  const char *GetPointArrayName(int index)
130  { return this->GetSelectionArrayName(this->PointDataArraySelection, index); }
131 
136  { this->DisableAllSelectionArrays(this->PointDataArraySelection); }
138  { this->EnableAllSelectionArrays(this->PointDataArraySelection); }
139 
144  { return this->GetNumberOfSelectionArrays(
145  this->LagrangianDataArraySelection); }
146 
152  { return this->GetSelectionArrayStatus(this->LagrangianDataArraySelection,
153  name); }
154  void SetLagrangianArrayStatus(const char *name, int status)
155  { this->SetSelectionArrayStatus(this->LagrangianDataArraySelection, name,
156  status); }
157 
162  const char* GetLagrangianArrayName(int index)
163  { return this->GetSelectionArrayName(this->LagrangianDataArraySelection,
164  index); }
165 
170  { this->DisableAllSelectionArrays(this->LagrangianDataArraySelection); }
172  { this->EnableAllSelectionArrays(this->LagrangianDataArraySelection); }
173 
178  { return this->GetNumberOfSelectionArrays(this->PatchDataArraySelection); }
179 
184  int GetPatchArrayStatus(const char *name)
185  { return this->GetSelectionArrayStatus(this->PatchDataArraySelection, name); }
186  void SetPatchArrayStatus(const char *name, int status)
187  { this->SetSelectionArrayStatus(this->PatchDataArraySelection, name,
188  status); }
189 
194  const char *GetPatchArrayName(int index)
195  { return this->GetSelectionArrayName(this->PatchDataArraySelection, index); }
196 
201  { this->DisableAllSelectionArrays(this->PatchDataArraySelection); }
203  { this->EnableAllSelectionArrays(this->PatchDataArraySelection); }
204 
206 
209  vtkSetMacro(CreateCellToPoint,int);
210  vtkGetMacro(CreateCellToPoint,int);
211  vtkBooleanMacro(CreateCellToPoint, int);
213 
215 
218  vtkSetMacro(CacheMesh, int);
219  vtkGetMacro(CacheMesh, int);
220  vtkBooleanMacro(CacheMesh, int);
222 
224 
227  vtkSetMacro(DecomposePolyhedra, int);
228  vtkGetMacro(DecomposePolyhedra, int);
229  vtkBooleanMacro(DecomposePolyhedra, int);
231 
232  // Option for reading old binary lagrangian/positions format
234 
237  vtkSetMacro(PositionsIsIn13Format, int);
238  vtkGetMacro(PositionsIsIn13Format, int);
239  vtkBooleanMacro(PositionsIsIn13Format, int);
241 
243 
246  vtkSetMacro(ListTimeStepsByControlDict, int);
247  vtkGetMacro(ListTimeStepsByControlDict, int);
248  vtkBooleanMacro(ListTimeStepsByControlDict, int);
250 
252 
255  vtkSetMacro(AddDimensionsToArrayNames, int);
256  vtkGetMacro(AddDimensionsToArrayNames, int);
257  vtkBooleanMacro(AddDimensionsToArrayNames, int);
259 
261 
264  vtkSetMacro(ReadZones, int);
265  vtkGetMacro(ReadZones, int);
266  vtkBooleanMacro(ReadZones, int);
268 
270 
273  vtkSetMacro(Use64BitLabels, bool)
274  vtkGetMacro(Use64BitLabels, bool)
275  vtkBooleanMacro(Use64BitLabels, bool)
277 
278  void SetRefresh() { this->Refresh = true; this->Modified(); }
279 
280  void SetParent(vtkOpenFOAMReader *parent) { this->Parent = parent; }
281  int MakeInformationVector(vtkInformationVector *, const vtkStdString &);
282  bool SetTimeValue(const double);
283  vtkDoubleArray *GetTimeValues();
284  int MakeMetaDataAtTimeStep(const bool);
285 
286  friend class vtkOpenFOAMReaderPrivate;
287 
288 protected:
289  // refresh flag
290  bool Refresh;
291 
292  // for creating cell-to-point translated data
294 
295  // for caching mesh
297 
298  // for decomposing polyhedra on-the-fly
300 
301  // for reading old binary lagrangian/positions format
303 
304  // for reading point/face/cell-Zones
306 
307  // determine if time directories are listed according to controlDict
309 
310  // add dimensions to array names
312 
313  // Expect label size to be 64-bit integers instead of the default 32.
315 
316  char *FileName;
319 
320  // DataArraySelection for Patch / Region Data
325 
326  // old selection status
331 
332  // preserved old information
340 
341  // paths to Lagrangians
343 
344  // number of reader instances
346  // index of the active reader
348 
355 
356  void CreateCasePath(vtkStdString &, vtkStdString &);
357  void SetTimeInformation(vtkInformationVector *, vtkDoubleArray *);
358  void CreateCharArrayFromString(vtkCharArray *, const char *, vtkStdString &);
359  void UpdateStatus();
360  void UpdateProgress(double);
361 
362 private:
363  vtkOpenFOAMReader *Parent;
364 
365  vtkOpenFOAMReader(const vtkOpenFOAMReader&) VTK_DELETE_FUNCTION;
366  void operator=(const vtkOpenFOAMReader&) VTK_DELETE_FUNCTION;
367 
368  int GetNumberOfSelectionArrays(vtkDataArraySelection *);
369  int GetSelectionArrayStatus(vtkDataArraySelection *, const char *);
370  void SetSelectionArrayStatus(vtkDataArraySelection *, const char *, int);
371  const char *GetSelectionArrayName(vtkDataArraySelection *, int);
372  void DisableAllSelectionArrays(vtkDataArraySelection *);
373  void EnableAllSelectionArrays(vtkDataArraySelection *);
374 
375  void AddSelectionNames(vtkDataArraySelection *, vtkStringArray *);
376 };
377 
378 #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:47
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.
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.
vtkTypeUInt64 vtkMTimeType
Definition: vtkType.h:248
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 unsorted 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