void RegressionTest::doubleComparisonForOccurrence(const std::string& keyword, int occurrence1, int occurrence2) { ecl_kw_type* ecl_kw1 = nullptr; ecl_kw_type* ecl_kw2 = nullptr; const unsigned int numCells = getEclKeywordData(ecl_kw1, ecl_kw2, keyword, occurrence1, occurrence2); std::vector<double> values1(numCells), values2(numCells); ecl_kw_get_data_as_double(ecl_kw1, values1.data()); ecl_kw_get_data_as_double(ecl_kw2, values2.data()); auto it = std::find(keywordDisallowNegatives.begin(), keywordDisallowNegatives.end(), keyword); for (size_t cell = 0; cell < values1.size(); cell++) { deviationsForCell(values1[cell], values2[cell], keyword, occurrence1, occurrence2, cell, it == keywordDisallowNegatives.end()); } }
void ECLFilesComparator::deviationsForOccurence(const std::string& keyword, int occurence) { ecl_kw_type* ecl_kw1 = ecl_file_iget_named_kw(ecl_file1, keyword.c_str(), occurence); ecl_kw_type* ecl_kw2 = ecl_file_iget_named_kw(ecl_file2, keyword.c_str(), occurence); const unsigned int numCells1 = ecl_kw_get_size(ecl_kw1); const unsigned int numCells2 = ecl_kw_get_size(ecl_kw2); if (numCells1 != numCells2) { std::cout << "For keyword " << keyword << " and occurence " << occurence << ":\n"; OPM_THROW(std::runtime_error, "Number of active cells are different."); } std::vector<double> values1(numCells1), values2(numCells2); ecl_kw_get_data_as_double(ecl_kw1, values1.data()); ecl_kw_get_data_as_double(ecl_kw2, values2.data()); auto it = std::find(keywordWhitelist.begin(), keywordWhitelist.end(), keyword); for (unsigned int cell = 0; cell < values1.size(); cell++) { deviationsForCell(values1[cell], values2[cell], keyword, occurence, cell, it == keywordWhitelist.end()); } }