mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Improved multi case initial reading
When creating a multi case group from multiple files, read grid from first file. The main grid from the first case is reused for the other cases. NOTE: Metadata and well information is not read for the other cases p4#: 20655
This commit is contained in:
parent
3dc027e29e
commit
3dbc8a9d57
@ -1297,8 +1297,43 @@ void RIApplication::updateRegressionTest(const QString& testRootPath)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RIApplication::addEclipseCase(const QString& fileName)
|
||||
bool RIApplication::addEclipseCases(const QStringList& fileNames)
|
||||
{
|
||||
if (fileNames.size() == 0) return true;
|
||||
|
||||
|
||||
// First file is read completely including grid.
|
||||
// The main grid from the first case is reused directly in for the other cases.
|
||||
// When reading active cell info, only the total cell count is tested for consistency
|
||||
RigMainGrid* mainGrid = NULL;
|
||||
|
||||
{
|
||||
QString firstFileName = fileNames[0];
|
||||
QFileInfo gridFileName(firstFileName);
|
||||
|
||||
QString caseName = gridFileName.completeBaseName();
|
||||
QString casePath = gridFileName.absolutePath();
|
||||
|
||||
RimResultReservoir* rimResultReservoir = new RimResultReservoir();
|
||||
rimResultReservoir->caseName = caseName;
|
||||
rimResultReservoir->caseFileName = firstFileName;
|
||||
rimResultReservoir->caseDirectory = casePath;
|
||||
|
||||
m_project->reservoirs.push_back(rimResultReservoir);
|
||||
|
||||
if (!rimResultReservoir->openEclipseGridFile())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
m_project->moveEclipseCaseIntoCaseGroup(rimResultReservoir);
|
||||
|
||||
mainGrid = rimResultReservoir->reservoirData()->mainGrid();
|
||||
}
|
||||
|
||||
for (int i = 1; i < fileNames.size(); i++)
|
||||
{
|
||||
QString fileName = fileNames[i];
|
||||
QFileInfo gridFileName(fileName);
|
||||
|
||||
QString caseName = gridFileName.completeBaseName();
|
||||
@ -1311,12 +1346,15 @@ bool RIApplication::addEclipseCase(const QString& fileName)
|
||||
|
||||
m_project->reservoirs.push_back(rimResultReservoir);
|
||||
|
||||
rimResultReservoir->openEclipseGridFile();
|
||||
if (!rimResultReservoir->openAndReadActiveCellData(mainGrid))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
m_project->moveEclipseCaseIntoCaseGroup(rimResultReservoir);
|
||||
}
|
||||
|
||||
onProjectOpenedOrClosed();
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
@ -80,7 +80,7 @@ public:
|
||||
|
||||
bool openEclipseCaseFromFile(const QString& fileName);
|
||||
bool openEclipseCase(const QString& caseName, const QString& caseFileName);
|
||||
bool addEclipseCase(const QString& fileName);
|
||||
bool addEclipseCases(const QStringList& fileNames);
|
||||
bool openInputEclipseCase(const QString& caseName, const QStringList& caseFileNames);
|
||||
|
||||
bool loadLastUsedProject();
|
||||
|
@ -430,8 +430,9 @@ bool RifReaderEclipseOutput::openAndReadActiveCellData(const QString& fileName,
|
||||
progInfo.setNextProgressIncrement(50);
|
||||
progInfo.setProgressDescription("Reading meta data");
|
||||
|
||||
// Build results meta data
|
||||
if (!buildMetaData()) return false;
|
||||
// Reading of metadata and well cells is not performed here
|
||||
//if (!buildMetaData()) return false;
|
||||
// readWellCells();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -90,6 +90,51 @@ bool RimResultReservoir::openEclipseGridFile()
|
||||
return true;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimResultReservoir::openAndReadActiveCellData(RigMainGrid* mainGrid)
|
||||
{
|
||||
cvf::ref<RifReaderInterface> readerInterface;
|
||||
|
||||
if (caseName().contains("Result Mock Debug Model"))
|
||||
{
|
||||
readerInterface = this->createMockModel(this->caseName());
|
||||
|
||||
m_rigEclipseCase->results(RifReaderInterface::MATRIX_RESULTS)->setReaderInterface(readerInterface.p());
|
||||
m_rigEclipseCase->results(RifReaderInterface::FRACTURE_RESULTS)->setReaderInterface(readerInterface.p());
|
||||
}
|
||||
else
|
||||
{
|
||||
QString fname = createAbsoluteFilenameFromCase(caseName);
|
||||
if (fname.isEmpty())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
cvf::ref<RigEclipseCase> eclipseCase = new RigEclipseCase;
|
||||
eclipseCase->setMainGrid(mainGrid);
|
||||
|
||||
readerInterface = new RifReaderEclipseOutput;
|
||||
if (!readerInterface->openAndReadActiveCellData(fname, eclipseCase.p()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
readerInterface->close();
|
||||
|
||||
m_rigEclipseCase = eclipseCase;
|
||||
}
|
||||
|
||||
CVF_ASSERT(m_rigEclipseCase.notNull());
|
||||
CVF_ASSERT(readerInterface.notNull());
|
||||
|
||||
m_rigEclipseCase->computeCachedData();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include "RimReservoir.h"
|
||||
|
||||
class RifReaderInterface;
|
||||
class RigMainGrid;
|
||||
|
||||
//==================================================================================================
|
||||
//
|
||||
@ -45,6 +46,7 @@ public:
|
||||
caf::PdmField<QString> caseDirectory;
|
||||
|
||||
virtual bool openEclipseGridFile();
|
||||
bool openAndReadActiveCellData(RigMainGrid* mainGrid);
|
||||
|
||||
//virtual caf::PdmFieldHandle* userDescriptionField() { return &caseName;}
|
||||
|
||||
|
@ -1312,10 +1312,5 @@ void RIMainWindow::slotOpenMultipleCases()
|
||||
appendEGRIDFilesRecursively(fileName, gridFileNames);
|
||||
}
|
||||
|
||||
for (int i = 0; i < gridFileNames.size(); i++)
|
||||
{
|
||||
QString fileName = gridFileNames[i];
|
||||
|
||||
app->addEclipseCase(fileName);
|
||||
}
|
||||
app->addEclipseCases(gridFileNames);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user