Hdf5DataReader.hpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef HDF5DATAREADER_HPP_
00037 #define HDF5DATAREADER_HPP_
00038
00039
00040 #ifndef H5_USE_16_API
00041 #define H5_USE_16_API 1
00042 #endif
00043
00044 #include <petscvec.h>
00045 #include <vector>
00046 #include <map>
00047
00048 #include "AbstractHdf5Access.hpp"
00049
00055 class Hdf5DataReader : public AbstractHdf5Access
00056 {
00057 private:
00058
00059 unsigned mVariablesDatasetRank;
00061 hsize_t mNumberTimesteps;
00063 std::vector<std::string> mVariableNames;
00064 std::map<std::string, unsigned> mVariableToColumnIndex;
00065 std::map<std::string, std::string> mVariableToUnit;
00067 bool mClosed;
00072 void CommonConstructor();
00073
00074 public:
00075
00085 Hdf5DataReader(const std::string& rDirectory,
00086 const std::string& rBaseName,
00087 bool makeAbsolute=true,
00088 std::string datasetName="Data");
00089
00097 Hdf5DataReader(const FileFinder& rDirectory,
00098 const std::string& rBaseName,
00099 std::string datasetName="Data");
00100
00107 std::vector<double> GetVariableOverTime(const std::string& rVariableName,
00108 unsigned nodeIndex);
00109
00117 std::vector<std::vector<double> > GetVariableOverTimeOverMultipleNodes(const std::string& rVariableName,
00118 unsigned lowerIndex,
00119 unsigned upperIndex);
00120
00128 void GetVariableOverNodes(Vec data, const std::string& rVariableName, unsigned timestep=0);
00129
00133 std::vector<double> GetUnlimitedDimensionValues();
00134
00138 unsigned GetNumberOfRows();
00139
00143 std::vector<std::string> GetVariableNames();
00144
00150 std::string GetUnit(const std::string& rVariableName);
00151
00155 void Close();
00156
00160 ~Hdf5DataReader();
00161 };
00162
00163 #endif