18 #ifndef OPM_IO_ECLOUTPUT_HPP 19 #define OPM_IO_ECLOUTPUT_HPP 21 #include <opm/io/eclipse/EclIOdata.hpp> 22 #include <opm/io/eclipse/PaddedOutputString.hpp> 28 #include <type_traits> 33 class SummarySpecification;
43 const std::ios_base::openmode mode = std::ios::out);
46 void write(
const std::string& name,
47 const std::vector<T>& data)
49 static_assert(std::is_same_v<T, int> ||
50 std::is_same_v<T, float> ||
51 std::is_same_v<T, double> ||
52 std::is_same_v<T, bool> ||
53 std::is_same_v<T, char>,
54 "EclOutput::write<T>: T must be int, float, double, bool, or char");
56 eclArrType arrType = MESS;
59 if constexpr (std::is_same_v<T, int>) {
62 else if constexpr (std::is_same_v<T, float>) {
65 else if constexpr (std::is_same_v<T, double>) {
69 else if constexpr (std::is_same_v<T, bool>) {
72 else if constexpr (std::is_same_v<T, char>) {
74 throw std::invalid_argument {
75 "EclOutput::write<char>: non-empty data is not supported; " 76 "use message() for MESS-type records" 82 writeFormattedHeader(name, data.size(), arrType, element_size);
83 if (arrType != MESS) {
84 writeFormattedArray(data);
88 writeBinaryHeader(name, data.size(), arrType, element_size);
89 if (arrType != MESS) {
90 writeBinaryArray(data);
98 void write(
const std::string& name,
const std::vector<std::string>& data,
int element_size);
100 void message(
const std::string& msg);
103 void set_ix() { ix_standard =
true; }
109 void writeBinaryHeader(
const std::string& arrName, int64_t size, eclArrType arrType,
int element_size);
111 template <
typename T>
112 void writeBinaryArray(
const std::vector<T>& data);
114 void writeBinaryCharArray(
const std::vector<std::string>& data,
int element_size);
117 void writeFormattedHeader(
const std::string& arrName,
int size, eclArrType arrType,
int element_size);
119 template <
typename T>
120 void writeFormattedArray(
const std::vector<T>& data);
122 void writeFormattedCharArray(
const std::vector<std::string>& data,
int element_size);
125 void writeArrayType(
const eclArrType arrType);
126 std::string make_real_string_ecl(
float value)
const;
127 std::string make_real_string_ix(
float value)
const;
128 std::string make_doub_string_ecl(
double value)
const;
129 std::string make_doub_string_ix(
double value)
const;
131 bool isFormatted, ix_standard;
132 std::ofstream ofileH;
137 void EclOutput::write<std::string>(
const std::string& name,
138 const std::vector<std::string>& data);
141 void EclOutput::write<PaddedOutputString<8>>
142 (
const std::string& name,
143 const std::vector<PaddedOutputString<8>>& data);
147 #endif // OPM_IO_ECLOUTPUT_HPP Definition: OutputStream.hpp:377
File manager for restart output streams.
Definition: OutputStream.hpp:149
Definition: EclOutput.hpp:38
Definition: EclipseGrid.hpp:42
Definition: EclOutput.hpp:31
Null-terminated, left adjusted, space padded array of N characters.
Definition: PaddedOutputString.hpp:39