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 =========================================================================*/
40 #ifndef __vtkOpenFOAMReader_h
41 #define __vtkOpenFOAMReader_h
42 
44 
45 class vtkCollection;
46 class vtkCharArray;
48 class vtkDoubleArray;
49 class vtkStdString;
50 class vtkStringArray;
51 
52 class vtkOpenFOAMReaderPrivate;
53 
55 {
56 public:
57  static vtkOpenFOAMReader *New();
59  void PrintSelf(ostream &, vtkIndent);
60 
62  int CanReadFile(const char *);
63 
65 
66  vtkSetStringMacro(FileName);
67  vtkGetStringMacro(FileName);
69 
71 
72  int GetNumberOfCellArrays(void)
73  { return this->GetNumberOfSelectionArrays(this->CellDataArraySelection); }
75 
77 
78  int GetCellArrayStatus(const char *name)
79  { return this->GetSelectionArrayStatus(this->CellDataArraySelection, name); }
80  void SetCellArrayStatus(const char *name, int status)
81  { this->SetSelectionArrayStatus(this->CellDataArraySelection, name, status); }
83 
85 
86  const char *GetCellArrayName(int index)
87  { return this->GetSelectionArrayName(this->CellDataArraySelection, index); }
89 
91 
92  void DisableAllCellArrays()
93  { this->DisableAllSelectionArrays(this->CellDataArraySelection); }
94  void EnableAllCellArrays()
95  { this->EnableAllSelectionArrays(this->CellDataArraySelection); }
97 
99 
100  int GetNumberOfPointArrays(void)
101  { return this->GetNumberOfSelectionArrays(this->PointDataArraySelection); }
103 
105 
106  int GetPointArrayStatus(const char *name)
107  { return this->GetSelectionArrayStatus(this->PointDataArraySelection, name); }
108  void SetPointArrayStatus(const char *name, int status)
109  { this->SetSelectionArrayStatus(this->PointDataArraySelection,
110  name, status); }
112 
114 
115  const char *GetPointArrayName(int index)
116  { return this->GetSelectionArrayName(this->PointDataArraySelection, index); }
118 
120 
121  void DisableAllPointArrays()
122  { this->DisableAllSelectionArrays(this->PointDataArraySelection); }
123  void EnableAllPointArrays()
124  { this->EnableAllSelectionArrays(this->PointDataArraySelection); }
126 
128 
129  int GetNumberOfLagrangianArrays(void)
130  { return this->GetNumberOfSelectionArrays(
131  this->LagrangianDataArraySelection); }
133 
135 
137  int GetLagrangianArrayStatus(const char *name)
138  { return this->GetSelectionArrayStatus(this->LagrangianDataArraySelection,
139  name); }
140  void SetLagrangianArrayStatus(const char *name, int status)
141  { this->SetSelectionArrayStatus(this->LagrangianDataArraySelection, name,
142  status); }
144 
146 
148  const char* GetLagrangianArrayName(int index)
149  { return this->GetSelectionArrayName(this->LagrangianDataArraySelection,
150  index); }
152 
154 
155  void DisableAllLagrangianArrays()
156  { this->DisableAllSelectionArrays(this->LagrangianDataArraySelection); }
157  void EnableAllLagrangianArrays()
158  { this->EnableAllSelectionArrays(this->LagrangianDataArraySelection); }
160 
162 
164  int GetNumberOfPatchArrays(void)
165  { return this->GetNumberOfSelectionArrays(this->PatchDataArraySelection); }
167 
169 
170  int GetPatchArrayStatus(const char *name)
171  { return this->GetSelectionArrayStatus(this->PatchDataArraySelection, name); }
172  void SetPatchArrayStatus(const char *name, int status)
173  { this->SetSelectionArrayStatus(this->PatchDataArraySelection, name,
174  status); }
176 
178 
179  const char *GetPatchArrayName(int index)
180  { return this->GetSelectionArrayName(this->PatchDataArraySelection, index); }
182 
184 
185  void DisableAllPatchArrays()
186  { this->DisableAllSelectionArrays(this->PatchDataArraySelection); }
187  void EnableAllPatchArrays()
188  { this->EnableAllSelectionArrays(this->PatchDataArraySelection); }
190 
192 
194  vtkSetMacro(CreateCellToPoint,int);
195  vtkGetMacro(CreateCellToPoint,int);
196  vtkBooleanMacro(CreateCellToPoint, int);
198 
200 
201  vtkSetMacro(CacheMesh, int);
202  vtkGetMacro(CacheMesh, int);
203  vtkBooleanMacro(CacheMesh, int);
205 
207 
208  vtkSetMacro(DecomposePolyhedra, int);
209  vtkGetMacro(DecomposePolyhedra, int);
210  vtkBooleanMacro(DecomposePolyhedra, int);
212 
213  // Option for reading old binary lagrangian/positions format
215 
216  vtkSetMacro(PositionsIsIn13Format, int);
217  vtkGetMacro(PositionsIsIn13Format, int);
218  vtkBooleanMacro(PositionsIsIn13Format, int);
220 
222 
224  vtkSetMacro(ListTimeStepsByControlDict, int);
225  vtkGetMacro(ListTimeStepsByControlDict, int);
226  vtkBooleanMacro(ListTimeStepsByControlDict, int);
228 
230 
231  vtkSetMacro(AddDimensionsToArrayNames, int);
232  vtkGetMacro(AddDimensionsToArrayNames, int);
233  vtkBooleanMacro(AddDimensionsToArrayNames, int);
235 
237 
238  vtkSetMacro(ReadZones, int);
239  vtkGetMacro(ReadZones, int);
240  vtkBooleanMacro(ReadZones, int);
242 
243  void SetRefresh() { this->Refresh = true; this->Modified(); }
244 
245  void SetParent(vtkOpenFOAMReader *parent) { this->Parent = parent; }
246  int MakeInformationVector(vtkInformationVector *, const vtkStdString &);
247  bool SetTimeValue(const double);
248  vtkDoubleArray *GetTimeValues();
249  int MakeMetaDataAtTimeStep(const bool);
250 
251  //BTX
252  friend class vtkOpenFOAMReaderPrivate;
253  //ETX
254 
255 protected:
256  // refresh flag
257  bool Refresh;
258 
259  // for creating cell-to-point translated data
261 
262  // for caching mesh
264 
265  // for decomposing polyhedra on-the-fly
267 
268  // for reading old binary lagrangian/positions format
270 
271  // for reading point/face/cell-Zones
273 
274  // determine if time directories are listed according to controlDict
276 
277  // add dimensions to array names
279 
280  char *FileName;
283 
284  // DataArraySelection for Patch / Region Data
289 
290  // old selection status
291  unsigned long int PatchSelectionMTimeOld;
292  unsigned long int CellSelectionMTimeOld;
293  unsigned long int PointSelectionMTimeOld;
294  unsigned long int LagrangianSelectionMTimeOld;
295 
296  // preserved old information
304 
305  // paths to Lagrangians
307 
308  // number of reader instances
310  // index of the active reader
312 
319 
320  void CreateCasePath(vtkStdString &, vtkStdString &);
321  void SetTimeInformation(vtkInformationVector *, vtkDoubleArray *);
322  void CreateCharArrayFromString(vtkCharArray *, const char *, vtkStdString &);
323  void UpdateStatus();
324  void UpdateProgress(double);
325 
326 private:
327  vtkOpenFOAMReader *Parent;
328 
329  vtkOpenFOAMReader(const vtkOpenFOAMReader&); // Not implemented.
330  void operator=(const vtkOpenFOAMReader&); // Not implemented.
331 
332  int GetNumberOfSelectionArrays(vtkDataArraySelection *);
333  int GetSelectionArrayStatus(vtkDataArraySelection *, const char *);
334  void SetSelectionArrayStatus(vtkDataArraySelection *, const char *, int);
335  const char *GetSelectionArrayName(vtkDataArraySelection *, int);
336  void DisableAllSelectionArrays(vtkDataArraySelection *);
337  void EnableAllSelectionArrays(vtkDataArraySelection *);
338 
339  void AddSelectionNames(vtkDataArraySelection *, vtkStringArray *);
340 };
341 
342 #endif