45 explicit ESmry(
const std::string& filename,
bool loadBaseRunData=
false);
47 int numberOfVectors()
const {
return nVect; }
49 bool hasKey(
const std::string& key)
const;
51 const std::vector<float>& get(
const std::string& name)
const;
52 const std::vector<float>& get(
const SummaryNode& node)
const;
53 std::vector<time_point> dates()
const;
55 std::vector<float> get_at_rstep(
const std::string& name)
const;
56 std::vector<float> get_at_rstep(
const SummaryNode& node)
const;
57 std::vector<time_point> dates_at_rstep()
const;
59 void loadData(
const std::vector<std::string>& vectList)
const;
60 void loadData()
const;
62 bool make_esmry_file();
64 time_point startdate()
const {
return tp_startdat; }
65 std::vector<int> start_v()
const {
return start_vect; }
67 const std::vector<std::string>& keywordList()
const;
68 std::vector<std::string> keywordList(
const std::string& pattern)
const;
69 const std::vector<SummaryNode>& summaryNodeList()
const;
71 int timestepIdxAtReportstepStart(
const int reportStep)
const;
73 size_t numberOfTimeSteps()
const {
return nTstep; }
75 const std::string& get_unit(
const std::string& name)
const;
76 const std::string& get_unit(
const SummaryNode& node)
const;
78 void write_rsm(std::ostream&)
const;
79 void write_rsm_file(std::optional<std::filesystem::path> = std::nullopt)
const;
81 bool all_steps_available();
82 std::string rootname() {
return inputFileName.stem(); }
83 std::tuple<double, double> get_io_elapsed()
const;
86 std::filesystem::path inputFileName;
87 RstEntry restart_info;
89 int nI, nJ, nK, nSpecFiles;
93 std::vector<bool> formattedFiles;
94 std::vector<std::string> dataFileList;
95 mutable std::vector<std::vector<float>> vectorData;
96 mutable std::vector<bool> vectorLoaded;
97 std::vector<TimeStepEntry> timeStepList;
98 std::vector<TimeStepEntry> miniStepList;
99 std::vector<std::map<int, int>> arrayPos;
100 std::vector<std::string> keyword;
101 std::map<std::string, int> keyword_index;
102 std::vector<int> nParamsSpecFile;
104 std::vector<std::vector<std::string>> keywordListSpecFile;
106 std::vector<int> seqIndex;
107 std::vector<int> mini_steps;
109 void ijk_from_global_index(
int glob,
int &i,
int &j,
int &k)
const;
111 std::vector<SummaryNode> summaryNodes;
112 std::unordered_map<std::string, std::string> kwunits;
114 time_point tp_startdat;
115 std::vector<int> start_vect;
117 mutable double m_io_opening;
118 mutable double m_io_loading;
120 std::vector<std::string> checkForMultipleResultFiles(
const std::filesystem::path& rootN,
bool formatted)
const;
122 void getRstString(
const std::vector<std::string>& restartArray,
123 std::filesystem::path& pathRst,
124 std::filesystem::path& rootN)
const;
126 void updatePathAndRootName(std::filesystem::path& dir, std::filesystem::path& rootN)
const;
129 std::string makeKeyString(
const std::string& keyword,
const std::string& wgname,
int num,
130 const std::optional<Opm::EclIO::lgr_info>
lgr_info)
const;
132 std::string unpackNumber(
const SummaryNode&)
const;
136 void write_block(std::ostream &,
bool write_dates,
const std::vector<std::string>& time_column,
const std::vector<SummaryNode>&)
const;
138 template <
typename T>
139 std::vector<T> rstep_vector(
const std::vector<T>& full_vector)
const {
140 std::vector<T> result;
141 result.reserve(seqIndex.size());
143 for (
const auto& ind : seqIndex){
144 result.push_back(full_vector[ind]);
150 std::vector<std::tuple <std::string, uint64_t>> getListOfArrays(std::string filename,
bool formatted);
151 std::vector<int> makeKeywPosVector(
int speInd)
const;
152 std::string read_string_from_disk(std::fstream& fileH, uint64_t size)
const;
154 void read_ministeps_from_disk();
155 int read_ministep_formatted(std::fstream& fileH);