VTK  9.5.20250810
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
23VTK_ABI_NAMESPACE_BEGIN
26
27class VTKIOAMR_EXPORT vtkAMREnzoReader : public vtkAMRBaseReader
28{
29public:
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
58protected:
61
68
73 int GetIndexFromArrayName(std::string arrayName);
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
92 double GetConversionFactor(const std::string& name);
93
97 void ReadMetaData() override;
98
102 int GetBlockLevel(int blockIdx) override;
103
107 int FillMetaData() override;
108
112 vtkUniformGrid* GetAMRGrid(int blockIdx) override;
113
117 void GetAMRGridData(int blockIdx, vtkUniformGrid* block, const char* field) override;
118
122 void GetAMRGridPointData(int vtkNotUsed(blockIdx), vtkUniformGrid* vtkNotUsed(block),
123 const char* vtkNotUsed(field)) override
124 {
125 }
126
131
134
135private:
136 vtkAMREnzoReader(const vtkAMREnzoReader&) = delete;
137 void operator=(const vtkAMREnzoReader&) = delete;
138
139 void ComputeStats(
140 vtkEnzoReaderInternal* internal, std::vector<unsigned int>& blocksPerLevel, double min[3]);
141
142 vtkEnzoReaderInternal* Internal;
143
144 std::map<std::string, int> label2idx;
145 std::map<int, double> conversionFactors;
146};
147
148VTK_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 GetAMRGridPointData(int blockIdx, vtkUniformGrid *block, const char *field) override
See vtkAMRBaseReader::GetAMRGridData.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int GetBlockLevel(int blockIdx) override
See vtkAMRBaseReader::GetBlockLevel.
int FillMetaData() override
See vtkAMRBaseReader::FillMetaData.
int GetNumberOfLevels() override
See vtkAMRBaseReader::GetNumberOfLevels.
vtkTypeBool ConvertToCGS
void SetFileName(const char *fileName) override
See vtkAMRBaseReader::SetFileName.
~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.
vtkUniformGrid * GetAMRGrid(int blockIdx) override
See vtkAMRBaseReader::GetAMRGrid.
void SetUpDataArraySelections() override
See vtkAMRBaseReader::SetUpDataArraySelections.
void ReadMetaData() override
See vtkAMRBaseReader::ReadMetaData.
double GetConversionFactor(const std::string &name)
Given the variable name, return the conversion factor used to convert the data to CGS.
static vtkAMREnzoReader * New()
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
a multi-resolution dataset based on vtkUniformGrid allowing overlaps
Deprecated vtkImageData.
int vtkTypeBool
Definition vtkABI.h:64
#define VTK_FILEPATH