mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#4143 First implementation of export sector model
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
// Test data directory used by unit tests
|
||||
|
||||
#define TEST_DATA_DIR "${CMAKE_CURRENT_LIST_DIR}/TestData"
|
||||
#define TEST_MODEL_DIR "${CMAKE_CURRENT_LIST_DIR}/../../TestModels"
|
||||
@@ -25,27 +25,91 @@
|
||||
#include <ert/ecl/ecl_file.h>
|
||||
#include "ert/ecl/ecl_kw_magic.h"
|
||||
|
||||
#include "RiaStringEncodingTools.h"
|
||||
#include "RiaTestDataDirectory.h"
|
||||
#include "RifReaderEclipseOutput.h"
|
||||
#include "RifEclipseOutputFileTools.h"
|
||||
#include "RigEclipseCaseData.h"
|
||||
#include "RigCaseCellResultsData.h"
|
||||
#include "RifEclipseUnifiedRestartFileAccess.h"
|
||||
#include "RifReaderSettings.h"
|
||||
#include "RimEclipseResultCase.h"
|
||||
|
||||
#include <QDebug>
|
||||
#include <QDir>
|
||||
|
||||
#include <memory>
|
||||
|
||||
using namespace RiaDefines;
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
TEST(RigReservoirTest, BasicTest)
|
||||
TEST(RigReservoirTest, BasicTest10k)
|
||||
{
|
||||
QDir baseFolder(TEST_MODEL_DIR);
|
||||
bool subFolderExists = baseFolder.cd("TEST10K_FLT_LGR_NNC");
|
||||
EXPECT_TRUE(subFolderExists);
|
||||
QString filename("TEST10K_FLT_LGR_NNC.EGRID");
|
||||
QString filePath = baseFolder.absoluteFilePath(filename);
|
||||
EXPECT_TRUE(QFile::exists(filePath));
|
||||
|
||||
std::unique_ptr<RimEclipseResultCase> resultCase(new RimEclipseResultCase);
|
||||
cvf::ref<RigEclipseCaseData> reservoir = new RigEclipseCaseData(resultCase.get());
|
||||
|
||||
{
|
||||
RigCaseCellResultsData* cellData = reservoir->results(MATRIX_MODEL);
|
||||
|
||||
QStringList staticResults = cellData->resultNames(STATIC_NATIVE);
|
||||
EXPECT_EQ(0, staticResults.size());
|
||||
//qDebug() << "Static results\n" << staticResults;
|
||||
|
||||
QStringList dynamicResults = cellData->resultNames(DYNAMIC_NATIVE);
|
||||
EXPECT_EQ(0, dynamicResults.size());
|
||||
//qDebug() << "Dynamic results\n" << dynamicResults;
|
||||
|
||||
int numTimeSteps = static_cast<int>(cellData->maxTimeStepCount());
|
||||
EXPECT_EQ(0, numTimeSteps);
|
||||
|
||||
}
|
||||
|
||||
{
|
||||
cvf::ref<RifReaderEclipseOutput> readerInterfaceEcl = new RifReaderEclipseOutput;
|
||||
bool result = readerInterfaceEcl->open(filePath, reservoir.p());
|
||||
EXPECT_TRUE(result);
|
||||
int numTimeSteps = static_cast<int>(readerInterfaceEcl->allTimeSteps().size());
|
||||
EXPECT_EQ(9, numTimeSteps);
|
||||
}
|
||||
|
||||
{
|
||||
RigCaseCellResultsData* cellData = reservoir->results(MATRIX_MODEL);
|
||||
|
||||
QStringList staticResults = cellData->resultNames(STATIC_NATIVE);
|
||||
EXPECT_EQ(44, staticResults.size());
|
||||
//qDebug() << "Static results\n" << staticResults;
|
||||
|
||||
QStringList dynamicResults = cellData->resultNames(DYNAMIC_NATIVE);
|
||||
EXPECT_EQ(23, dynamicResults.size());
|
||||
//qDebug() << "Dynamic results\n" << dynamicResults;
|
||||
|
||||
int numTimeSteps = static_cast<int>(cellData->maxTimeStepCount());
|
||||
EXPECT_EQ(9, numTimeSteps);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(RigReservoirTest, BasicTest10kRestart)
|
||||
{
|
||||
RifEclipseUnifiedRestartFileAccess unrstAccess;
|
||||
|
||||
/*
|
||||
QStringList filenames;
|
||||
//filenames << "d:/Models/Statoil/testcase_juli_2011/data/TEST10K_FLT_LGR_NNC.UNRST";
|
||||
filenames << "d:/Models/MRST/simple/SIMPLE.UNRST";
|
||||
QDir baseFolder(TEST_MODEL_DIR);
|
||||
bool subFolderExists = baseFolder.cd("TEST10K_FLT_LGR_NNC");
|
||||
EXPECT_TRUE(subFolderExists);
|
||||
QString filename("TEST10K_FLT_LGR_NNC.UNRST");
|
||||
QString filePath = baseFolder.absoluteFilePath(filename);
|
||||
EXPECT_TRUE(QFile::exists(filePath));
|
||||
|
||||
QStringList filenames;
|
||||
filenames << filePath;
|
||||
unrstAccess.setRestartFiles(filenames);
|
||||
|
||||
|
||||
@@ -54,70 +118,98 @@ TEST(RigReservoirTest, BasicTest)
|
||||
|
||||
unrstAccess.resultNames(&resultNames, &dataItemCount);
|
||||
|
||||
for (size_t i = 0; i < resultNames.size(); i++)
|
||||
EXPECT_EQ(resultNames.size(), dataItemCount.size());
|
||||
EXPECT_EQ(83, resultNames.size());
|
||||
|
||||
/* for (int i = 0; i < resultNames.size(); i++)
|
||||
{
|
||||
qDebug() << resultNames[i] << "\t" << dataItemCount[i];
|
||||
}
|
||||
} */
|
||||
|
||||
auto reportNums = unrstAccess.reportNumbers();
|
||||
for (auto reportNum : reportNums)
|
||||
EXPECT_EQ((size_t) 9, reportNums.size());
|
||||
|
||||
/* for (auto reportNum : reportNums)
|
||||
{
|
||||
qDebug() << reportNum;
|
||||
}
|
||||
*/
|
||||
} */
|
||||
}
|
||||
|
||||
/*
|
||||
cvf::ref<RifReaderEclipseOutput> readerInterfaceEcl = new RifReaderEclipseOutput;
|
||||
cvf::ref<RigCaseData> reservoir = new RigCaseData;
|
||||
|
||||
// Location of test dataset received from Håkon Høgstøl in July 2011 with 10k active cells
|
||||
#ifdef WIN32
|
||||
TEST(RigReservoirTest, BasicTest10k_NativeECL)
|
||||
{
|
||||
QDir baseFolder(TEST_MODEL_DIR);
|
||||
bool subFolderExists = baseFolder.cd("TEST10K_FLT_LGR_NNC");
|
||||
EXPECT_TRUE(subFolderExists);
|
||||
QString filename("TEST10K_FLT_LGR_NNC.EGRID");
|
||||
#else
|
||||
QString filename("/mnt/hgfs/Statoil/testcase_juli_2011/data/TEST10K_FLT_LGR_NNC.EGRID");
|
||||
QString filePath = baseFolder.absoluteFilePath(filename);
|
||||
EXPECT_TRUE(QFile::exists(filePath));
|
||||
|
||||
ecl_grid_type* grid = ecl_grid_alloc(RiaStringEncodingTools::toNativeEncoded(filePath).data());
|
||||
EXPECT_TRUE(grid);
|
||||
|
||||
QString subDir("RifReaderEclipseOutput");
|
||||
QDir dataDir(TEST_DATA_DIR);
|
||||
dataDir.mkdir(subDir);
|
||||
dataDir.cd(subDir);
|
||||
QString outFilePath = dataDir.absoluteFilePath("TEST10K_FLT_LGR_NNC_OUT.GRDECL");
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning (push)
|
||||
#pragma warning(disable : 4996)
|
||||
#endif
|
||||
FILE* filePtr = fopen(RiaStringEncodingTools::toNativeEncoded(outFilePath).data(), "w");
|
||||
EXPECT_TRUE(filePtr != nullptr);
|
||||
ecl_grid_fprintf_grdecl(grid, filePtr);
|
||||
fclose(filePtr);
|
||||
EXPECT_TRUE(QFile::exists(outFilePath));
|
||||
|
||||
bool result = readerInterfaceEcl->open(filename, reservoir.p());
|
||||
EXPECT_TRUE(result);
|
||||
|
||||
{
|
||||
QStringList staticResults = readerInterfaceEcl->staticResults();
|
||||
EXPECT_EQ(42, staticResults.size());
|
||||
qDebug() << "Static results\n" << staticResults;
|
||||
|
||||
QStringList dynamicResults = readerInterfaceEcl->dynamicResults();
|
||||
EXPECT_EQ(23, dynamicResults.size());
|
||||
qDebug() << "Dynamic results\n" << dynamicResults;
|
||||
|
||||
int numTimeSteps = static_cast<int>(readerInterfaceEcl->numTimeSteps());
|
||||
EXPECT_EQ(9, numTimeSteps);
|
||||
|
||||
QStringList timeStepText = readerInterfaceEcl->timeStepText();
|
||||
EXPECT_EQ(numTimeSteps, timeStepText.size());
|
||||
qDebug() << "Time step texts\n" << timeStepText;
|
||||
}
|
||||
|
||||
|
||||
readerInterfaceEcl->close();
|
||||
|
||||
{
|
||||
QStringList staticResults = readerInterfaceEcl->staticResults();
|
||||
EXPECT_EQ(0, staticResults.size());
|
||||
|
||||
QStringList dynamicResults = readerInterfaceEcl->dynamicResults();
|
||||
EXPECT_EQ(0, dynamicResults.size());
|
||||
|
||||
int numTimeSteps = static_cast<int>(readerInterfaceEcl->numTimeSteps());
|
||||
EXPECT_EQ(0, numTimeSteps);
|
||||
|
||||
QStringList timeStepText = readerInterfaceEcl->timeStepText();
|
||||
EXPECT_EQ(numTimeSteps, timeStepText.size());
|
||||
}
|
||||
*/
|
||||
QString expectedMd5("\xE9\x93\xB8Q@V\x8F\x13\xF4\xC3\x84\x96\x04p\n\x0F");
|
||||
QByteArray generatedMd5 = RifEclipseOutputFileTools::md5sum(outFilePath);
|
||||
EXPECT_TRUE(generatedMd5 == expectedMd5);
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
TEST(RigReservoirTest, Test10k_ReadThenWriteToECL)
|
||||
{
|
||||
QDir baseFolder(TEST_MODEL_DIR);
|
||||
bool subFolderExists = baseFolder.cd("TEST10K_FLT_LGR_NNC");
|
||||
EXPECT_TRUE(subFolderExists);
|
||||
QString filename("TEST10K_FLT_LGR_NNC.EGRID");
|
||||
QString filePath = baseFolder.absoluteFilePath(filename);
|
||||
EXPECT_TRUE(QFile::exists(filePath));
|
||||
|
||||
std::unique_ptr<RimEclipseResultCase> resultCase(new RimEclipseResultCase);
|
||||
resultCase->setGridFileName(filePath);
|
||||
resultCase->importGridAndResultMetaData(false);
|
||||
|
||||
QString subDir("RifReaderEclipseOutput");
|
||||
QDir dataDir(TEST_DATA_DIR);
|
||||
dataDir.mkdir(subDir);
|
||||
dataDir.cd(subDir);
|
||||
QString outFilePath = dataDir.absoluteFilePath("TEST10K_FLT_LGR_NNC_OUT_FROM_RES.GRDECL");
|
||||
|
||||
bool worked = RifReaderEclipseOutput::saveEclipseGrid(outFilePath, resultCase->eclipseCaseData());
|
||||
EXPECT_TRUE(worked);
|
||||
EXPECT_TRUE(QFile::exists(outFilePath));
|
||||
|
||||
QString dataFilePath = dataDir.absoluteFilePath("TEST10K_FLT_LGR_NNC_OUT_FROM_RES.VARS");
|
||||
|
||||
QStringList allStaticResults = resultCase->eclipseCaseData()->results(MATRIX_MODEL)->resultNames(RiaDefines::STATIC_NATIVE);
|
||||
|
||||
std::vector<QString> keywords;
|
||||
for (QString keyword : allStaticResults)
|
||||
{
|
||||
keywords.push_back(keyword);
|
||||
}
|
||||
|
||||
worked = RifReaderEclipseOutput::saveEclipseResults(dataFilePath, resultCase->eclipseCaseData(), keywords);
|
||||
EXPECT_TRUE(worked);
|
||||
EXPECT_TRUE(QFile::exists(dataFilePath));
|
||||
}
|
||||
#if 0
|
||||
|
||||
|
||||
|
||||
2
ApplicationCode/UnitTests/TestData/.gitignore
vendored
Normal file
2
ApplicationCode/UnitTests/TestData/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
RifReaderEclipseOutput/TEST10K_FLT_LGR_NNC_OUT.GRDECL
|
||||
RifReaderEclipseOutput/TEST10K_FLT_LGR_NNC_OUT_FROM_RES.GRDECL
|
||||
Reference in New Issue
Block a user