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
vtkOpenFOAMReader::CreateCellToPoint
int CreateCellToPoint
Definition: vtkOpenFOAMReader.h:293
vtkOpenFOAMReader::LagrangianPaths
vtkStringArray * LagrangianPaths
Definition: vtkOpenFOAMReader.h:342
vtkOpenFOAMReader::PositionsIsIn13Format
int PositionsIsIn13Format
Definition: vtkOpenFOAMReader.h:302
vtkOpenFOAMReader::CreateCellToPointOld
int CreateCellToPointOld
Definition: vtkOpenFOAMReader.h:335
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:194
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:89
vtkOpenFOAMReader::SetCellArrayStatus
void SetCellArrayStatus(const char *name, int status)
Definition: vtkOpenFOAMReader.h:91
vtkOpenFOAMReader::Use64BitLabels
bool Use64BitLabels
Definition: vtkOpenFOAMReader.h:314
vtkOpenFOAMReader::GetNumberOfLagrangianArrays
int GetNumberOfLagrangianArrays(void)
Get the number of Lagrangian arrays available in the input.
Definition: vtkOpenFOAMReader.h:143
vtkObject::Modified
virtual void Modified()
Update the modification time for this object.
vtkOpenFOAMReader::SetParent
void SetParent(vtkOpenFOAMReader *parent)
Definition: vtkOpenFOAMReader.h:280
vtkOpenFOAMReader::EnableAllPatchArrays
void EnableAllPatchArrays()
Definition: vtkOpenFOAMReader.h:202
vtkOpenFOAMReader::FileNameOld
vtkStdString * FileNameOld
Definition: vtkOpenFOAMReader.h:333
vtkMultiBlockDataSetAlgorithm::New
static vtkMultiBlockDataSetAlgorithm * New()
vtkOpenFOAMReader::LagrangianSelectionMTimeOld
vtkMTimeType LagrangianSelectionMTimeOld
Definition: vtkOpenFOAMReader.h:330
vtkOpenFOAMReader::ListTimeStepsByControlDict
int ListTimeStepsByControlDict
Definition: vtkOpenFOAMReader.h:308
vtkOpenFOAMReader::ReadZones
int ReadZones
Definition: vtkOpenFOAMReader.h:305
vtkOpenFOAMReader::Refresh
bool Refresh
Definition: vtkOpenFOAMReader.h:290
vtkOpenFOAMReader::CacheMesh
int CacheMesh
Definition: vtkOpenFOAMReader.h:296
vtkOpenFOAMReader::SetLagrangianArrayStatus
void SetLagrangianArrayStatus(const char *name, int status)
Definition: vtkOpenFOAMReader.h:154
vtkOpenFOAMReader::GetPatchArrayStatus
int GetPatchArrayStatus(const char *name)
Get/Set whether the Patch with the given name is to be read.
Definition: vtkOpenFOAMReader.h:184
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
vtkMTimeType
vtkTypeUInt64 vtkMTimeType
Definition: vtkType.h:248
vtkOpenFOAMReader::EnableAllPointArrays
void EnableAllPointArrays()
Definition: vtkOpenFOAMReader.h:137
vtkCharArray
dynamic, self-adjusting array of char
Definition: vtkCharArray.h:38
vtkOpenFOAMReader::PatchSelectionMTimeOld
vtkMTimeType PatchSelectionMTimeOld
Definition: vtkOpenFOAMReader.h:327
vtkOpenFOAMReader::GetPointArrayStatus
int GetPointArrayStatus(const char *name)
Get/Set whether the point array with the given name is to be read.
Definition: vtkOpenFOAMReader.h:119
vtkOpenFOAMReader::PointDataArraySelection
vtkDataArraySelection * PointDataArraySelection
Definition: vtkOpenFOAMReader.h:323
vtkOpenFOAMReader::CellSelectionMTimeOld
vtkMTimeType CellSelectionMTimeOld
Definition: vtkOpenFOAMReader.h:328
vtkCollection
create and manipulate unsorted lists of objects
Definition: vtkCollection.h:51
vtkOpenFOAMReader::EnableAllCellArrays
void EnableAllCellArrays()
Definition: vtkOpenFOAMReader.h:106
vtkOpenFOAMReader::GetPointArrayName
const char * GetPointArrayName(int index)
Get the name of the point array with the given index in the input.
Definition: vtkOpenFOAMReader.h:129
vtkOpenFOAMReader::PositionsIsIn13FormatOld
int PositionsIsIn13FormatOld
Definition: vtkOpenFOAMReader.h:337
vtkOpenFOAMReader::CellDataArraySelection
vtkDataArraySelection * CellDataArraySelection
Definition: vtkOpenFOAMReader.h:322
vtkOpenFOAMReader::DecomposePolyhedra
int DecomposePolyhedra
Definition: vtkOpenFOAMReader.h:299
vtkOpenFOAMReader::SetPatchArrayStatus
void SetPatchArrayStatus(const char *name, int status)
Definition: vtkOpenFOAMReader.h:186
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:104
vtkOpenFOAMReader::FileName
char * FileName
Definition: vtkOpenFOAMReader.h:316
vtkOpenFOAMReader::PointSelectionMTimeOld
vtkMTimeType PointSelectionMTimeOld
Definition: vtkOpenFOAMReader.h:329
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:162
vtkGetStringMacro
vtkGetStringMacro(ExtensionsString)
Returns a string listing all available extensions.
vtkOpenFOAMReader::CasePath
vtkCharArray * CasePath
Definition: vtkOpenFOAMReader.h:317
vtkOpenFOAMReader::CurrentReaderIndex
int CurrentReaderIndex
Definition: vtkOpenFOAMReader.h:347
vtkX3D::name
Definition: vtkX3D.h:219
vtkOpenFOAMReader::EnableAllLagrangianArrays
void EnableAllLagrangianArrays()
Definition: vtkOpenFOAMReader.h:171
vtkOpenFOAMReader::Readers
vtkCollection * Readers
Definition: vtkOpenFOAMReader.h:318
vtkOpenFOAMReader
reads a dataset in OpenFOAM format
Definition: vtkOpenFOAMReader.h:59
vtkMultiBlockDataSetAlgorithm::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkBooleanMacro
vtkBooleanMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:86
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkOpenFOAMReader::GetNumberOfPatchArrays
int GetNumberOfPatchArrays(void)
Get the number of Patches (including Internal Mesh) available in the input.
Definition: vtkOpenFOAMReader.h:177
vtkOpenFOAMReader::PatchDataArraySelection
vtkDataArraySelection * PatchDataArraySelection
Definition: vtkOpenFOAMReader.h:321
vtkOpenFOAMReader::ReadZonesOld
int ReadZonesOld
Definition: vtkOpenFOAMReader.h:339
vtkOpenFOAMReader::ListTimeStepsByControlDictOld
int ListTimeStepsByControlDictOld
Definition: vtkOpenFOAMReader.h:334
vtkOpenFOAMReader::AddDimensionsToArrayNames
int AddDimensionsToArrayNames
Definition: vtkOpenFOAMReader.h:311
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:121
vtkOpenFOAMReader::DecomposePolyhedraOld
int DecomposePolyhedraOld
Definition: vtkOpenFOAMReader.h:336
vtkStdString
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:47
vtkOpenFOAMReader::GetNumberOfPointArrays
int GetNumberOfPointArrays(void)
Get the number of point arrays available in the input.
Definition: vtkOpenFOAMReader.h:112
vtkOpenFOAMReader::GetNumberOfCellArrays
int GetNumberOfCellArrays(void)
Get the number of cell arrays available in the input.
Definition: vtkOpenFOAMReader.h:82
vtkOpenFOAMReader::LagrangianDataArraySelection
vtkDataArraySelection * LagrangianDataArraySelection
Definition: vtkOpenFOAMReader.h:324
vtkX3D::index
Definition: vtkX3D.h:246
vtkOpenFOAMReader::NumberOfReaders
int NumberOfReaders
Definition: vtkOpenFOAMReader.h:345
vtkOpenFOAMReader::DisableAllPointArrays
void DisableAllPointArrays()
Turn on/off all point arrays.
Definition: vtkOpenFOAMReader.h:135
vtkOpenFOAMReader::AddDimensionsToArrayNamesOld
int AddDimensionsToArrayNamesOld
Definition: vtkOpenFOAMReader.h:338
vtkOpenFOAMReader::GetCellArrayName
const char * GetCellArrayName(int index)
Get the name of the cell array with the given index in the input.
Definition: vtkOpenFOAMReader.h:98
vtkOpenFOAMReader::DisableAllPatchArrays
void DisableAllPatchArrays()
Turn on/off all Patches including the Internal Mesh.
Definition: vtkOpenFOAMReader.h:200
vtkMultiBlockDataSetAlgorithm::RequestInformation
virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
Definition: vtkMultiBlockDataSetAlgorithm.h:80
vtkOpenFOAMReader::GetLagrangianArrayStatus
int GetLagrangianArrayStatus(const char *name)
Get/Set whether the Lagrangian array with the given name is to be read.
Definition: vtkOpenFOAMReader.h:151
vtkOpenFOAMReader::DisableAllLagrangianArrays
void DisableAllLagrangianArrays()
Turn on/off all Lagrangian arrays.
Definition: vtkOpenFOAMReader.h:169
vtkMultiBlockDataSetAlgorithm
Superclass for algorithms that produce only vtkMultiBlockDataSet as output.
Definition: vtkMultiBlockDataSetAlgorithm.h:32