#4195 Grid Cross Plot: Add import of equil

This commit is contained in:
Magne Sjaastad 2019-03-12 18:23:45 +01:00
parent 15f2a76ee1
commit 0527fd8030
4 changed files with 83 additions and 1 deletions

View File

@ -37,9 +37,10 @@
#include "RigActiveCellInfo.h"
#include "RigCaseCellResultsData.h"
#include "RigEclipseCaseData.h"
#include "RigEclipseResultInfo.h"
#include "RigEquil.h"
#include "RigMainGrid.h"
#include "RigSimWellData.h"
#include "RigEclipseResultInfo.h"
#include "cafProgressInfo.h"
@ -415,6 +416,12 @@ bool RifReaderEclipseOutput::open(const QString& fileName, RigEclipseCaseData* e
}
}
{
auto task = progress.task("Reading EQUIL", 10);
importEquilData(fileSet);
}
m_eclipseCase = eclipseCase;
{
@ -622,6 +629,57 @@ void RifReaderEclipseOutput::importFaults(const QStringList& fileSet, cvf::Colle
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RifReaderEclipseOutput::importEquilData(const QStringList& fileSet)
{
QString dataFileName;
for (const QString& fileName : fileSet)
{
if (fileName.endsWith(".DATA"))
{
dataFileName = fileName;
}
}
if (!dataFileName.isEmpty())
{
QFile data(dataFileName);
if (data.open(QFile::ReadOnly))
{
const QString keyword("EQUIL");
const QString keywordToStopParsing("SCHEDULE");
const qint64 startPositionInFile = 0;
std::vector<std::pair<QString, QString>> pathAliasDefinitions;
QStringList keywordContent;
std::vector<QString> fileNamesContainingKeyword;
bool isStopParsingKeywordDetected = false;
const QString includeStatementAbsolutePathPrefix = faultIncludeFileAbsolutePathPrefix();
RifEclipseInputFileTools::readKeywordAndParseIncludeStatementsRecursively(keyword,
keywordToStopParsing,
data,
startPositionInFile,
pathAliasDefinitions,
&keywordContent,
&fileNamesContainingKeyword,
&isStopParsingKeywordDetected,
includeStatementAbsolutePathPrefix);
std::vector<RigEquil> equilItems;
for (const auto& s : keywordContent)
{
RigEquil equilRec = RigEquil::parseString(s);
equilItems.push_back(equilRec);
}
m_eclipseCase->setEquilData(equilItems);
}
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -80,6 +80,7 @@ private:
RigWellResultPoint createWellResultPoint(const RigGridBase* grid, const well_conn_type* ert_connection, int ertBranchId, int ertSegmentId, const char* wellName);
void importFaults(const QStringList& fileSet, cvf::Collection<RigFault>* faults);
void importEquilData(const QStringList& fileSet);
void openInitFile();

View File

@ -24,6 +24,7 @@
#include "RigActiveCellInfo.h"
#include "RigCaseCellResultsData.h"
#include "RigEquil.h"
#include "RigFormationNames.h"
#include "RigMainGrid.h"
#include "RigResultAccessorFactory.h"
@ -560,6 +561,22 @@ const RigVirtualPerforationTransmissibilities* RigEclipseCaseData::virtualPerfor
return m_virtualPerforationTransmissibilities.p();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RigEquil> RigEclipseCaseData::equilData() const
{
return m_equil;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigEclipseCaseData::setEquilData(const std::vector<RigEquil>& equilObjects)
{
m_equil = equilObjects;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -48,6 +48,7 @@ class RigCell;
class RigWellPath;
class RimEclipseCase;
class RigVirtualPerforationTransmissibilities;
class RigEquil;
struct RigWellResultPoint;
@ -118,6 +119,9 @@ public:
void clearWellCellsInGridCache() { m_wellCellsInGrid.clear(); }
std::vector<RigEquil> equilData() const;
void setEquilData(const std::vector<RigEquil>& equilObjects);
private:
void computeActiveCellIJKBBox();
void computeWellCellsPrGrid();
@ -141,5 +145,7 @@ private:
RiaEclipseUnitTools::UnitSystem m_unitsType;
std::vector<RigEquil> m_equil;
mutable std::map<std::tuple<QString, bool, bool>, cvf::Collection<RigWellPath>> m_simWellBranchCache;
};