VTK  9.0.1
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  {
85  return this->GetNumberOfSelectionArrays(this->CellDataArraySelection);
86  }
87 
92  int GetCellArrayStatus(const char* name)
93  {
94  return this->GetSelectionArrayStatus(this->CellDataArraySelection, name);
95  }
96  void SetCellArrayStatus(const char* name, int status)
97  {
98  this->SetSelectionArrayStatus(this->CellDataArraySelection, name, status);
99  }
100 
105  const char* GetCellArrayName(int index)
106  {
107  return this->GetSelectionArrayName(this->CellDataArraySelection, index);
108  }
109 
113  void DisableAllCellArrays() { this->DisableAllSelectionArrays(this->CellDataArraySelection); }
114  void EnableAllCellArrays() { this->EnableAllSelectionArrays(this->CellDataArraySelection); }
115 
120  {
121  return this->GetNumberOfSelectionArrays(this->PointDataArraySelection);
122  }
123 
128  int GetPointArrayStatus(const char* name)
129  {
130  return this->GetSelectionArrayStatus(this->PointDataArraySelection, name);
131  }
132  void SetPointArrayStatus(const char* name, int status)
133  {
134  this->SetSelectionArrayStatus(this->PointDataArraySelection, name, status);
135  }
136 
141  const char* GetPointArrayName(int index)
142  {
143  return this->GetSelectionArrayName(this->PointDataArraySelection, index);
144  }
145 
149  void DisableAllPointArrays() { this->DisableAllSelectionArrays(this->PointDataArraySelection); }
150  void EnableAllPointArrays() { this->EnableAllSelectionArrays(this->PointDataArraySelection); }
151 
156  {
157  return this->GetNumberOfSelectionArrays(this->LagrangianDataArraySelection);
158  }
159 
165  {
166  return this->GetSelectionArrayStatus(this->LagrangianDataArraySelection, name);
167  }
168  void SetLagrangianArrayStatus(const char* name, int status)
169  {
170  this->SetSelectionArrayStatus(this->LagrangianDataArraySelection, name, status);
171  }
172 
177  const char* GetLagrangianArrayName(int index)
178  {
179  return this->GetSelectionArrayName(this->LagrangianDataArraySelection, index);
180  }
181 
186  {
187  this->DisableAllSelectionArrays(this->LagrangianDataArraySelection);
188  }
190  {
191  this->EnableAllSelectionArrays(this->LagrangianDataArraySelection);
192  }
193 
198  {
199  return this->GetNumberOfSelectionArrays(this->PatchDataArraySelection);
200  }
201 
206  int GetPatchArrayStatus(const char* name)
207  {
208  return this->GetSelectionArrayStatus(this->PatchDataArraySelection, name);
209  }
210  void SetPatchArrayStatus(const char* name, int status)
211  {
212  this->SetSelectionArrayStatus(this->PatchDataArraySelection, name, status);
213  }
214 
219  const char* GetPatchArrayName(int index)
220  {
221  return this->GetSelectionArrayName(this->PatchDataArraySelection, index);
222  }
223 
227  void DisableAllPatchArrays() { this->DisableAllSelectionArrays(this->PatchDataArraySelection); }
228  void EnableAllPatchArrays() { this->EnableAllSelectionArrays(this->PatchDataArraySelection); }
229 
231 
234  vtkSetMacro(CreateCellToPoint, vtkTypeBool);
235  vtkGetMacro(CreateCellToPoint, vtkTypeBool);
236  vtkBooleanMacro(CreateCellToPoint, vtkTypeBool);
238 
240 
243  vtkSetMacro(CacheMesh, vtkTypeBool);
244  vtkGetMacro(CacheMesh, vtkTypeBool);
245  vtkBooleanMacro(CacheMesh, vtkTypeBool);
247 
249 
252  vtkSetMacro(DecomposePolyhedra, vtkTypeBool);
253  vtkGetMacro(DecomposePolyhedra, vtkTypeBool);
254  vtkBooleanMacro(DecomposePolyhedra, vtkTypeBool);
256 
257  // Option for reading old binary lagrangian/positions format
259 
265  vtkSetMacro(PositionsIsIn13Format, vtkTypeBool);
266  vtkGetMacro(PositionsIsIn13Format, vtkTypeBool);
267  vtkBooleanMacro(PositionsIsIn13Format, vtkTypeBool);
269 
271 
275  vtkSetMacro(SkipZeroTime, bool);
276  vtkGetMacro(SkipZeroTime, bool);
277  vtkBooleanMacro(SkipZeroTime, bool);
279 
281 
284  vtkSetMacro(ListTimeStepsByControlDict, vtkTypeBool);
285  vtkGetMacro(ListTimeStepsByControlDict, vtkTypeBool);
286  vtkBooleanMacro(ListTimeStepsByControlDict, vtkTypeBool);
288 
290 
293  vtkSetMacro(AddDimensionsToArrayNames, vtkTypeBool);
294  vtkGetMacro(AddDimensionsToArrayNames, vtkTypeBool);
295  vtkBooleanMacro(AddDimensionsToArrayNames, vtkTypeBool);
297 
299 
302  vtkSetMacro(ReadZones, vtkTypeBool);
303  vtkGetMacro(ReadZones, vtkTypeBool);
304  vtkBooleanMacro(ReadZones, vtkTypeBool);
306 
308 
311  virtual void SetUse64BitLabels(bool val);
312  vtkGetMacro(Use64BitLabels, bool);
313  vtkBooleanMacro(Use64BitLabels, bool);
315 
317 
321  vtkGetMacro(CopyDataToCellZones, bool);
322  vtkSetMacro(CopyDataToCellZones, bool);
323  vtkBooleanMacro(CopyDataToCellZones, bool);
325 
327 
332  virtual void SetUse64BitFloats(bool val);
333  vtkGetMacro(Use64BitFloats, bool);
334  vtkBooleanMacro(Use64BitFloats, bool);
336 
337  void SetRefresh()
338  {
339  this->Refresh = true;
340  this->Modified();
341  }
342 
343  void SetParent(vtkOpenFOAMReader* parent) { this->Parent = parent; }
344  int MakeInformationVector(vtkInformationVector*, const vtkStdString&);
345  bool SetTimeValue(const double);
346  vtkDoubleArray* GetTimeValues();
347  int MakeMetaDataAtTimeStep(const bool);
348 
349  friend class vtkOpenFOAMReaderPrivate;
350 
351 protected:
352  // refresh flag
353  bool Refresh;
354 
355  // for creating cell-to-point translated data
357 
358  // for caching mesh
360 
361  // for decomposing polyhedra on-the-fly
363 
364  // for lagrangian/positions without extra data (OF 1.4 - 2.4)
366 
367  // for reading point/face/cell-Zones
369 
370  // Ignore 0/ directory
372 
373  // determine if time directories are listed according to controlDict
375 
376  // add dimensions to array names
378 
379  // Expect label size to be 64-bit integers instead of 32-bit.
381 
382  // Expect float data to be 64-bit floats instead of 32-bit.
383  // Note that vtkFloatArrays may still be used -- this just tells the reader how to
384  // parse the binary data.
386 
387  // The data of internal mesh are copied to cell zones
389 
390  char* FileName;
393 
394  // DataArraySelection for Patch / Region Data
399 
400  // old selection status
405 
406  // preserved old information
417 
418  // paths to Lagrangians
420 
421  // number of reader instances
423  // index of the active reader
425 
427  ~vtkOpenFOAMReader() override;
430 
431  void CreateCasePath(vtkStdString&, vtkStdString&);
432  void SetTimeInformation(vtkInformationVector*, vtkDoubleArray*);
433  void CreateCharArrayFromString(vtkCharArray*, const char*, vtkStdString&);
434  void UpdateStatus();
435  void UpdateProgress(double);
436 
437 private:
438  vtkOpenFOAMReader* Parent;
439 
440  vtkOpenFOAMReader(const vtkOpenFOAMReader&) = delete;
441  void operator=(const vtkOpenFOAMReader&) = delete;
442 
443  int GetNumberOfSelectionArrays(vtkDataArraySelection*);
444  int GetSelectionArrayStatus(vtkDataArraySelection*, const char*);
445  void SetSelectionArrayStatus(vtkDataArraySelection*, const char*, int);
446  const char* GetSelectionArrayName(vtkDataArraySelection*, int);
447  void DisableAllSelectionArrays(vtkDataArraySelection*);
448  void EnableAllSelectionArrays(vtkDataArraySelection*);
449 
450  void AddSelectionNames(vtkDataArraySelection*, vtkStringArray*);
451 };
452 
453 #endif
vtkOpenFOAMReader::LagrangianPaths
vtkStringArray * LagrangianPaths
Definition: vtkOpenFOAMReader.h:419
vtkOpenFOAMReader::CreateCellToPointOld
int CreateCellToPointOld
Definition: vtkOpenFOAMReader.h:410
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:219
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:92
vtkOpenFOAMReader::SetCellArrayStatus
void SetCellArrayStatus(const char *name, int status)
Definition: vtkOpenFOAMReader.h:96
vtkOpenFOAMReader::Use64BitLabels
bool Use64BitLabels
Definition: vtkOpenFOAMReader.h:380
vtkOpenFOAMReader::GetNumberOfLagrangianArrays
int GetNumberOfLagrangianArrays(void)
Get the number of Lagrangian arrays available in the input.
Definition: vtkOpenFOAMReader.h:155
vtkOpenFOAMReader::Use64BitLabelsOld
bool Use64BitLabelsOld
Definition: vtkOpenFOAMReader.h:415
vtkObject::Modified
virtual void Modified()
Update the modification time for this object.
vtkOpenFOAMReader::CreateCellToPoint
vtkTypeBool CreateCellToPoint
Definition: vtkOpenFOAMReader.h:356
vtkOpenFOAMReader::SetParent
void SetParent(vtkOpenFOAMReader *parent)
Definition: vtkOpenFOAMReader.h:343
vtkOpenFOAMReader::EnableAllPatchArrays
void EnableAllPatchArrays()
Definition: vtkOpenFOAMReader.h:228
vtkOpenFOAMReader::FileNameOld
vtkStdString * FileNameOld
Definition: vtkOpenFOAMReader.h:407
vtkMultiBlockDataSetAlgorithm::New
static vtkMultiBlockDataSetAlgorithm * New()
vtkOpenFOAMReader::LagrangianSelectionMTimeOld
vtkMTimeType LagrangianSelectionMTimeOld
Definition: vtkOpenFOAMReader.h:404
vtkOpenFOAMReader::Use64BitFloats
bool Use64BitFloats
Definition: vtkOpenFOAMReader.h:385
vtkOpenFOAMReader::Refresh
bool Refresh
Definition: vtkOpenFOAMReader.h:353
vtkOpenFOAMReader::SkipZeroTimeOld
bool SkipZeroTimeOld
Definition: vtkOpenFOAMReader.h:408
vtkOpenFOAMReader::SetLagrangianArrayStatus
void SetLagrangianArrayStatus(const char *name, int status)
Definition: vtkOpenFOAMReader.h:168
vtkOpenFOAMReader::GetPatchArrayStatus
int GetPatchArrayStatus(const char *name)
Get/Set whether the Patch with the given name is to be read.
Definition: vtkOpenFOAMReader.h:206
vtkOpenFOAMReader::SkipZeroTime
bool SkipZeroTime
Definition: vtkOpenFOAMReader.h:371
vtkMultiBlockDataSetAlgorithm::RequestData
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
Definition: vtkMultiBlockDataSetAlgorithm.h:89
vtkDataArraySelection
Store on/off settings for data arrays for a vtkSource.
Definition: vtkDataArraySelection.h:34
vtkOpenFOAMReader::EnableAllPointArrays
void EnableAllPointArrays()
Definition: vtkOpenFOAMReader.h:150
vtkCharArray
dynamic, self-adjusting array of char
Definition: vtkCharArray.h:35
vtkOpenFOAMReader::PatchSelectionMTimeOld
vtkMTimeType PatchSelectionMTimeOld
Definition: vtkOpenFOAMReader.h:401
vtkOpenFOAMReader::GetPointArrayStatus
int GetPointArrayStatus(const char *name)
Get/Set whether the point array with the given name is to be read.
Definition: vtkOpenFOAMReader.h:128
vtkOpenFOAMReader::PointDataArraySelection
vtkDataArraySelection * PointDataArraySelection
Definition: vtkOpenFOAMReader.h:397
vtkOpenFOAMReader::CellSelectionMTimeOld
vtkMTimeType CellSelectionMTimeOld
Definition: vtkOpenFOAMReader.h:402
vtkCollection
create and manipulate ordered lists of objects
Definition: vtkCollection.h:52
vtkOpenFOAMReader::EnableAllCellArrays
void EnableAllCellArrays()
Definition: vtkOpenFOAMReader.h:114
vtkOpenFOAMReader::ListTimeStepsByControlDict
vtkTypeBool ListTimeStepsByControlDict
Definition: vtkOpenFOAMReader.h:374
vtkOpenFOAMReader::GetPointArrayName
const char * GetPointArrayName(int index)
Get the name of the point array with the given index in the input.
Definition: vtkOpenFOAMReader.h:141
vtkOpenFOAMReader::CacheMesh
vtkTypeBool CacheMesh
Definition: vtkOpenFOAMReader.h:359
vtkOpenFOAMReader::PositionsIsIn13FormatOld
int PositionsIsIn13FormatOld
Definition: vtkOpenFOAMReader.h:412
vtkOpenFOAMReader::CellDataArraySelection
vtkDataArraySelection * CellDataArraySelection
Definition: vtkOpenFOAMReader.h:396
vtkOpenFOAMReader::PositionsIsIn13Format
vtkTypeBool PositionsIsIn13Format
Definition: vtkOpenFOAMReader.h:365
vtkOpenFOAMReader::SetRefresh
void SetRefresh()
Definition: vtkOpenFOAMReader.h:337
vtkOpenFOAMReader::SetPatchArrayStatus
void SetPatchArrayStatus(const char *name, int status)
Definition: vtkOpenFOAMReader.h:210
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:113
vtkOpenFOAMReader::FileName
char * FileName
Definition: vtkOpenFOAMReader.h:390
vtkOpenFOAMReader::PointSelectionMTimeOld
vtkMTimeType PointSelectionMTimeOld
Definition: vtkOpenFOAMReader.h:403
vtkOpenFOAMReader::AddDimensionsToArrayNames
vtkTypeBool AddDimensionsToArrayNames
Definition: vtkOpenFOAMReader.h:377
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:177
vtkOpenFOAMReader::CasePath
vtkCharArray * CasePath
Definition: vtkOpenFOAMReader.h:391
vtkOpenFOAMReader::CurrentReaderIndex
int CurrentReaderIndex
Definition: vtkOpenFOAMReader.h:424
vtkX3D::name
@ name
Definition: vtkX3D.h:225
vtkOpenFOAMReader::EnableAllLagrangianArrays
void EnableAllLagrangianArrays()
Definition: vtkOpenFOAMReader.h:189
vtkOpenFOAMReader::CopyDataToCellZones
bool CopyDataToCellZones
Definition: vtkOpenFOAMReader.h:388
vtkOpenFOAMReader::Readers
vtkCollection * Readers
Definition: vtkOpenFOAMReader.h:392
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:73
vtkOpenFOAMReader::GetNumberOfPatchArrays
int GetNumberOfPatchArrays(void)
Get the number of Patches (including Internal Mesh) available in the input.
Definition: vtkOpenFOAMReader.h:197
vtkOpenFOAMReader::DecomposePolyhedra
vtkTypeBool DecomposePolyhedra
Definition: vtkOpenFOAMReader.h:362
vtkOpenFOAMReader::PatchDataArraySelection
vtkDataArraySelection * PatchDataArraySelection
Definition: vtkOpenFOAMReader.h:395
vtkOpenFOAMReader::ReadZonesOld
int ReadZonesOld
Definition: vtkOpenFOAMReader.h:414
vtkOpenFOAMReader::ListTimeStepsByControlDictOld
int ListTimeStepsByControlDictOld
Definition: vtkOpenFOAMReader.h:409
vtkOpenFOAMReader::Use64BitFloatsOld
bool Use64BitFloatsOld
Definition: vtkOpenFOAMReader.h:416
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:132
vtkOpenFOAMReader::DecomposePolyhedraOld
int DecomposePolyhedraOld
Definition: vtkOpenFOAMReader.h:411
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:119
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:398
vtkX3D::index
@ index
Definition: vtkX3D.h:252
vtkOpenFOAMReader::NumberOfReaders
int NumberOfReaders
Definition: vtkOpenFOAMReader.h:422
vtkOpenFOAMReader::DisableAllPointArrays
void DisableAllPointArrays()
Turn on/off all point arrays.
Definition: vtkOpenFOAMReader.h:149
vtkOpenFOAMReader::AddDimensionsToArrayNamesOld
int AddDimensionsToArrayNamesOld
Definition: vtkOpenFOAMReader.h:413
vtkOpenFOAMReader::GetCellArrayName
const char * GetCellArrayName(int index)
Get the name of the cell array with the given index in the input.
Definition: vtkOpenFOAMReader.h:105
vtkOpenFOAMReader::DisableAllPatchArrays
void DisableAllPatchArrays()
Turn on/off all Patches including the Internal Mesh.
Definition: vtkOpenFOAMReader.h:227
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:164
vtkOpenFOAMReader::DisableAllLagrangianArrays
void DisableAllLagrangianArrays()
Turn on/off all Lagrangian arrays.
Definition: vtkOpenFOAMReader.h:185
vtkOpenFOAMReader::ReadZones
vtkTypeBool ReadZones
Definition: vtkOpenFOAMReader.h:368
vtkMTimeType
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:293
vtkMultiBlockDataSetAlgorithm
Superclass for algorithms that produce only vtkMultiBlockDataSet as output.
Definition: vtkMultiBlockDataSetAlgorithm.h:32