46 explicit ESmry(
const std::string& filename,
bool loadBaseRunData=
false);
48 int numberOfVectors()
const {
return nVect; }
50 bool hasKey(
const std::string& key)
const;
52 const std::vector<float>& get(
const std::string& name)
const;
53 const std::vector<float>& get(
const SummaryNode& node)
const;
54 std::vector<time_point> dates()
const;
56 std::vector<float> get_at_rstep(
const std::string& name)
const;
57 std::vector<float> get_at_rstep(
const SummaryNode& node)
const;
58 std::vector<time_point> dates_at_rstep()
const;
60 void loadData(
const std::vector<std::string>& vectList)
const;
61 void loadData()
const;
63 bool make_esmry_file();
65 time_point startdate()
const {
return tp_startdat; }
66 const std::vector<int>& start_v()
const {
return start_vect; }
68 const std::vector<std::string>& keywordList()
const;
69 std::vector<std::string> keywordList(
const std::string& pattern)
const;
70 const std::vector<SummaryNode>& summaryNodeList()
const;
72 int timestepIdxAtReportstepStart(
const int reportStep)
const;
74 size_t numberOfTimeSteps()
const {
return nTstep; }
76 const std::string& get_unit(
const std::string& name)
const;
77 const std::string& get_unit(
const SummaryNode& node)
const;
79 void write_rsm(std::ostream&)
const;
80 void write_rsm_file(std::optional<std::filesystem::path> = std::nullopt)
const;
82 bool all_steps_available();
83 std::string rootname() {
return inputFileName.stem().generic_string(); }
84 std::tuple<double, double> get_io_elapsed()
const;
87 std::filesystem::path inputFileName;
88 RstEntry restart_info;
90 int nI, nJ, nK, nSpecFiles;
94 std::vector<bool> formattedFiles;
95 std::vector<std::string> dataFileList;
96 mutable std::vector<std::vector<float>> vectorData;
97 mutable std::vector<bool> vectorLoaded;
98 std::vector<TimeStepEntry> timeStepList;
99 std::vector<TimeStepEntry> miniStepList;
100 std::vector<std::map<int, int>> arrayPos;
101 std::vector<std::string> keyword;
102 std::map<std::string, int> keyword_index;
103 std::vector<int> nParamsSpecFile;
105 std::vector<std::vector<std::string>> keywordListSpecFile;
107 std::vector<int> seqIndex;
108 std::vector<int> mini_steps;
110 std::vector<std::string> ignore_keyword_list = {
"TNAVHEAD",
"TNAVTIME"};
112 void ijk_from_global_index(
int glob,
int &i,
int &j,
int &k)
const;
114 std::vector<SummaryNode> summaryNodes;
115 std::unordered_map<std::string, std::string> kwunits;
117 time_point tp_startdat;
118 std::vector<int> start_vect;
120 mutable double m_io_opening;
121 mutable double m_io_loading;
123 std::vector<std::string> checkForMultipleResultFiles(
const std::filesystem::path& rootN,
bool formatted)
const;
125 void getRstString(
const std::vector<std::string>& restartArray,
126 std::filesystem::path& pathRst,
127 std::filesystem::path& rootN)
const;
129 void updatePathAndRootName(std::filesystem::path& dir, std::filesystem::path& rootN)
const;
132 std::string makeKeyString(
const std::string& keyword,
const std::string& wgname,
int num,
133 const std::optional<Opm::EclIO::lgr_info>
lgr_info)
const;
135 std::string unpackNumber(
const SummaryNode&)
const;
139 void write_block(std::ostream &,
bool write_dates,
const std::vector<std::string>& time_column,
const std::vector<SummaryNode>&)
const;
141 template <
typename T>
142 std::vector<T> rstep_vector(
const std::vector<T>& full_vector)
const {
143 std::vector<T> result;
144 result.reserve(seqIndex.size());
146 std::ranges::transform(seqIndex, std::back_inserter(result),
147 [&full_vector](
const auto& ind)
148 {
return full_vector[ind]; });
153 std::vector<std::tuple <std::string, uint64_t>>
154 getListOfArrays(
const std::string& filename,
bool formatted);
156 std::vector<int> makeKeywPosVector(
int speInd)
const;
157 std::string read_string_from_disk(std::fstream& fileH, uint64_t size)
const;
159 void read_ministeps_from_disk();
160 int read_ministep_formatted(std::fstream& fileH);