VTK  9.7.1
vtkHDFReader.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
50
51#ifndef vtkHDFReader_h
52#define vtkHDFReader_h
53
54#include "vtkDataAssembly.h" // For vtkDataAssembly
56#include "vtkDeprecation.h" // For VTK_DEPRECATED_IN_9_7_0 VTK_DEPRECATED_IN_9_6_0
57#include "vtkIOHDFModule.h" // For export macro
58#include "vtkSmartPointer.h" // For vtkSmartPointer
59
60#include <array> // For storing the time range
61#include <memory> // For std::unique_ptr
62#include <vector> // For storing list of values
63
64VTK_ABI_NAMESPACE_BEGIN
67class vtkCellData;
68class vtkCommand;
70class vtkDataSet;
73class vtkImageData;
74class vtkInformation;
80class vtkPointData;
81class vtkPolyData;
85class vtkTable;
87
93
94class VTKIOHDF_EXPORT vtkHDFReader : public vtkDataObjectAlgorithm
95{
96public:
97 static vtkHDFReader* New();
99 void PrintSelf(ostream& os, vtkIndent indent) override;
100
102
108
110
119
120 enum
121 {
124 };
125
127
139 vtkSetClampMacro(PieceDistribution, int, Block, Interleave);
140 vtkGetMacro(PieceDistribution, int);
142
152 virtual vtkTypeBool CanReadFile(VTK_FILEPATH const char* name);
153 static bool CanReadFile(vtkResourceStream* stream);
155
157
163
165
174
176
182
184
188 const char* GetPointArrayName(int index);
189 const char* GetCellArrayName(int index);
191
193
203 vtkGetMacro(Step, vtkIdType);
204 vtkSetMacro(Step, vtkIdType);
205 vtkGetMacro(TimeValue, double);
206 const std::array<double, 2>& GetTimeRange() const { return this->TimeRange; }
208
210
213 VTK_DEPRECATED_IN_9_7_0("Do not use, cache is on by default and should not be disabled.")
214 virtual bool GetUseCache();
215 VTK_DEPRECATED_IN_9_7_0("Do not use, cache is on by default and should not be disabled.")
216 virtual void SetUseCache(bool use);
217 VTK_DEPRECATED_IN_9_7_0("Do not use, cache is on by default and should not be disabled.")
218 virtual void UseCacheOn();
219 VTK_DEPRECATED_IN_9_7_0("Do not use, cache is on by default and should not be disabled.")
220 virtual void UseCacheOff();
222
224
230 vtkSetMacro(MaximumLevelsToReadByDefaultForAMR, unsigned int);
231 vtkGetMacro(MaximumLevelsToReadByDefaultForAMR, unsigned int);
233
235
238 VTK_DEPRECATED_IN_9_7_0("Do not use, will be removed.")
240 VTK_DEPRECATED_IN_9_7_0("Do not use, will be removed.")
241 void SetAttributeOriginalIdName(vtkIdType attribute, const std::string& name);
243
248
249protected:
251 ~vtkHDFReader() override;
252
256 int CanReadFileVersion(int major, int minor);
257
259
264 int Read(vtkInformation* outInfo, vtkImageData* data);
267 int Read(vtkInformation* outInfo, vtkTable* data);
274 int ReadRecursively(vtkInformation* outInfo, vtkMultiBlockDataSet* data, const std::string& path);
276
277 VTK_DEPRECATED_IN_9_6_0("This method is deprecated, do not use")
278 int Read(const std::vector<vtkIdType>& numberOfPoints,
279 const std::vector<vtkIdType>& numberOfCells,
280 const std::vector<vtkIdType>& numberOfConnectivityIds, vtkIdType partOffset,
281 vtkIdType startingPointOffset, vtkIdType startingCellOffset,
282 vtkIdType startingConnectctivityIdOffset, int filePiece, vtkUnstructuredGrid* pieceData);
283
287 VTK_DEPRECATED_IN_9_7_0("This method is deprecated, do not use")
289
294 vtkObject* caller, unsigned long eid, void* clientdata, void* calldata);
295
297
302 vtkInformationVector* outputVector) override;
304 vtkInformationVector* outputVector) override;
306 vtkInformationVector* outputVector) override;
308
313
318
322 char* FileName;
323
328
334
341
346
348
353 double TimeValue = 0.0;
354 std::array<double, 2> TimeRange;
356
358
359 bool UseCache = true;
360 struct DataCache;
361 std::shared_ptr<DataCache> Cache;
362
363private:
364 vtkHDFReader(const vtkHDFReader&) = delete;
365 void operator=(const vtkHDFReader&) = delete;
366
367 class Implementation;
368 Implementation* Impl;
369
374 bool ReadData(vtkInformation* outInfo, vtkDataObject* data);
375
381 bool ReadStructuredData(
382 vtkDataSet* data, const int* WholeExtent, const std::vector<int>& updateExtent);
383
388 bool ReadAMRData(vtkOverlappingAMR* data, unsigned int maxLevel,
389 const std::map<int, vtkDataArraySelection*>& dataArraySelection, bool isTemporalData);
390
396 int Read(const std::vector<vtkIdType>& numberOfPoints,
397 const std::vector<vtkIdType>& numberOfCells,
398 const std::vector<vtkIdType>& numberOfConnectivityIds,
399 const std::vector<vtkIdType>& numberOfFaces,
400 const std::vector<vtkIdType>& numberOfPolyhedronToFaceIds,
401 const std::vector<vtkIdType>& numberOfFaceConnectivityIds,
402 vtkHDFUtilities::TemporalGeometryOffsets& geoOffsets, int filePiece,
403 vtkUnstructuredGrid* pieceData);
404
410 int Read(const std::vector<vtkIdType>& numberOfTrees, const std::vector<vtkIdType>& numberOfCells,
411 const std::vector<vtkIdType>& numberOfDepths, const std::vector<vtkIdType>& descriptorSizes,
412 const vtkHDFUtilities::TemporalHyperTreeGridOffsets& htgTemporalOffsets, int filePiece,
413 vtkHyperTreeGrid* pieceData);
414
418 void SetHasTemporalData(bool useTemporalData);
419
426 std::vector<int> GetPieceAssignmentForDistribution(
427 int pieceIdx, int numDatasets, int numPieces) const;
428
433 void GenerateAssembly();
434
439 bool RetrieveStepsFromAssembly();
440
445 bool RetrieveDataArraysFromAssembly();
446
450 bool ReadFieldArrays(vtkDataObject* data);
451
452 vtkSmartPointer<vtkDataObject> OutputCache;
453
454 std::map<vtkIdType, std::string> AttributesOriginalIdName{
455 { vtkDataObject::POINT, "__pointsOriginalIds__" },
456 { vtkDataObject::CELL, "__cellOriginalIds__" }, { vtkDataObject::FIELD, "__fieldOriginalIds__" }
457 };
458
459 bool HasTemporalData = false;
460 std::string CompositeCachePath; // Identifier for the current composite piece
461 int PieceDistribution = Interleave;
462};
463
464VTK_ABI_NAMESPACE_END
465#endif
Abstract superclass for all arrays.
supports function callbacks
represent and manipulate cell attribute data
superclass for callback/observer methods
Definition vtkCommand.h:385
Store on/off settings for data arrays, etc.
hierarchical representation to use with vtkPartitionedDataSetCollection
general representation of visualization data
represent and manipulate attribute data in a dataset
abstract class to specify dataset behavior
Definition vtkDataSet.h:166
Implementation for the vtkHDFReader.
int GetNumberOfPointArrays()
Get the number of point or cell arrays available in the input.
int GetNumberOfCellArrays()
Get the number of point or cell arrays available in the input.
static bool CanReadFile(vtkResourceStream *stream)
const char * GetCellArrayName(int index)
Get the name of the point or cell array with the given index in the input.
vtkIdType Step
Temporal data properties.
vtkSmartPointer< vtkResourceStream > Stream
The input stream.
virtual vtkDataArraySelection * GetFieldDataArraySelection()
Get the data array selection tables used to configure which data arrays are loaded by the reader.
vtkDataSet * GetOutputAsDataSet(int index)
Get the output as a vtkDataSet pointer.
std::shared_ptr< DataCache > Cache
virtual vtkDataArraySelection * GetCellDataArraySelection()
Get the data array selection tables used to configure which data arrays are loaded by the reader.
virtual bool GetUseCache()
Boolean property determining whether to use the internal cache or not (default is true).
virtual vtkTypeBool CanReadFile(const char *name)
Return true if, after a quick check of file header, it looks like the provided file or stream can be ...
int CanReadFileVersion(int major, int minor)
Test if the reader can read a file with the given version number.
int Read(vtkInformation *outInfo, vtkImageData *data)
Reads the 'data' requested in 'outInfo' (through extents or pieces) for a specialized data type.
virtual void SetUseCache(bool use)
Boolean property determining whether to use the internal cache or not (default is true).
const std::array< double, 2 > & GetTimeRange() const
Getters and setters for temporal data.
vtkSetFilePathMacro(FileName)
Get/Set the name of the input file.
int RequestInformation(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override
Standard functions to specify the type, information and read the data from the file.
int RequestDataObject(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override
Standard functions to specify the type, information and read the data from the file.
vtkMTimeType GetMTime() override
Overridden to take into account mtime from the internal vtkResourceStream.
int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override
Standard functions to specify the type, information and read the data from the file.
static vtkHDFReader * New()
virtual void UseCacheOff()
Boolean property determining whether to use the internal cache or not (default is true).
vtkGetFilePathMacro(FileName)
Get/Set the name of the input file.
static void SelectionModifiedCallback(vtkObject *caller, unsigned long eid, void *clientdata, void *calldata)
Modify this object when an array selection is changed.
int AddFieldArrays(vtkDataObject *data)
Read the field arrays from the file and add them to the dataset.
std::array< double, 2 > TimeRange
Assembly used for PartitionedDataSetCollection.
vtkResourceStream * GetStream()
Specify stream to read from When both Stream and Filename are set, stream is used.
unsigned int MaximumLevelsToReadByDefaultForAMR
void SetAttributeOriginalIdName(vtkIdType attribute, const std::string &name)
Get or Set the Original id name of an attribute (POINT, CELL, FIELD...)
vtkIdType NumberOfSteps
Assembly used for PartitionedDataSetCollection.
double TimeValue
Assembly used for PartitionedDataSetCollection.
const char * GetPointArrayName(int index)
Get the name of the point or cell array with the given index in the input.
char * FileName
The input file's name.
int ReadRecursively(vtkInformation *outInfo, vtkMultiBlockDataSet *data, const std::string &path)
Reads the 'data' requested in 'outInfo' (through extents or pieces) for a specialized data type.
int SetupInformation(vtkInformation *outInfo)
Setup the information pass in parameter based on current vtkHDF file loaded.
virtual vtkDataArraySelection * GetPointDataArraySelection()
Get the data array selection tables used to configure which data arrays are loaded by the reader.
bool GetHasTemporalData()
Getters and setters for temporal data.
vtkCallbackCommand * SelectionObserver
The observer to modify this object when the array selections are modified.
virtual vtkDataArraySelection * GetRowDataArraySelection()
Get the data array selection tables used to configure which data arrays are loaded by the reader.
std::string GetAttributeOriginalIdName(vtkIdType attribute)
Get or Set the Original id name of an attribute (POINT, CELL, FIELD...)
void SetStream(vtkResourceStream *stream)
Specify stream to read from When both Stream and Filename are set, stream is used.
vtkSmartPointer< vtkDataAssembly > Assembly
Assembly used for PartitionedDataSetCollection.
void PrintPieceInformation(vtkInformation *outInfo)
Print update number of pieces, piece number and ghost levels.
vtkDataSet * GetOutputAsDataSet()
Get the output as a vtkDataSet pointer.
std::map< int, vtkDataArraySelection * > DataArraySelection
The array selections.
virtual void UseCacheOn()
Boolean property determining whether to use the internal cache or not (default is true).
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
A dataset containing a grid of vtkHyperTree instances arranged as a rectilinear grid.
topologically and geometrically regular array of data
a simple class to control print indentation
Definition vtkIndent.h:108
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Composite dataset that organizes datasets into blocks.
a multi-resolution dataset based on vtkCartesianGrid allowing overlaps
Composite dataset that groups datasets as a collection.
composite dataset to encapsulates a dataset consisting of partitions.
represent and manipulate point attribute data
concrete dataset represents vertices, lines, polygons, and triangle strips
a dataset that is topologically regular with variable spacing in the three coordinate directions
Abstract class used for custom streams.
Hold a reference to a vtkObjectBase instance.
topologically regular array of data
A table, which contains similar-typed columns of data.
Definition vtkTable.h:169
dataset represents arbitrary combinations of all possible cell types
Common utility variables and functions for reader and writer of vtkHDF.
int vtkTypeBool
Definition vtkABI.h:64
#define VTK_DEPRECATED_IN_9_7_0(reason)
#define VTK_DEPRECATED_IN_9_6_0(reason)
int vtkIdType
Definition vtkType.h:363
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:318
#define VTK_FILEPATH