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, vtkTypeBool);
214  vtkGetMacro(CreateCellToPoint, vtkTypeBool);
215  vtkBooleanMacro(CreateCellToPoint, vtkTypeBool);
217 
219 
222  vtkSetMacro(CacheMesh, vtkTypeBool);
223  vtkGetMacro(CacheMesh, vtkTypeBool);
224  vtkBooleanMacro(CacheMesh, vtkTypeBool);
226 
228 
231  vtkSetMacro(DecomposePolyhedra, vtkTypeBool);
232  vtkGetMacro(DecomposePolyhedra, vtkTypeBool);
233  vtkBooleanMacro(DecomposePolyhedra, vtkTypeBool);
235 
236  // Option for reading old binary lagrangian/positions format
238 
244  vtkSetMacro(PositionsIsIn13Format, vtkTypeBool);
245  vtkGetMacro(PositionsIsIn13Format, vtkTypeBool);
246  vtkBooleanMacro(PositionsIsIn13Format, vtkTypeBool);
248 
250 
254  vtkSetMacro(SkipZeroTime, bool);
255  vtkGetMacro(SkipZeroTime, bool);
256  vtkBooleanMacro(SkipZeroTime, bool);
258 
260 
263  vtkSetMacro(ListTimeStepsByControlDict, vtkTypeBool);
264  vtkGetMacro(ListTimeStepsByControlDict, vtkTypeBool);
265  vtkBooleanMacro(ListTimeStepsByControlDict, vtkTypeBool);
267 
269 
272  vtkSetMacro(AddDimensionsToArrayNames, vtkTypeBool);
273  vtkGetMacro(AddDimensionsToArrayNames, vtkTypeBool);
274  vtkBooleanMacro(AddDimensionsToArrayNames, vtkTypeBool);
276 
278 
281  vtkSetMacro(ReadZones, vtkTypeBool);
282  vtkGetMacro(ReadZones, vtkTypeBool);
283  vtkBooleanMacro(ReadZones, vtkTypeBool);
285 
287 
290  virtual void SetUse64BitLabels(bool val);
291  vtkGetMacro(Use64BitLabels, bool)
292  vtkBooleanMacro(Use64BitLabels, bool)
294 
296 
300  vtkGetMacro(CopyDataToCellZones, bool)
301  vtkSetMacro(CopyDataToCellZones, bool)
302  vtkBooleanMacro(CopyDataToCellZones, bool)
304 
306 
311  virtual void SetUse64BitFloats(bool val);
312  vtkGetMacro(Use64BitFloats, bool)
313  vtkBooleanMacro(Use64BitFloats, bool)
315 
316  void SetRefresh() { this->Refresh = true; this->Modified(); }
317 
318  void SetParent(vtkOpenFOAMReader *parent) { this->Parent = parent; }
319  int MakeInformationVector(vtkInformationVector *, const vtkStdString &);
320  bool SetTimeValue(const double);
321  vtkDoubleArray *GetTimeValues();
322  int MakeMetaDataAtTimeStep(const bool);
323 
324  friend class vtkOpenFOAMReaderPrivate;
325 
326 protected:
327  // refresh flag
328  bool Refresh;
329 
330  // for creating cell-to-point translated data
332 
333  // for caching mesh
335 
336  // for decomposing polyhedra on-the-fly
338 
339  // for lagrangian/positions without extra data (OF 1.4 - 2.4)
341 
342  // for reading point/face/cell-Zones
344 
345  // Ignore 0/ directory
347 
348  // determine if time directories are listed according to controlDict
350 
351  // add dimensions to array names
353 
354  // Expect label size to be 64-bit integers instead of 32-bit.
356 
357  // Expect float data to be 64-bit floats instead of 32-bit.
358  // Note that vtkFloatArrays may still be used -- this just tells the reader how to
359  // parse the binary data.
361 
362  // The data of internal mesh are copied to cell zones
364 
365  char *FileName;
368 
369  // DataArraySelection for Patch / Region Data
374 
375  // old selection status
380 
381  // preserved old information
392 
393  // paths to Lagrangians
395 
396  // number of reader instances
398  // index of the active reader
400 
402  ~vtkOpenFOAMReader() override;
404  vtkInformationVector *) override;
406  vtkInformationVector *) override;
407 
408  void CreateCasePath(vtkStdString &, vtkStdString &);
409  void SetTimeInformation(vtkInformationVector *, vtkDoubleArray *);
410  void CreateCharArrayFromString(vtkCharArray *, const char *, vtkStdString &);
411  void UpdateStatus();
412  void UpdateProgress(double);
413 
414 private:
415  vtkOpenFOAMReader *Parent;
416 
417  vtkOpenFOAMReader(const vtkOpenFOAMReader&) = delete;
418  void operator=(const vtkOpenFOAMReader&) = delete;
419 
420  int GetNumberOfSelectionArrays(vtkDataArraySelection *);
421  int GetSelectionArrayStatus(vtkDataArraySelection *, const char *);
422  void SetSelectionArrayStatus(vtkDataArraySelection *, const char *, int);
423  const char *GetSelectionArrayName(vtkDataArraySelection *, int);
424  void DisableAllSelectionArrays(vtkDataArraySelection *);
425  void EnableAllSelectionArrays(vtkDataArraySelection *);
426 
427  void AddSelectionNames(vtkDataArraySelection *, vtkStringArray *);
428 };
429 
430 #endif
vtkOpenFOAMReader::LagrangianPaths
vtkStringArray * LagrangianPaths
Definition: vtkOpenFOAMReader.h:394
vtkOpenFOAMReader::CreateCellToPointOld
int CreateCellToPointOld
Definition: vtkOpenFOAMReader.h:385
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:198
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:41
vtkOpenFOAMReader::GetCellArrayStatus
int GetCellArrayStatus(const char *name)
Get/Set whether the cell array with the given name is to be read.
Definition: vtkOpenFOAMReader.h:93
vtkOpenFOAMReader::SetCellArrayStatus
void SetCellArrayStatus(const char *name, int status)
Definition: vtkOpenFOAMReader.h:95
vtkOpenFOAMReader::Use64BitLabels
bool Use64BitLabels
Definition: vtkOpenFOAMReader.h:355
vtkOpenFOAMReader::GetNumberOfLagrangianArrays
int GetNumberOfLagrangianArrays(void)
Get the number of Lagrangian arrays available in the input.
Definition: vtkOpenFOAMReader.h:147
vtkOpenFOAMReader::Use64BitLabelsOld
bool Use64BitLabelsOld
Definition: vtkOpenFOAMReader.h:390
vtkObject::Modified
virtual void Modified()
Update the modification time for this object.
vtkOpenFOAMReader::CreateCellToPoint
vtkTypeBool CreateCellToPoint
Definition: vtkOpenFOAMReader.h:331
vtkOpenFOAMReader::SetParent
void SetParent(vtkOpenFOAMReader *parent)
Definition: vtkOpenFOAMReader.h:318
vtkOpenFOAMReader::EnableAllPatchArrays
void EnableAllPatchArrays()
Definition: vtkOpenFOAMReader.h:206
vtkOpenFOAMReader::FileNameOld
vtkStdString * FileNameOld
Definition: vtkOpenFOAMReader.h:382
vtkMultiBlockDataSetAlgorithm::New
static vtkMultiBlockDataSetAlgorithm * New()
vtkOpenFOAMReader::LagrangianSelectionMTimeOld
vtkMTimeType LagrangianSelectionMTimeOld
Definition: vtkOpenFOAMReader.h:379
vtkOpenFOAMReader::Use64BitFloats
bool Use64BitFloats
Definition: vtkOpenFOAMReader.h:360
vtkOpenFOAMReader::Refresh
bool Refresh
Definition: vtkOpenFOAMReader.h:328
vtkOpenFOAMReader::SkipZeroTimeOld
bool SkipZeroTimeOld
Definition: vtkOpenFOAMReader.h:383
vtkOpenFOAMReader::SetLagrangianArrayStatus
void SetLagrangianArrayStatus(const char *name, int status)
Definition: vtkOpenFOAMReader.h:158
vtkOpenFOAMReader::GetPatchArrayStatus
int GetPatchArrayStatus(const char *name)
Get/Set whether the Patch with the given name is to be read.
Definition: vtkOpenFOAMReader.h:188
vtkOpenFOAMReader::SkipZeroTime
bool SkipZeroTime
Definition: vtkOpenFOAMReader.h:346
vtkMultiBlockDataSetAlgorithm::RequestData
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
Definition: vtkMultiBlockDataSetAlgorithm.h:91
vtkDataArraySelection
Store on/off settings for data arrays for a vtkSource.
Definition: vtkDataArraySelection.h:37
vtkOpenFOAMReader::EnableAllPointArrays
void EnableAllPointArrays()
Definition: vtkOpenFOAMReader.h:141
vtkCharArray
dynamic, self-adjusting array of char
Definition: vtkCharArray.h:38
vtkOpenFOAMReader::PatchSelectionMTimeOld
vtkMTimeType PatchSelectionMTimeOld
Definition: vtkOpenFOAMReader.h:376
vtkOpenFOAMReader::GetPointArrayStatus
int GetPointArrayStatus(const char *name)
Get/Set whether the point array with the given name is to be read.
Definition: vtkOpenFOAMReader.h:123
vtkOpenFOAMReader::PointDataArraySelection
vtkDataArraySelection * PointDataArraySelection
Definition: vtkOpenFOAMReader.h:372
vtkOpenFOAMReader::CellSelectionMTimeOld
vtkMTimeType CellSelectionMTimeOld
Definition: vtkOpenFOAMReader.h:377
vtkCollection
create and manipulate ordered lists of objects
Definition: vtkCollection.h:51
vtkOpenFOAMReader::EnableAllCellArrays
void EnableAllCellArrays()
Definition: vtkOpenFOAMReader.h:110
vtkOpenFOAMReader::ListTimeStepsByControlDict
vtkTypeBool ListTimeStepsByControlDict
Definition: vtkOpenFOAMReader.h:349
vtkOpenFOAMReader::GetPointArrayName
const char * GetPointArrayName(int index)
Get the name of the point array with the given index in the input.
Definition: vtkOpenFOAMReader.h:133
vtkOpenFOAMReader::CacheMesh
vtkTypeBool CacheMesh
Definition: vtkOpenFOAMReader.h:334
vtkOpenFOAMReader::PositionsIsIn13FormatOld
int PositionsIsIn13FormatOld
Definition: vtkOpenFOAMReader.h:387
vtkOpenFOAMReader::CellDataArraySelection
vtkDataArraySelection * CellDataArraySelection
Definition: vtkOpenFOAMReader.h:371
vtkOpenFOAMReader::PositionsIsIn13Format
vtkTypeBool PositionsIsIn13Format
Definition: vtkOpenFOAMReader.h:340
vtkOpenFOAMReader::SetPatchArrayStatus
void SetPatchArrayStatus(const char *name, int status)
Definition: vtkOpenFOAMReader.h:190
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkOpenFOAMReader::DisableAllCellArrays
void DisableAllCellArrays()
Turn on/off all cell arrays.
Definition: vtkOpenFOAMReader.h:108
vtkOpenFOAMReader::FileName
char * FileName
Definition: vtkOpenFOAMReader.h:365
vtkOpenFOAMReader::PointSelectionMTimeOld
vtkMTimeType PointSelectionMTimeOld
Definition: vtkOpenFOAMReader.h:378
vtkOpenFOAMReader::AddDimensionsToArrayNames
vtkTypeBool AddDimensionsToArrayNames
Definition: vtkOpenFOAMReader.h:352
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:166
vtkOpenFOAMReader::CasePath
vtkCharArray * CasePath
Definition: vtkOpenFOAMReader.h:366
vtkOpenFOAMReader::CurrentReaderIndex
int CurrentReaderIndex
Definition: vtkOpenFOAMReader.h:399
vtkX3D::name
Definition: vtkX3D.h:219
vtkOpenFOAMReader::EnableAllLagrangianArrays
void EnableAllLagrangianArrays()
Definition: vtkOpenFOAMReader.h:175
vtkOpenFOAMReader::CopyDataToCellZones
bool CopyDataToCellZones
Definition: vtkOpenFOAMReader.h:363
vtkOpenFOAMReader::Readers
vtkCollection * Readers
Definition: vtkOpenFOAMReader.h:367
vtkOpenFOAMReader
reads a dataset in OpenFOAM format
Definition: vtkOpenFOAMReader.h:63
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:86
vtkOpenFOAMReader::GetNumberOfPatchArrays
int GetNumberOfPatchArrays(void)
Get the number of Patches (including Internal Mesh) available in the input.
Definition: vtkOpenFOAMReader.h:181
vtkOpenFOAMReader::DecomposePolyhedra
vtkTypeBool DecomposePolyhedra
Definition: vtkOpenFOAMReader.h:337
vtkOpenFOAMReader::PatchDataArraySelection
vtkDataArraySelection * PatchDataArraySelection
Definition: vtkOpenFOAMReader.h:370
vtkOpenFOAMReader::ReadZonesOld
int ReadZonesOld
Definition: vtkOpenFOAMReader.h:389
vtkOpenFOAMReader::ListTimeStepsByControlDictOld
int ListTimeStepsByControlDictOld
Definition: vtkOpenFOAMReader.h:384
vtkOpenFOAMReader::Use64BitFloatsOld
bool Use64BitFloatsOld
Definition: vtkOpenFOAMReader.h:391
vtkStringArray
a vtkAbstractArray subclass for strings
Definition: vtkStringArray.h:42
vtkDoubleArray
dynamic, self-adjusting array of double
Definition: vtkDoubleArray.h:41
vtkOpenFOAMReader::SetPointArrayStatus
void SetPointArrayStatus(const char *name, int status)
Definition: vtkOpenFOAMReader.h:125
vtkOpenFOAMReader::DecomposePolyhedraOld
int DecomposePolyhedraOld
Definition: vtkOpenFOAMReader.h:386
vtkStdString
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:40
vtkOpenFOAMReader::GetNumberOfPointArrays
int GetNumberOfPointArrays(void)
Get the number of point arrays available in the input.
Definition: vtkOpenFOAMReader.h:116
vtkOpenFOAMReader::GetNumberOfCellArrays
int GetNumberOfCellArrays(void)
Get the number of cell arrays available in the input.
Definition: vtkOpenFOAMReader.h:86
vtkOpenFOAMReader::LagrangianDataArraySelection
vtkDataArraySelection * LagrangianDataArraySelection
Definition: vtkOpenFOAMReader.h:373
vtkX3D::index
Definition: vtkX3D.h:246
vtkOpenFOAMReader::NumberOfReaders
int NumberOfReaders
Definition: vtkOpenFOAMReader.h:397
vtkOpenFOAMReader::DisableAllPointArrays
void DisableAllPointArrays()
Turn on/off all point arrays.
Definition: vtkOpenFOAMReader.h:139
vtkOpenFOAMReader::AddDimensionsToArrayNamesOld
int AddDimensionsToArrayNamesOld
Definition: vtkOpenFOAMReader.h:388
vtkOpenFOAMReader::GetCellArrayName
const char * GetCellArrayName(int index)
Get the name of the cell array with the given index in the input.
Definition: vtkOpenFOAMReader.h:102
vtkOpenFOAMReader::DisableAllPatchArrays
void DisableAllPatchArrays()
Turn on/off all Patches including the Internal Mesh.
Definition: vtkOpenFOAMReader.h:204
vtkMultiBlockDataSetAlgorithm::RequestInformation
virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
Definition: vtkMultiBlockDataSetAlgorithm.h:83
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:155
vtkOpenFOAMReader::DisableAllLagrangianArrays
void DisableAllLagrangianArrays()
Turn on/off all Lagrangian arrays.
Definition: vtkOpenFOAMReader.h:173
vtkOpenFOAMReader::ReadZones
vtkTypeBool ReadZones
Definition: vtkOpenFOAMReader.h:343
vtkMTimeType
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:302
vtkMultiBlockDataSetAlgorithm
Superclass for algorithms that produce only vtkMultiBlockDataSet as output.
Definition: vtkMultiBlockDataSetAlgorithm.h:35