VTK  9.0.1
vtkAMRBaseReader.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkAMRBaseReader.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  =========================================================================*/
22 #ifndef vtkAMRBaseReader_h
23 #define vtkAMRBaseReader_h
24 
25 #include "vtkIOAMRModule.h" // For export macro
27 #include <map> // STL map header
28 #include <utility> // for STL pair
29 #include <vector> // STL vector header
30 
31 // Forward Declarations
32 class vtkOverlappingAMR;
35 class vtkCallbackCommand;
36 class vtkIndent;
37 class vtkAMRDataSetCache;
38 class vtkUniformGrid;
39 class vtkDataArray;
40 
41 class VTKIOAMR_EXPORT vtkAMRBaseReader : public vtkOverlappingAMRAlgorithm
42 {
43 public:
45  void PrintSelf(ostream& os, vtkIndent indent) override;
46 
51  void Initialize();
52 
54 
57  vtkSetMacro(EnableCaching, vtkTypeBool);
58  vtkGetMacro(EnableCaching, vtkTypeBool);
59  vtkBooleanMacro(EnableCaching, vtkTypeBool);
60  bool IsCachingEnabled() const { return ((this->EnableCaching) ? true : false); };
62 
64 
68  vtkSetMacro(Controller, vtkMultiProcessController*);
69  vtkGetMacro(Controller, vtkMultiProcessController*);
71 
73 
76  vtkSetMacro(MaxLevel, int);
78 
80 
84  vtkGetObjectMacro(CellDataArraySelection, vtkDataArraySelection);
85  vtkGetObjectMacro(PointDataArraySelection, vtkDataArraySelection);
87 
89 
92  int GetNumberOfPointArrays();
93  int GetNumberOfCellArrays();
95 
97 
101  const char* GetPointArrayName(int index);
102  const char* GetCellArrayName(int index);
104 
106 
110  int GetPointArrayStatus(const char* name);
111  int GetCellArrayStatus(const char* name);
112  void SetPointArrayStatus(const char* name, int status);
113  void SetCellArrayStatus(const char* name, int status);
115 
117 
121  vtkGetStringMacro(FileName);
122  virtual void SetFileName(const char* fileName) = 0;
124 
128  virtual int GetNumberOfBlocks() = 0;
129 
133  virtual int GetNumberOfLevels() = 0;
134 
135 protected:
137  ~vtkAMRBaseReader() override;
138 
139  // Desscription:
140  // Checks if this reader instance is attached to a communicator
141  // with more than one MPI processes.
142  bool IsParallel();
143 
148  bool IsBlockMine(const int blockIdx);
149 
155  vtkUniformGrid* GetAMRBlock(const int blockIdx);
156 
161  void AssignAndLoadBlocks(vtkOverlappingAMR* amrds);
162 
169  void LoadRequestedBlocks(vtkOverlappingAMR* amrds);
170 
175  void GetAMRData(const int blockIdx, vtkUniformGrid* block, const char* fieldName);
176 
180  void GetAMRPointData(const int blockIdx, vtkUniformGrid* block, const char* fieldName);
181 
187  void LoadPointData(const int blockIdx, vtkUniformGrid* block);
188 
195  void LoadCellData(const int blockIdx, vtkUniformGrid* block);
196 
205  int GetBlockProcessId(const int blockIdx);
206 
214  void SetupBlockRequest(vtkInformation* outputInfo);
215 
219  virtual void ReadMetaData() = 0;
220 
224  virtual int GetBlockLevel(const int blockIdx) = 0;
225 
231  virtual int FillMetaData() = 0;
232 
236  virtual vtkUniformGrid* GetAMRGrid(const int blockIdx) = 0;
237 
241  virtual void GetAMRGridData(const int blockIdx, vtkUniformGrid* block, const char* field) = 0;
242 
246  virtual void GetAMRGridPointData(
247  const int blockIdx, vtkUniformGrid* block, const char* field) = 0;
248 
250 
253  int RequestData(vtkInformation* vtkNotUsed(request),
254  vtkInformationVector** vtkNotUsed(inputVector), vtkInformationVector* outputVector) override;
255  int RequestInformation(vtkInformation* rqst, vtkInformationVector** inputVector,
256  vtkInformationVector* outputVector) override;
259 
260  // Array selection member variables and methods
264 
270  void InitializeArraySelections();
271 
275  virtual void SetUpDataArraySelections() = 0;
276 
280  static void SelectionModifiedCallback(
281  vtkObject* caller, unsigned long eid, void* clientdata, void* calldata);
282 
284  int MaxLevel;
285  char* FileName;
287 
292 
295 
296  std::vector<int> BlockMap;
297 
298 private:
299  vtkAMRBaseReader(const vtkAMRBaseReader&) = delete;
300  void operator=(const vtkAMRBaseReader&) = delete;
301 };
302 
303 #endif /* vtkAMRBaseReader_h */
vtkAMRBaseReader::BlockMap
std::vector< int > BlockMap
Definition: vtkAMRBaseReader.h:296
vtkOverlappingAMRAlgorithm::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:35
vtkUniformGridAMRAlgorithm::RequestData
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
Definition: vtkUniformGridAMRAlgorithm.h:90
vtkUniformGrid
image data with blanking
Definition: vtkUniformGrid.h:34
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:62
vtkAMRBaseReader::LoadedMetaData
bool LoadedMetaData
Definition: vtkAMRBaseReader.h:294
vtkAMRBaseReader::Cache
vtkAMRDataSetCache * Cache
Definition: vtkAMRBaseReader.h:289
vtkAMRBaseReader::PointDataArraySelection
vtkDataArraySelection * PointDataArraySelection
Definition: vtkAMRBaseReader.h:261
vtkOverlappingAMRAlgorithm::FillOutputPortInformation
int FillOutputPortInformation(int port, vtkInformation *info) override
See algorithm for more info.
vtkAMRBaseReader::CellDataArraySelection
vtkDataArraySelection * CellDataArraySelection
Definition: vtkAMRBaseReader.h:262
vtkDataArray
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:49
vtkAMRBaseReader::Controller
vtkMultiProcessController * Controller
Definition: vtkAMRBaseReader.h:286
vtkDataArraySelection
Store on/off settings for data arrays for a vtkSource.
Definition: vtkDataArraySelection.h:34
vtkAMRBaseReader
Definition: vtkAMRBaseReader.h:41
vtkX3D::port
@ port
Definition: vtkX3D.h:453
vtkAMRBaseReader::NumBlocksFromFile
int NumBlocksFromFile
Definition: vtkAMRBaseReader.h:290
vtkMultiProcessController
Multiprocessing communication superclass.
Definition: vtkMultiProcessController.h:75
vtkAMRBaseReader::IsCachingEnabled
bool IsCachingEnabled() const
Definition: vtkAMRBaseReader.h:60
vtkAMRBaseReader::FileName
char * FileName
Definition: vtkAMRBaseReader.h:285
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkX3D::field
@ field
Definition: vtkX3D.h:183
vtkOverlappingAMRAlgorithm
Definition: vtkOverlappingAMRAlgorithm.h:32
vtkAMRDataSetCache
Definition: vtkAMRDataSetCache.h:35
vtkAMRBaseReader::SelectionObserver
vtkCallbackCommand * SelectionObserver
Definition: vtkAMRBaseReader.h:263
vtkOverlappingAMR
hierarchical dataset of vtkUniformGrids
Definition: vtkOverlappingAMR.h:40
vtkX3D::name
@ name
Definition: vtkX3D.h:225
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:73
vtkX3D::info
@ info
Definition: vtkX3D.h:382
vtkAMRBaseReader::NumBlocksFromCache
int NumBlocksFromCache
Definition: vtkAMRBaseReader.h:291
vtkUniformGridAMRAlgorithm::RequestInformation
virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
Definition: vtkUniformGridAMRAlgorithm.h:81
vtkAMRBaseReader::InitialRequest
bool InitialRequest
Definition: vtkAMRBaseReader.h:283
vtkCallbackCommand
supports function callbacks
Definition: vtkCallbackCommand.h:44
vtkAMRBaseReader::Metadata
vtkOverlappingAMR * Metadata
Definition: vtkAMRBaseReader.h:293
vtkOverlappingAMRAlgorithm.h
vtkAMRBaseReader::MaxLevel
int MaxLevel
Definition: vtkAMRBaseReader.h:284
vtkX3D::index
@ index
Definition: vtkX3D.h:252
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkAMRBaseReader::EnableCaching
vtkTypeBool EnableCaching
Definition: vtkAMRBaseReader.h:288