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) override;
66 
70  int CanReadFile(const char *);
71 
73 
76  vtkSetStringMacro(FileName);
77  vtkGetStringMacro(FileName);
79 
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, vtkTypeBool);
211  vtkGetMacro(CreateCellToPoint, vtkTypeBool);
212  vtkBooleanMacro(CreateCellToPoint, vtkTypeBool);
214 
216 
219  vtkSetMacro(CacheMesh, vtkTypeBool);
220  vtkGetMacro(CacheMesh, vtkTypeBool);
221  vtkBooleanMacro(CacheMesh, vtkTypeBool);
223 
225 
228  vtkSetMacro(DecomposePolyhedra, vtkTypeBool);
229  vtkGetMacro(DecomposePolyhedra, vtkTypeBool);
230  vtkBooleanMacro(DecomposePolyhedra, vtkTypeBool);
232 
233  // Option for reading old binary lagrangian/positions format
235 
241  vtkSetMacro(PositionsIsIn13Format, vtkTypeBool);
242  vtkGetMacro(PositionsIsIn13Format, vtkTypeBool);
243  vtkBooleanMacro(PositionsIsIn13Format, vtkTypeBool);
245 
247 
251  vtkSetMacro(SkipZeroTime, bool);
252  vtkGetMacro(SkipZeroTime, bool);
253  vtkBooleanMacro(SkipZeroTime, bool);
255 
257 
260  vtkSetMacro(ListTimeStepsByControlDict, vtkTypeBool);
261  vtkGetMacro(ListTimeStepsByControlDict, vtkTypeBool);
262  vtkBooleanMacro(ListTimeStepsByControlDict, vtkTypeBool);
264 
266 
269  vtkSetMacro(AddDimensionsToArrayNames, vtkTypeBool);
270  vtkGetMacro(AddDimensionsToArrayNames, vtkTypeBool);
271  vtkBooleanMacro(AddDimensionsToArrayNames, vtkTypeBool);
273 
275 
278  vtkSetMacro(ReadZones, vtkTypeBool);
279  vtkGetMacro(ReadZones, vtkTypeBool);
280  vtkBooleanMacro(ReadZones, vtkTypeBool);
282 
284 
287  virtual void SetUse64BitLabels(bool val);
288  vtkGetMacro(Use64BitLabels, bool)
289  vtkBooleanMacro(Use64BitLabels, bool)
291 
293 
297  vtkGetMacro(CopyDataToCellZones, bool)
298  vtkSetMacro(CopyDataToCellZones, bool)
299  vtkBooleanMacro(CopyDataToCellZones, bool)
301 
303 
308  virtual void SetUse64BitFloats(bool val);
309  vtkGetMacro(Use64BitFloats, bool)
310  vtkBooleanMacro(Use64BitFloats, bool)
312 
313  void SetRefresh() { this->Refresh = true; this->Modified(); }
314 
315  void SetParent(vtkOpenFOAMReader *parent) { this->Parent = parent; }
316  int MakeInformationVector(vtkInformationVector *, const vtkStdString &);
317  bool SetTimeValue(const double);
318  vtkDoubleArray *GetTimeValues();
319  int MakeMetaDataAtTimeStep(const bool);
320 
321  friend class vtkOpenFOAMReaderPrivate;
322 
323 protected:
324  // refresh flag
325  bool Refresh;
326 
327  // for creating cell-to-point translated data
329 
330  // for caching mesh
332 
333  // for decomposing polyhedra on-the-fly
335 
336  // for lagrangian/positions without extra data (OF 1.4 - 2.4)
338 
339  // for reading point/face/cell-Zones
341 
342  // Ignore 0/ directory
344 
345  // determine if time directories are listed according to controlDict
347 
348  // add dimensions to array names
350 
351  // Expect label size to be 64-bit integers instead of 32-bit.
353 
354  // Expect float data to be 64-bit floats instead of 32-bit.
355  // Note that vtkFloatArrays may still be used -- this just tells the reader how to
356  // parse the binary data.
358 
359  // The data of internal mesh are copied to cell zones
361 
362  char *FileName;
365 
366  // DataArraySelection for Patch / Region Data
371 
372  // old selection status
377 
378  // preserved old information
389 
390  // paths to Lagrangians
392 
393  // number of reader instances
395  // index of the active reader
397 
399  ~vtkOpenFOAMReader() override;
401  vtkInformationVector *) override;
403  vtkInformationVector *) override;
404 
405  void CreateCasePath(vtkStdString &, vtkStdString &);
406  void SetTimeInformation(vtkInformationVector *, vtkDoubleArray *);
407  void CreateCharArrayFromString(vtkCharArray *, const char *, vtkStdString &);
408  void UpdateStatus();
409  void UpdateProgress(double);
410 
411 private:
412  vtkOpenFOAMReader *Parent;
413 
414  vtkOpenFOAMReader(const vtkOpenFOAMReader&) = delete;
415  void operator=(const vtkOpenFOAMReader&) = delete;
416 
417  int GetNumberOfSelectionArrays(vtkDataArraySelection *);
418  int GetSelectionArrayStatus(vtkDataArraySelection *, const char *);
419  void SetSelectionArrayStatus(vtkDataArraySelection *, const char *, int);
420  const char *GetSelectionArrayName(vtkDataArraySelection *, int);
421  void DisableAllSelectionArrays(vtkDataArraySelection *);
422  void EnableAllSelectionArrays(vtkDataArraySelection *);
423 
424  void AddSelectionNames(vtkDataArraySelection *, vtkStringArray *);
425 };
426 
427 #endif
vtkOpenFOAMReader::LagrangianPaths
vtkStringArray * LagrangianPaths
Definition: vtkOpenFOAMReader.h:391
vtkOpenFOAMReader::CreateCellToPointOld
int CreateCellToPointOld
Definition: vtkOpenFOAMReader.h:382
vtkAlgorithm::UpdateProgress
void UpdateProgress(double amount)
Update the progress of the process object.
vtkOpenFOAMReader::GetPatchArrayName
const char * GetPatchArrayName(int index)
Get the name of the Patch with the given index in the input.
Definition: vtkOpenFOAMReader.h:195
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:35
vtkOpenFOAMReader::GetCellArrayStatus
int GetCellArrayStatus(const char *name)
Get/Set whether the cell array with the given name is to be read.
Definition: vtkOpenFOAMReader.h:90
vtkOpenFOAMReader::SetCellArrayStatus
void SetCellArrayStatus(const char *name, int status)
Definition: vtkOpenFOAMReader.h:92
vtkOpenFOAMReader::Use64BitLabels
bool Use64BitLabels
Definition: vtkOpenFOAMReader.h:352
vtkOpenFOAMReader::GetNumberOfLagrangianArrays
int GetNumberOfLagrangianArrays(void)
Get the number of Lagrangian arrays available in the input.
Definition: vtkOpenFOAMReader.h:144
vtkOpenFOAMReader::Use64BitLabelsOld
bool Use64BitLabelsOld
Definition: vtkOpenFOAMReader.h:387
vtkObject::Modified
virtual void Modified()
Update the modification time for this object.
vtkOpenFOAMReader::CreateCellToPoint
vtkTypeBool CreateCellToPoint
Definition: vtkOpenFOAMReader.h:328
vtkOpenFOAMReader::SetParent
void SetParent(vtkOpenFOAMReader *parent)
Definition: vtkOpenFOAMReader.h:315
vtkOpenFOAMReader::EnableAllPatchArrays
void EnableAllPatchArrays()
Definition: vtkOpenFOAMReader.h:203
vtkOpenFOAMReader::FileNameOld
vtkStdString * FileNameOld
Definition: vtkOpenFOAMReader.h:379
vtkMultiBlockDataSetAlgorithm::New
static vtkMultiBlockDataSetAlgorithm * New()
vtkOpenFOAMReader::LagrangianSelectionMTimeOld
vtkMTimeType LagrangianSelectionMTimeOld
Definition: vtkOpenFOAMReader.h:376
vtkOpenFOAMReader::Use64BitFloats
bool Use64BitFloats
Definition: vtkOpenFOAMReader.h:357
vtkOpenFOAMReader::Refresh
bool Refresh
Definition: vtkOpenFOAMReader.h:325
vtkOpenFOAMReader::SkipZeroTimeOld
bool SkipZeroTimeOld
Definition: vtkOpenFOAMReader.h:380
vtkOpenFOAMReader::SetLagrangianArrayStatus
void SetLagrangianArrayStatus(const char *name, int status)
Definition: vtkOpenFOAMReader.h:155
vtkOpenFOAMReader::GetPatchArrayStatus
int GetPatchArrayStatus(const char *name)
Get/Set whether the Patch with the given name is to be read.
Definition: vtkOpenFOAMReader.h:185
vtkOpenFOAMReader::SkipZeroTime
bool SkipZeroTime
Definition: vtkOpenFOAMReader.h:343
vtkMultiBlockDataSetAlgorithm::RequestData
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
Definition: vtkMultiBlockDataSetAlgorithm.h:88
vtkDataArraySelection
Store on/off settings for data arrays for a vtkSource.
Definition: vtkDataArraySelection.h:34
vtkOpenFOAMReader::EnableAllPointArrays
void EnableAllPointArrays()
Definition: vtkOpenFOAMReader.h:138
vtkCharArray
dynamic, self-adjusting array of char
Definition: vtkCharArray.h:35
vtkOpenFOAMReader::PatchSelectionMTimeOld
vtkMTimeType PatchSelectionMTimeOld
Definition: vtkOpenFOAMReader.h:373
vtkOpenFOAMReader::GetPointArrayStatus
int GetPointArrayStatus(const char *name)
Get/Set whether the point array with the given name is to be read.
Definition: vtkOpenFOAMReader.h:120
vtkOpenFOAMReader::PointDataArraySelection
vtkDataArraySelection * PointDataArraySelection
Definition: vtkOpenFOAMReader.h:369
vtkOpenFOAMReader::CellSelectionMTimeOld
vtkMTimeType CellSelectionMTimeOld
Definition: vtkOpenFOAMReader.h:374
vtkCollection
create and manipulate ordered lists of objects
Definition: vtkCollection.h:48
vtkOpenFOAMReader::EnableAllCellArrays
void EnableAllCellArrays()
Definition: vtkOpenFOAMReader.h:107
vtkOpenFOAMReader::ListTimeStepsByControlDict
vtkTypeBool ListTimeStepsByControlDict
Definition: vtkOpenFOAMReader.h:346
vtkOpenFOAMReader::GetPointArrayName
const char * GetPointArrayName(int index)
Get the name of the point array with the given index in the input.
Definition: vtkOpenFOAMReader.h:130
vtkOpenFOAMReader::CacheMesh
vtkTypeBool CacheMesh
Definition: vtkOpenFOAMReader.h:331
vtkOpenFOAMReader::PositionsIsIn13FormatOld
int PositionsIsIn13FormatOld
Definition: vtkOpenFOAMReader.h:384
vtkOpenFOAMReader::CellDataArraySelection
vtkDataArraySelection * CellDataArraySelection
Definition: vtkOpenFOAMReader.h:368
vtkOpenFOAMReader::PositionsIsIn13Format
vtkTypeBool PositionsIsIn13Format
Definition: vtkOpenFOAMReader.h:337
vtkOpenFOAMReader::SetPatchArrayStatus
void SetPatchArrayStatus(const char *name, int status)
Definition: vtkOpenFOAMReader.h:187
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkOpenFOAMReader::DisableAllCellArrays
void DisableAllCellArrays()
Turn on/off all cell arrays.
Definition: vtkOpenFOAMReader.h:105
vtkOpenFOAMReader::FileName
char * FileName
Definition: vtkOpenFOAMReader.h:362
vtkOpenFOAMReader::PointSelectionMTimeOld
vtkMTimeType PointSelectionMTimeOld
Definition: vtkOpenFOAMReader.h:375
vtkOpenFOAMReader::AddDimensionsToArrayNames
vtkTypeBool AddDimensionsToArrayNames
Definition: vtkOpenFOAMReader.h:349
vtkMultiBlockDataSetAlgorithm.h
vtkOpenFOAMReader::GetLagrangianArrayName
const char * GetLagrangianArrayName(int index)
Get the name of the Lagrangian array with the given index in the input.
Definition: vtkOpenFOAMReader.h:163
vtkOpenFOAMReader::CasePath
vtkCharArray * CasePath
Definition: vtkOpenFOAMReader.h:363
vtkOpenFOAMReader::CurrentReaderIndex
int CurrentReaderIndex
Definition: vtkOpenFOAMReader.h:396
vtkX3D::name
Definition: vtkX3D.h:219
vtkOpenFOAMReader::EnableAllLagrangianArrays
void EnableAllLagrangianArrays()
Definition: vtkOpenFOAMReader.h:172
vtkOpenFOAMReader::CopyDataToCellZones
bool CopyDataToCellZones
Definition: vtkOpenFOAMReader.h:360
vtkOpenFOAMReader::Readers
vtkCollection * Readers
Definition: vtkOpenFOAMReader.h:364
vtkOpenFOAMReader
reads a dataset in OpenFOAM format
Definition: vtkOpenFOAMReader.h:60
vtkMultiBlockDataSetAlgorithm::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:80
vtkOpenFOAMReader::GetNumberOfPatchArrays
int GetNumberOfPatchArrays(void)
Get the number of Patches (including Internal Mesh) available in the input.
Definition: vtkOpenFOAMReader.h:178
vtkOpenFOAMReader::DecomposePolyhedra
vtkTypeBool DecomposePolyhedra
Definition: vtkOpenFOAMReader.h:334
vtkOpenFOAMReader::PatchDataArraySelection
vtkDataArraySelection * PatchDataArraySelection
Definition: vtkOpenFOAMReader.h:367
vtkOpenFOAMReader::ReadZonesOld
int ReadZonesOld
Definition: vtkOpenFOAMReader.h:386
vtkOpenFOAMReader::ListTimeStepsByControlDictOld
int ListTimeStepsByControlDictOld
Definition: vtkOpenFOAMReader.h:381
vtkOpenFOAMReader::Use64BitFloatsOld
bool Use64BitFloatsOld
Definition: vtkOpenFOAMReader.h:388
vtkStringArray
a vtkAbstractArray subclass for strings
Definition: vtkStringArray.h:36
vtkDoubleArray
dynamic, self-adjusting array of double
Definition: vtkDoubleArray.h:35
vtkOpenFOAMReader::SetPointArrayStatus
void SetPointArrayStatus(const char *name, int status)
Definition: vtkOpenFOAMReader.h:122
vtkOpenFOAMReader::DecomposePolyhedraOld
int DecomposePolyhedraOld
Definition: vtkOpenFOAMReader.h:383
vtkStdString
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:34
vtkOpenFOAMReader::GetNumberOfPointArrays
int GetNumberOfPointArrays(void)
Get the number of point arrays available in the input.
Definition: vtkOpenFOAMReader.h:113
vtkOpenFOAMReader::GetNumberOfCellArrays
int GetNumberOfCellArrays(void)
Get the number of cell arrays available in the input.
Definition: vtkOpenFOAMReader.h:83
vtkOpenFOAMReader::LagrangianDataArraySelection
vtkDataArraySelection * LagrangianDataArraySelection
Definition: vtkOpenFOAMReader.h:370
vtkX3D::index
Definition: vtkX3D.h:246
vtkOpenFOAMReader::NumberOfReaders
int NumberOfReaders
Definition: vtkOpenFOAMReader.h:394
vtkOpenFOAMReader::DisableAllPointArrays
void DisableAllPointArrays()
Turn on/off all point arrays.
Definition: vtkOpenFOAMReader.h:136
vtkOpenFOAMReader::AddDimensionsToArrayNamesOld
int AddDimensionsToArrayNamesOld
Definition: vtkOpenFOAMReader.h:385
vtkOpenFOAMReader::GetCellArrayName
const char * GetCellArrayName(int index)
Get the name of the cell array with the given index in the input.
Definition: vtkOpenFOAMReader.h:99
vtkOpenFOAMReader::DisableAllPatchArrays
void DisableAllPatchArrays()
Turn on/off all Patches including the Internal Mesh.
Definition: vtkOpenFOAMReader.h:201
vtkMultiBlockDataSetAlgorithm::RequestInformation
virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
Definition: vtkMultiBlockDataSetAlgorithm.h:80
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkOpenFOAMReader::GetLagrangianArrayStatus
int GetLagrangianArrayStatus(const char *name)
Get/Set whether the Lagrangian array with the given name is to be read.
Definition: vtkOpenFOAMReader.h:152
vtkOpenFOAMReader::DisableAllLagrangianArrays
void DisableAllLagrangianArrays()
Turn on/off all Lagrangian arrays.
Definition: vtkOpenFOAMReader.h:170
vtkOpenFOAMReader::ReadZones
vtkTypeBool ReadZones
Definition: vtkOpenFOAMReader.h:340
vtkMTimeType
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:302
vtkMultiBlockDataSetAlgorithm
Superclass for algorithms that produce only vtkMultiBlockDataSet as output.
Definition: vtkMultiBlockDataSetAlgorithm.h:32