20 #ifndef ECLFILESCOMPARATOR_HPP
21 #define ECLFILESCOMPARATOR_HPP
26 struct ecl_file_struct;
27 typedef struct ecl_file_struct ecl_file_type;
29 struct ecl_grid_struct;
30 typedef struct ecl_grid_struct ecl_grid_type;
32 typedef struct ecl_kw_struct ecl_kw_type;
55 double absTolerance = 0;
56 double relTolerance = 0;
58 ecl_file_type* ecl_file1 =
nullptr;
59 ecl_grid_type* ecl_grid1 =
nullptr;
60 ecl_file_type* ecl_file2 =
nullptr;
61 ecl_grid_type* ecl_grid2 =
nullptr;
62 std::vector<std::string> keywords1, keywords2;
64 mutable size_t num_errors = 0;
76 unsigned int getEclKeywordData(ecl_kw_type*& ecl_kw1, ecl_kw_type*& ecl_kw2,
const std::string& keyword,
int occurrence1,
int occurrence2)
const;
85 void printValuesForCell(
const std::string& keyword,
int occurrence1,
int occurrence2,
size_t cell,
const T& value1,
const T& value2)
const;
95 ECLFilesComparator(
int file_type,
const std::string& basename1,
const std::string& basename2,
double absTolerance,
double relTolerance);
122 static double median(std::vector<double> vec);
125 static double average(
const std::vector<double>& vec);
141 std::vector<double> absDeviation, relDeviation;
143 const std::vector<std::string> keywordDisallowNegatives = {
"SGAS",
"SWAT",
"PRESSURE"};
146 bool onlyLastOccurrence =
false;
149 void printResultsForKeyword(
const std::string& keyword)
const;
154 void boolComparisonForOccurrence(
const std::string& keyword,
int occurrence1,
int occurrence2)
const;
155 void charComparisonForOccurrence(
const std::string& keyword,
int occurrence1,
int occurrence2)
const;
156 void intComparisonForOccurrence(
const std::string& keyword,
int occurrence1,
int occurrence2)
const;
157 void doubleComparisonForOccurrence(
const std::string& keyword,
int occurrence1,
int occurrence2);
162 void deviationsForCell(
double val1,
double val2,
const std::string& keyword,
int occurrence1,
int occurrence2,
size_t cell,
bool allowNegativeValues =
true);
171 RegressionTest(
int file_type,
const std::string& basename1,
const std::string& basename2,
double absTolerance,
double relTolerance):
201 std::vector<double> cellVolumes;
202 std::vector<double> initialCellValues;
205 const std::vector<std::string> keywordWhitelist = {
"SGAS",
"SWAT",
"PRESSURE"};
207 void setCellVolumes();
208 void initialOccurrenceCompare(
const std::string& keyword);
209 void occurrenceCompare(
const std::string& keyword,
int occurrence)
const;
217 IntegrationTest(
const std::string& basename1,
const std::string& basename2,
double absTolerance,
double relTolerance);
~ECLFilesComparator()
Closing the ECLIPSE files.
Definition: EclFilesComparator.cpp:173
RegressionTest(int file_type, const std::string &basename1, const std::string &basename2, double absTolerance, double relTolerance)
Sets up the regression test.
Definition: EclFilesComparator.hpp:171
void printValuesForCell(const std::string &keyword, int occurrence1, int occurrence2, size_t cell, const T &value1, const T &value2) const
Prints values for a given keyword, occurrence and cell.
Definition: EclFilesComparator.cpp:97
void equalNumKeywords() const
Checks if the number of keywords equal in the two input cases.
Definition: EclFilesComparator.cpp:637
void printKeywords() const
Print all keywords and their respective Eclipse type for the two input cases.
Definition: EclFilesComparator.cpp:182
void results()
Calculates deviations for all keywords.
Definition: EclFilesComparator.cpp:422
IntegrationTest(const std::string &basename1, const std::string &basename2, double absTolerance, double relTolerance)
Sets up the integration test.
Definition: EclFilesComparator.cpp:621
void resultsForKeyword(const std::string &keyword)
Finds deviations for a specific keyword.
Definition: EclFilesComparator.cpp:654
void gridCompare() const
Compares grid properties of the two cases.
Definition: EclFilesComparator.cpp:382
static Deviation calculateDeviations(double val1, double val2)
Calculate deviations for two values.
Definition: EclFilesComparator.cpp:221
double getRelTolerance() const
Returns the relative tolerance stored as a private member variable in the class.
Definition: EclFilesComparator.hpp:110
double rel
Relative deviation.
Definition: EclFilesComparator.hpp:41
void results()
Finds deviations for all supported keywords.
Definition: EclFilesComparator.cpp:647
Deviation struct.
Definition: EclFilesComparator.hpp:39
double abs
Absolute deviation.
Definition: EclFilesComparator.hpp:40
ECLFilesComparator(int file_type, const std::string &basename1, const std::string &basename2, double absTolerance, double relTolerance)
Open ECLIPSE files and set tolerances and keywords.
Definition: EclFilesComparator.cpp:114
void setOnlyLastOccurrence(bool onlyLastOccurrenceArg)
Option to only compare last occurrence.
Definition: EclFilesComparator.hpp:175
void resultsForKeyword(const std::string &keyword)
Calculates deviations for a specific keyword.
Definition: EclFilesComparator.cpp:443
A class for executing a integration test for two ECLIPSE files.
Definition: EclFilesComparator.hpp:199
static double average(const std::vector< double > &vec)
Calculate average of a vector.
Definition: EclFilesComparator.cpp:254
void keywordValidForComparing(const std::string &keyword) const
Checks if the keyword exists in both cases.
Definition: EclFilesComparator.cpp:66
void throwOnErrors(bool dothrow)
Set whether to throw on errors or not.
Definition: EclFilesComparator.hpp:100
unsigned int getEclKeywordData(ecl_kw_type *&ecl_kw1, ecl_kw_type *&ecl_kw2, const std::string &keyword, int occurrence1, int occurrence2) const
Stores keyword data for a given occurrence.
Definition: EclFilesComparator.cpp:78
static double median(std::vector< double > vec)
Calculate median of a vector.
Definition: EclFilesComparator.cpp:236
bool elementInWhitelist(const std::string &keyword) const
Checks if a keyword is supported for comparison.
Definition: EclFilesComparator.cpp:630
size_t getNoErrors() const
Returns the number of errors encountered in the performed comparisons.
Definition: EclFilesComparator.hpp:103
bool throwOnError
Throw on first error.
Definition: EclFilesComparator.hpp:63
int getFileType() const
Returns the ECLIPSE filetype of this.
Definition: EclFilesComparator.hpp:106
double getAbsTolerance() const
Returns the absolute tolerance stored as a private member variable in the class.
Definition: EclFilesComparator.hpp:108
void printKeywordsDifference() const
Print common and uncommon keywords for the two input cases.
Definition: EclFilesComparator.cpp:195
A class for comparing ECLIPSE files.
Definition: EclFilesComparator.hpp:52
A class for executing a regression test for two ECLIPSE files.
Definition: EclFilesComparator.hpp:138