VTK
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 <vector> // STL vector header
28#include <map> // STL map header
29#include <utility> // for STL pair
30
31// Forward Declarations
36class vtkIndent;
38class vtkUniformGrid;
39class vtkDataArray;
40
41class VTKIOAMR_EXPORT vtkAMRBaseReader :
43{
44public:
46 void PrintSelf(ostream &os, vtkIndent indent);
47
52 void Initialize();
53
55
58 vtkSetMacro( EnableCaching, int );
59 vtkGetMacro( EnableCaching, int );
60 vtkBooleanMacro( EnableCaching, int );
61 bool IsCachingEnabled() const
62 {
63 return( (this->EnableCaching)?true:false);
64 };
66
68
73 vtkGetMacro( Controller, vtkMultiProcessController* );
75
77
80 vtkSetMacro( MaxLevel,int);
82
84
88 vtkGetObjectMacro(CellDataArraySelection, vtkDataArraySelection);
89 vtkGetObjectMacro(PointDataArraySelection, vtkDataArraySelection);
91
93
99
101
105 const char* GetPointArrayName(int index);
106 const char* GetCellArrayName(int index);
108
110
114 int GetPointArrayStatus(const char* name);
115 int GetCellArrayStatus(const char* name);
116 void SetPointArrayStatus(const char* name, int status);
117 void SetCellArrayStatus(const char* name, int status);
119
121
125 vtkGetStringMacro( FileName );
126 virtual void SetFileName( const char *fileName ) = 0;
128
132 virtual int GetNumberOfBlocks() = 0;
133
137 virtual int GetNumberOfLevels() = 0;
138
139protected:
142
143 // Desscription:
144 // Checks if this reader instance is attached to a communicator
145 // with more than one MPI processes.
147
152 bool IsBlockMine( const int blockIdx );
153
159 vtkUniformGrid* GetAMRBlock( const int blockIdx );
160
166
174
180 const int blockIdx, vtkUniformGrid *block, const char *fieldName );
181
182
187 const int blockIdx, vtkUniformGrid *block, const char *fieldName );
188
194 void LoadPointData( const int blockIdx, vtkUniformGrid *block );
195
202 void LoadCellData( const int blockIdx, vtkUniformGrid *block );
203
212 int GetBlockProcessId( const int blockIdx );
213
222
226 virtual void ReadMetaData() = 0;
227
231 virtual int GetBlockLevel( const int blockIdx ) = 0;
232
238 virtual int FillMetaData( ) = 0;
239
243 virtual vtkUniformGrid* GetAMRGrid( const int blockIdx ) = 0;
244
248 virtual void GetAMRGridData(
249 const int blockIdx, vtkUniformGrid *block, const char *field ) = 0;
250
255 const int blockIdx, vtkUniformGrid *block, const char *field ) = 0;
256
258
261 virtual int RequestData(
262 vtkInformation* vtkNotUsed(request),
263 vtkInformationVector** vtkNotUsed(inputVector),
264 vtkInformationVector* outputVector );
266 vtkInformation* rqst,
267 vtkInformationVector** inputVector,
268 vtkInformationVector* outputVector );
271
272 // Array selection member variables and methods
276
283
287 virtual void SetUpDataArraySelections() = 0;
288
293 vtkObject *caller,unsigned long eid,void *clientdata,void *calldata );
294
297 char *FileName;
299
304
307
308 std::vector<int> BlockMap;
309
310private:
311 vtkAMRBaseReader( const vtkAMRBaseReader& ) VTK_DELETE_FUNCTION;
312 void operator=( const vtkAMRBaseReader& ) VTK_DELETE_FUNCTION;
313};
314
315#endif /* vtkAMRBaseReader_h */
An abstract class that encapsulates common functionality for all AMR readers.
std::vector< int > BlockMap
void SetupBlockRequest(vtkInformation *outputInfo)
Initializes the request of blocks to be loaded.
int GetNumberOfCellArrays()
void GetAMRData(const int blockIdx, vtkUniformGrid *block, const char *fieldName)
Loads the AMR data corresponding to the given field name.
vtkDataArraySelection * PointDataArraySelection
virtual void GetAMRGridPointData(const int blockIdx, vtkUniformGrid *block, const char *field)=0
Loads the block Point data.
vtkCallbackCommand * SelectionObserver
const char * GetPointArrayName(int index)
Get the name of the point or cell array with the given index in the input.
vtkDataArraySelection * CellDataArraySelection
virtual int GetNumberOfBlocks()=0
Returns the total number of blocks.
vtkUniformGrid * GetAMRBlock(const int blockIdx)
Loads the AMR block corresponding to the given index.
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
virtual void ReadMetaData()=0
Reads all the metadata from the file.
void LoadRequestedBlocks(vtkOverlappingAMR *amrds)
This method loads all the blocks in the BlockMap for the given process.
const char * GetCellArrayName(int index)
static void SelectionModifiedCallback(vtkObject *caller, unsigned long eid, void *clientdata, void *calldata)
Call-back registered with the SelectionObserver.
int GetCellArrayStatus(const char *name)
int GetBlockProcessId(const int blockIdx)
Returns the block process ID for the block corresponding to the given block index.
void LoadCellData(const int blockIdx, vtkUniformGrid *block)
A wrapper that loops over all cell arrays and loads the cell arrays that are enabled,...
virtual int GetBlockLevel(const int blockIdx)=0
Returns the block level for the given block.
bool IsCachingEnabled() const
void AssignAndLoadBlocks(vtkOverlappingAMR *amrds)
This method assigns blocks to processes using block-cyclic distribution.
bool IsBlockMine(const int blockIdx)
Determines if the block is owned by this process based on the the block index and total number of pro...
void SetPointArrayStatus(const char *name, int status)
void GetAMRPointData(const int blockIdx, vtkUniformGrid *block, const char *fieldName)
Loads the AMR point data corresponding to the given field name.
virtual int FillMetaData()=0
Loads all the AMR metadata & constructs the LevelIdxPair12InternalIdx datastructure which maps (level...
int GetPointArrayStatus(const char *name)
Get/Set whether the point or cell array with the given name is to be read.
void InitializeArraySelections()
Initializes the array selections.
virtual int RequestInformation(vtkInformation *rqst, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
This is called by the superclass.
virtual void GetAMRGridData(const int blockIdx, vtkUniformGrid *block, const char *field)=0
Loads the block data.
vtkOverlappingAMR * Metadata
void Initialize()
Initializes the AMR reader.
virtual void SetFileName(const char *fileName)=0
void LoadPointData(const int blockIdx, vtkUniformGrid *block)
A wrapper that loops over point arrays and load the point arrays that are enabled,...
vtkAMRDataSetCache * Cache
void SetCellArrayStatus(const char *name, int status)
vtkMultiProcessController * Controller
virtual ~vtkAMRBaseReader()
virtual int GetNumberOfLevels()=0
Returns the total number of levels.
int FillOutputPortInformation(int port, vtkInformation *info)
See algorithm for more info.
virtual int RequestData(vtkInformation *vtkNotUsed(request), vtkInformationVector **vtkNotUsed(inputVector), vtkInformationVector *outputVector)
Standard Pipeline methods, subclasses may override this method if needed.
int GetNumberOfPointArrays()
Get the number of point or cell arrays available in the input.
virtual vtkUniformGrid * GetAMRGrid(const int blockIdx)=0
Loads the block according to the index w.r.t.
virtual void SetUpDataArraySelections()=0
Initializes the PointDataArraySelection & CellDataArraySelection.
A concrete implementation of vtkObject that provides functionality for caching AMR blocks.
supports function callbacks
Store on/off settings for data arrays for a vtkSource.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:55
a simple class to control print indentation
Definition: vtkIndent.h:40
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Multiprocessing communication superclass.
abstract base class for most VTK objects
Definition: vtkObject.h:60
A base class for all algorithms that take as input vtkOverlappingAMR and produce vtkOverlappingAMR.
hierarchical dataset of vtkUniformGrids
image data with blanking
@ field
Definition: vtkX3D.h:177
@ info
Definition: vtkX3D.h:376
@ port
Definition: vtkX3D.h:447
@ name
Definition: vtkX3D.h:219
@ index
Definition: vtkX3D.h:246
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkBooleanMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkGetStringMacro(ExtensionsString)
Returns a string listing all available extensions.