VTK  9.3.20240419
vtkAMREnzoReader.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
14 #ifndef vtkAMREnzoReader_h
15 #define vtkAMREnzoReader_h
16 
17 #include "vtkAMRBaseReader.h"
18 #include "vtkIOAMRModule.h" // For export macro
19 
20 #include <map> // For STL map
21 #include <string> // For std::string
22 
23 VTK_ABI_NAMESPACE_BEGIN
24 class vtkOverlappingAMR;
26 
27 class VTKIOAMR_EXPORT vtkAMREnzoReader : public vtkAMRBaseReader
28 {
29 public:
30  static vtkAMREnzoReader* New();
32  void PrintSelf(ostream& os, vtkIndent indent) override;
33 
35 
38  vtkSetMacro(ConvertToCGS, vtkTypeBool);
39  vtkGetMacro(ConvertToCGS, vtkTypeBool);
40  vtkBooleanMacro(ConvertToCGS, vtkTypeBool);
42 
46  int GetNumberOfBlocks() override;
47 
51  int GetNumberOfLevels() override;
52 
56  void SetFileName(VTK_FILEPATH const char* fileName) override;
57 
58 protected:
60  ~vtkAMREnzoReader() override;
61 
68 
74 
79  void ParseLabel(const std::string& labelString, int& idx, std::string& label);
80 
85  void ParseCFactor(const std::string& labelString, int& idx, double& factor);
86 
93 
97  void ReadMetaData() override;
98 
102  int GetBlockLevel(int blockIdx) override;
103 
105  vtkEnzoReaderInternal* internal, std::vector<int>& blocksPerLevel, double min[3]);
106 
110  int FillMetaData() override;
111 
115  vtkUniformGrid* GetAMRGrid(int blockIdx) override;
116 
120  void GetAMRGridData(int blockIdx, vtkUniformGrid* block, const char* field) override;
121 
125  void GetAMRGridPointData(int vtkNotUsed(blockIdx), vtkUniformGrid* vtkNotUsed(block),
126  const char* vtkNotUsed(field)) override
127  {
128  }
129 
133  void SetUpDataArraySelections() override;
134 
136  bool IsReady;
137 
138 private:
139  vtkAMREnzoReader(const vtkAMREnzoReader&) = delete;
140  void operator=(const vtkAMREnzoReader&) = delete;
141 
142  vtkEnzoReaderInternal* Internal;
143 
144  std::map<std::string, int> label2idx;
145  std::map<int, double> conversionFactors;
146 };
147 
148 VTK_ABI_NAMESPACE_END
149 #endif /* vtkAMREnzoReader_h */
An abstract class that encapsulates common functionality for all AMR readers.
A concrete instance of vtkAMRBaseReader that implements functionality for reading Enzo AMR datasets.
void ParseLabel(const std::string &labelString, int &idx, std::string &label)
Given the label string, this method parses the attribute label and the string index.
int GetNumberOfBlocks() override
See vtkAMRBaseReader::GetNumberOfBlocks.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetFileName(VTK_FILEPATH const char *fileName) override
See vtkAMRBaseReader::SetFileName.
int GetBlockLevel(int blockIdx) override
See vtkAMRBaseReader::GetBlockLevel.
int FillMetaData() override
See vtkAMRBaseReader::FillMetaData.
int GetNumberOfLevels() override
See vtkAMRBaseReader::GetNumberOfLevels.
vtkUniformGrid * GetAMRGrid(int blockIdx) override
See vtkAMRBaseReader::GetAMRGrid.
vtkTypeBool ConvertToCGS
static vtkAMREnzoReader * New()
void ComputeStats(vtkEnzoReaderInternal *internal, std::vector< int > &blocksPerLevel, double min[3])
~vtkAMREnzoReader() override
void GetAMRGridData(int blockIdx, vtkUniformGrid *block, const char *field) override
See vtkAMRBaseReader::GetAMRGridData.
void ParseCFactor(const std::string &labelString, int &idx, double &factor)
Given the label string, this method parses the corresponding attribute index and conversion factor.
void ParseConversionFactors()
Parses the parameters file and extracts the conversion factors that are used to convert to CGS units.
void SetUpDataArraySelections() override
See vtkAMRBaseReader::SetUpDataArraySelections.
void ReadMetaData() override
See vtkAMRBaseReader::ReadMetaData.
void GetAMRGridPointData(int vtkNotUsed(blockIdx), vtkUniformGrid *vtkNotUsed(block), const char *vtkNotUsed(field)) override
See vtkAMRBaseReader::GetAMRGridData.
double GetConversionFactor(const std::string &name)
Given the variable name, return the conversion factor used to convert the data to CGS.
int GetIndexFromArrayName(std::string arrayName)
Given an array name of the form "array[idx]" this method extracts and returns the corresponding index...
a simple class to control print indentation
Definition: vtkIndent.h:108
hierarchical dataset of vtkUniformGrids
image data with blanking
@ field
Definition: vtkX3D.h:177
@ name
Definition: vtkX3D.h:219
@ string
Definition: vtkX3D.h:490
int vtkTypeBool
Definition: vtkABI.h:64
#define VTK_FILEPATH