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 void ijk_from_global_index(
int glob,
int &i,
int &j,
int &k)
const;
112 std::vector<SummaryNode> summaryNodes;
113 std::unordered_map<std::string, std::string> kwunits;
115 time_point tp_startdat;
116 std::vector<int> start_vect;
118 mutable double m_io_opening;
119 mutable double m_io_loading;
121 std::vector<std::string> checkForMultipleResultFiles(
const std::filesystem::path& rootN,
bool formatted)
const;
123 void getRstString(
const std::vector<std::string>& restartArray,
124 std::filesystem::path& pathRst,
125 std::filesystem::path& rootN)
const;
127 void updatePathAndRootName(std::filesystem::path& dir, std::filesystem::path& rootN)
const;
130 std::string makeKeyString(
const std::string& keyword,
const std::string& wgname,
int num,
131 const std::optional<Opm::EclIO::lgr_info>
lgr_info)
const;
133 std::string unpackNumber(
const SummaryNode&)
const;
137 void write_block(std::ostream &,
bool write_dates,
const std::vector<std::string>& time_column,
const std::vector<SummaryNode>&)
const;
139 template <
typename T>
140 std::vector<T> rstep_vector(
const std::vector<T>& full_vector)
const {
141 std::vector<T> result;
142 result.reserve(seqIndex.size());
144 std::transform(seqIndex.begin(), seqIndex.end(),
145 std::back_inserter(result),
146 [&full_vector](
const auto& ind)
148 return full_vector[ind];
154 std::vector<std::tuple <std::string, uint64_t>>
155 getListOfArrays(
const std::string& filename,
bool formatted);
157 std::vector<int> makeKeywPosVector(
int speInd)
const;
158 std::string read_string_from_disk(std::fstream& fileH, uint64_t size)
const;
160 void read_ministeps_from_disk();
161 int read_ministep_formatted(std::fstream& fileH);