Rename and improvements related to close

p4#: 20645
This commit is contained in:
Magne Sjaastad
2013-02-27 14:13:37 +01:00
parent 7694c5d02d
commit d628973f56
2 changed files with 104 additions and 74 deletions

View File

@@ -191,7 +191,8 @@ bool transferGridCellData(RigMainGrid* mainGrid, RigActiveCellInfo* activeCellIn
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RifReaderEclipseOutput::RifReaderEclipseOutput() RifReaderEclipseOutput::RifReaderEclipseOutput()
{ {
m_ecl_file = NULL; m_ecl_init_file = NULL;
m_dynamicResultsAccess = NULL;
ground(); ground();
} }
@@ -212,7 +213,7 @@ void RifReaderEclipseOutput::ground()
m_fileSet.clear(); m_fileSet.clear();
m_timeSteps.clear(); m_timeSteps.clear();
m_reservoir = NULL; m_eclipseCase = NULL;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -220,13 +221,16 @@ void RifReaderEclipseOutput::ground()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RifReaderEclipseOutput::close() void RifReaderEclipseOutput::close()
{ {
if (m_ecl_file) if (m_ecl_init_file)
{ {
ecl_file_close(m_ecl_file); ecl_file_close(m_ecl_init_file);
} }
m_ecl_file = NULL; m_ecl_init_file = NULL;
m_dynamicResultsAccess = NULL; if (m_dynamicResultsAccess.notNull())
{
m_dynamicResultsAccess->close();
}
ground(); ground();
} }
@@ -374,19 +378,19 @@ bool RifReaderEclipseOutput::open(const QString& fileName, RigEclipseCase* eclip
progInfo.setProgressDescription("Reading Result index"); progInfo.setProgressDescription("Reading Result index");
progInfo.setNextProgressIncrement(60); progInfo.setNextProgressIncrement(60);
m_reservoir = eclipseCase; m_eclipseCase = eclipseCase;
eclipseCase->results(RifReaderInterface::MATRIX_RESULTS)->setReaderInterface(this); eclipseCase->results(RifReaderInterface::MATRIX_RESULTS)->setReaderInterface(this);
eclipseCase->results(RifReaderInterface::FRACTURE_RESULTS)->setReaderInterface(this); eclipseCase->results(RifReaderInterface::FRACTURE_RESULTS)->setReaderInterface(this);
// Build results meta data // Build results meta data
if (!buildMetaData(eclipseCase)) return false; if (!buildMetaData()) return false;
progInfo.incrementProgress(); progInfo.incrementProgress();
progInfo.setNextProgressIncrement(8); progInfo.setNextProgressIncrement(8);
progInfo.setProgressDescription("Reading Well information"); progInfo.setProgressDescription("Reading Well information");
readWellCells(eclipseCase); readWellCells();
return true; return true;
@@ -416,7 +420,7 @@ bool RifReaderEclipseOutput::openAndReadActiveCellData(const QString& fileName,
// Keep the set of files of interest // Keep the set of files of interest
m_fileSet = fileSet; m_fileSet = fileSet;
m_reservoir = eclipseCase; m_eclipseCase = eclipseCase;
eclipseCase->results(RifReaderInterface::MATRIX_RESULTS)->setReaderInterface(this); eclipseCase->results(RifReaderInterface::MATRIX_RESULTS)->setReaderInterface(this);
eclipseCase->results(RifReaderInterface::FRACTURE_RESULTS)->setReaderInterface(this); eclipseCase->results(RifReaderInterface::FRACTURE_RESULTS)->setReaderInterface(this);
@@ -424,7 +428,7 @@ bool RifReaderEclipseOutput::openAndReadActiveCellData(const QString& fileName,
progInfo.setNextProgressIncrement(50); progInfo.setNextProgressIncrement(50);
progInfo.setProgressDescription("Reading active cell information"); progInfo.setProgressDescription("Reading active cell information");
if (!readActiveCellInfo(eclipseCase)) if (!readActiveCellInfo())
{ {
return false; return false;
} }
@@ -435,20 +439,19 @@ bool RifReaderEclipseOutput::openAndReadActiveCellData(const QString& fileName,
progInfo.setProgressDescription("Reading meta data"); progInfo.setProgressDescription("Reading meta data");
// Build results meta data // Build results meta data
if (!buildMetaData(eclipseCase)) return false; if (!buildMetaData()) return false;
return true; return true;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool RifReaderEclipseOutput::readActiveCellInfo(RigEclipseCase* eclipseCase) bool RifReaderEclipseOutput::readActiveCellInfo()
{ {
CVF_ASSERT(eclipseCase); CVF_ASSERT(m_eclipseCase.notNull());
CVF_ASSERT(eclipseCase->mainGrid()); CVF_ASSERT(m_eclipseCase->mainGrid());
QString egridFileName = RifEclipseOutputFileTools::fileNameByType(m_fileSet, ECL_EGRID_FILE); QString egridFileName = RifEclipseOutputFileTools::fileNameByType(m_fileSet, ECL_EGRID_FILE);
if (egridFileName.size() > 0) if (egridFileName.size() > 0)
@@ -471,12 +474,12 @@ bool RifReaderEclipseOutput::readActiveCellInfo(RigEclipseCase* eclipseCase)
} }
// Check if number of cells is matching // Check if number of cells is matching
if (eclipseCase->mainGrid()->cells().size() != globalCellCount) if (m_eclipseCase->mainGrid()->cells().size() != globalCellCount)
{ {
return false; return false;
} }
RigActiveCellInfo* activeCellInfo = eclipseCase->activeCellInfo(); RigActiveCellInfo* activeCellInfo = m_eclipseCase->activeCellInfo();
activeCellInfo->setGlobalCellCount(globalCellCount); activeCellInfo->setGlobalCellCount(globalCellCount);
activeCellInfo->setGridCount(actnumKeywordCount); activeCellInfo->setGridCount(actnumKeywordCount);
@@ -522,9 +525,9 @@ bool RifReaderEclipseOutput::readActiveCellInfo(RigEclipseCase* eclipseCase)
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// Build meta data - get states and results info /// Build meta data - get states and results info
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool RifReaderEclipseOutput::buildMetaData(RigEclipseCase* eclipseCase) bool RifReaderEclipseOutput::buildMetaData()
{ {
CVF_ASSERT(m_reservoir.notNull()); CVF_ASSERT(m_eclipseCase.notNull());
CVF_ASSERT(m_fileSet.size() > 0); CVF_ASSERT(m_fileSet.size() > 0);
caf::ProgressInfo progInfo(m_fileSet.size() + 3,""); caf::ProgressInfo progInfo(m_fileSet.size() + 3,"");
@@ -541,8 +544,8 @@ bool RifReaderEclipseOutput::buildMetaData(RigEclipseCase* eclipseCase)
progInfo.incrementProgress(); progInfo.incrementProgress();
RigReservoirCellResults* matrixModelResults = m_reservoir->results(RifReaderInterface::MATRIX_RESULTS); RigReservoirCellResults* matrixModelResults = m_eclipseCase->results(RifReaderInterface::MATRIX_RESULTS);
RigReservoirCellResults* fractureModelResults = m_reservoir->results(RifReaderInterface::FRACTURE_RESULTS); RigReservoirCellResults* fractureModelResults = m_eclipseCase->results(RifReaderInterface::FRACTURE_RESULTS);
if (m_dynamicResultsAccess.notNull()) if (m_dynamicResultsAccess.notNull())
{ {
@@ -554,7 +557,7 @@ bool RifReaderEclipseOutput::buildMetaData(RigEclipseCase* eclipseCase)
m_dynamicResultsAccess->resultNames(&resultNames, &resultNamesDataItemCounts); m_dynamicResultsAccess->resultNames(&resultNames, &resultNamesDataItemCounts);
{ {
QStringList matrixResultNames = validKeywordsForPorosityModel(resultNames, resultNamesDataItemCounts, m_reservoir->activeCellInfo(), RifReaderInterface::MATRIX_RESULTS, m_dynamicResultsAccess->timeStepCount()); QStringList matrixResultNames = validKeywordsForPorosityModel(resultNames, resultNamesDataItemCounts, m_eclipseCase->activeCellInfo(), RifReaderInterface::MATRIX_RESULTS, m_dynamicResultsAccess->timeStepCount());
for (int i = 0; i < matrixResultNames.size(); ++i) for (int i = 0; i < matrixResultNames.size(); ++i)
{ {
@@ -564,7 +567,7 @@ bool RifReaderEclipseOutput::buildMetaData(RigEclipseCase* eclipseCase)
} }
{ {
QStringList fractureResultNames = validKeywordsForPorosityModel(resultNames, resultNamesDataItemCounts, m_reservoir->activeCellInfo(), RifReaderInterface::FRACTURE_RESULTS, m_dynamicResultsAccess->timeStepCount()); QStringList fractureResultNames = validKeywordsForPorosityModel(resultNames, resultNamesDataItemCounts, m_eclipseCase->activeCellInfo(), RifReaderInterface::FRACTURE_RESULTS, m_dynamicResultsAccess->timeStepCount());
for (int i = 0; i < fractureResultNames.size(); ++i) for (int i = 0; i < fractureResultNames.size(); ++i)
{ {
@@ -577,20 +580,19 @@ bool RifReaderEclipseOutput::buildMetaData(RigEclipseCase* eclipseCase)
progInfo.incrementProgress(); progInfo.incrementProgress();
QString initFileName = RifEclipseOutputFileTools::fileNameByType(m_fileSet, ECL_INIT_FILE); if (!openInitFile())
if (initFileName.size() > 0)
{ {
ecl_file_type* ecl_file = ecl_file_open(initFileName.toAscii().data()); return false;
if (!ecl_file) return false; }
progInfo.incrementProgress(); progInfo.incrementProgress();
QStringList resultNames; QStringList resultNames;
std::vector<size_t> resultNamesDataItemCounts; std::vector<size_t> resultNamesDataItemCounts;
RifEclipseOutputFileTools::findKeywordsAndDataItemCounts(ecl_file, &resultNames, &resultNamesDataItemCounts); RifEclipseOutputFileTools::findKeywordsAndDataItemCounts(m_ecl_init_file, &resultNames, &resultNamesDataItemCounts);
{ {
QStringList matrixResultNames = validKeywordsForPorosityModel(resultNames, resultNamesDataItemCounts, m_reservoir->activeCellInfo(), RifReaderInterface::MATRIX_RESULTS, 1); QStringList matrixResultNames = validKeywordsForPorosityModel(resultNames, resultNamesDataItemCounts, m_eclipseCase->activeCellInfo(), RifReaderInterface::MATRIX_RESULTS, 1);
QList<QDateTime> staticDate; QList<QDateTime> staticDate;
if (m_timeSteps.size() > 0) if (m_timeSteps.size() > 0)
@@ -606,7 +608,7 @@ bool RifReaderEclipseOutput::buildMetaData(RigEclipseCase* eclipseCase)
} }
{ {
QStringList fractureResultNames = validKeywordsForPorosityModel(resultNames, resultNamesDataItemCounts, m_reservoir->activeCellInfo(), RifReaderInterface::FRACTURE_RESULTS, 1); QStringList fractureResultNames = validKeywordsForPorosityModel(resultNames, resultNamesDataItemCounts, m_eclipseCase->activeCellInfo(), RifReaderInterface::FRACTURE_RESULTS, 1);
QList<QDateTime> staticDate; QList<QDateTime> staticDate;
if (m_timeSteps.size() > 0) if (m_timeSteps.size() > 0)
@@ -621,9 +623,6 @@ bool RifReaderEclipseOutput::buildMetaData(RigEclipseCase* eclipseCase)
} }
} }
m_ecl_file = ecl_file;
}
return true; return true;
} }
@@ -672,16 +671,22 @@ RifEclipseRestartDataAccess* RifReaderEclipseOutput::dynamicResultsAccess(const
bool RifReaderEclipseOutput::staticResult(const QString& result, PorosityModelResultType matrixOrFracture, std::vector<double>* values) bool RifReaderEclipseOutput::staticResult(const QString& result, PorosityModelResultType matrixOrFracture, std::vector<double>* values)
{ {
CVF_ASSERT(values); CVF_ASSERT(values);
CVF_ASSERT(m_ecl_file);
if (!openInitFile())
{
return false;
}
CVF_ASSERT(m_ecl_init_file);
std::vector<double> fileValues; std::vector<double> fileValues;
size_t numOccurrences = ecl_file_get_num_named_kw(m_ecl_file, result.toAscii().data()); size_t numOccurrences = ecl_file_get_num_named_kw(m_ecl_init_file, result.toAscii().data());
size_t i; size_t i;
for (i = 0; i < numOccurrences; i++) for (i = 0; i < numOccurrences; i++)
{ {
std::vector<double> partValues; std::vector<double> partValues;
RifEclipseOutputFileTools::keywordData(m_ecl_file, result, i, &partValues); RifEclipseOutputFileTools::keywordData(m_ecl_init_file, result, i, &partValues);
fileValues.insert(fileValues.end(), partValues.begin(), partValues.end()); fileValues.insert(fileValues.end(), partValues.begin(), partValues.end());
} }
@@ -698,7 +703,7 @@ bool RifReaderEclipseOutput::dynamicResult(const QString& result, PorosityModelR
CVF_ASSERT(m_dynamicResultsAccess.notNull()); CVF_ASSERT(m_dynamicResultsAccess.notNull());
std::vector<double> fileValues; std::vector<double> fileValues;
if (!m_dynamicResultsAccess->results(result, stepIndex, m_reservoir->mainGrid()->gridCount(), &fileValues)) if (!m_dynamicResultsAccess->results(result, stepIndex, m_eclipseCase->mainGrid()->gridCount(), &fileValues))
{ {
return false; return false;
} }
@@ -711,9 +716,9 @@ bool RifReaderEclipseOutput::dynamicResult(const QString& result, PorosityModelR
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RifReaderEclipseOutput::readWellCells(RigEclipseCase* eclipseCase) void RifReaderEclipseOutput::readWellCells()
{ {
CVF_ASSERT(eclipseCase); CVF_ASSERT(m_eclipseCase.notNull());
if (m_dynamicResultsAccess.isNull()) return; if (m_dynamicResultsAccess.isNull()) return;
@@ -722,9 +727,9 @@ void RifReaderEclipseOutput::readWellCells(RigEclipseCase* eclipseCase)
m_dynamicResultsAccess->readWellData(ert_well_info); m_dynamicResultsAccess->readWellData(ert_well_info);
RigMainGrid* mainGrid = eclipseCase->mainGrid(); RigMainGrid* mainGrid = m_eclipseCase->mainGrid();
std::vector<RigGridBase*> grids; std::vector<RigGridBase*> grids;
eclipseCase->allGrids(&grids); m_eclipseCase->allGrids(&grids);
cvf::Collection<RigWellResults> wells; cvf::Collection<RigWellResults> wells;
caf::ProgressInfo progress(well_info_get_num_wells(ert_well_info), ""); caf::ProgressInfo progress(well_info_get_num_wells(ert_well_info), "");
@@ -884,7 +889,7 @@ void RifReaderEclipseOutput::readWellCells(RigEclipseCase* eclipseCase)
well_info_free(ert_well_info); well_info_free(ert_well_info);
eclipseCase->setWellResults(wells); m_eclipseCase->setWellResults(wells);
} }
@@ -956,7 +961,7 @@ QStringList RifReaderEclipseOutput::validKeywordsForPorosityModel(const QStringL
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RifReaderEclipseOutput::extractResultValuesBasedOnPorosityModel(PorosityModelResultType matrixOrFracture, std::vector<double>* destinationResultValues, const std::vector<double>& sourceResultValues) void RifReaderEclipseOutput::extractResultValuesBasedOnPorosityModel(PorosityModelResultType matrixOrFracture, std::vector<double>* destinationResultValues, const std::vector<double>& sourceResultValues)
{ {
RigActiveCellInfo* actCellInfo = m_reservoir->activeCellInfo(); RigActiveCellInfo* actCellInfo = m_eclipseCase->activeCellInfo();
if (matrixOrFracture == RifReaderInterface::MATRIX_RESULTS) if (matrixOrFracture == RifReaderInterface::MATRIX_RESULTS)
{ {
@@ -969,7 +974,7 @@ void RifReaderEclipseOutput::extractResultValuesBasedOnPorosityModel(PorosityMod
size_t dataItemCount = 0; size_t dataItemCount = 0;
size_t sourceStartPosition = 0; size_t sourceStartPosition = 0;
for (size_t i = 0; i < m_reservoir->mainGrid()->gridCount(); i++) for (size_t i = 0; i < m_eclipseCase->mainGrid()->gridCount(); i++)
{ {
size_t matrixActiveCellCount = 0; size_t matrixActiveCellCount = 0;
size_t fractureActiveCellCount = 0; size_t fractureActiveCellCount = 0;
@@ -986,7 +991,7 @@ void RifReaderEclipseOutput::extractResultValuesBasedOnPorosityModel(PorosityMod
size_t dataItemCount = 0; size_t dataItemCount = 0;
size_t sourceStartPosition = 0; size_t sourceStartPosition = 0;
for (size_t i = 0; i < m_reservoir->mainGrid()->gridCount(); i++) for (size_t i = 0; i < m_eclipseCase->mainGrid()->gridCount(); i++)
{ {
size_t matrixActiveCellCount = 0; size_t matrixActiveCellCount = 0;
size_t fractureActiveCellCount = 0; size_t fractureActiveCellCount = 0;
@@ -999,3 +1004,26 @@ void RifReaderEclipseOutput::extractResultValuesBasedOnPorosityModel(PorosityMod
} }
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RifReaderEclipseOutput::openInitFile()
{
if (m_ecl_init_file)
{
return true;
}
QString initFileName = RifEclipseOutputFileTools::fileNameByType(m_fileSet, ECL_INIT_FILE);
if (initFileName.size() > 0)
{
ecl_file_type* ecl_init_file = ecl_file_open(initFileName.toAscii().data());
if (ecl_init_file)
{
return true;
}
}
return false;
}

View File

@@ -54,9 +54,11 @@ public:
private: private:
void ground(); void ground();
bool readActiveCellInfo(RigEclipseCase* eclipseCase); bool readActiveCellInfo();
bool buildMetaData(RigEclipseCase* eclipseCase); bool buildMetaData();
void readWellCells(RigEclipseCase* eclipseCase); void readWellCells();
bool openInitFile();
void extractResultValuesBasedOnPorosityModel(PorosityModelResultType matrixOrFracture, std::vector<double>* values, const std::vector<double>& fileValues); void extractResultValuesBasedOnPorosityModel(PorosityModelResultType matrixOrFracture, std::vector<double>* values, const std::vector<double>& fileValues);
@@ -69,10 +71,10 @@ private:
QString m_fileName; // Name of file used to start accessing Eclipse output files QString m_fileName; // Name of file used to start accessing Eclipse output files
QStringList m_fileSet; // Set of files in filename's path with same base name as filename QStringList m_fileSet; // Set of files in filename's path with same base name as filename
cvf::ref<RigEclipseCase> m_reservoir; cvf::ref<RigEclipseCase> m_eclipseCase;
QList<QDateTime> m_timeSteps; QList<QDateTime> m_timeSteps;
ecl_file_type* m_ecl_file; // File access to static results ecl_file_type* m_ecl_init_file; // File access to static results
cvf::ref<RifEclipseRestartDataAccess> m_dynamicResultsAccess; // File access to dynamic results cvf::ref<RifEclipseRestartDataAccess> m_dynamicResultsAccess; // File access to dynamic results
}; };