mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-11 07:56:08 -06:00
#4195 Grid Cross Plot: Add import of equil
This commit is contained in:
parent
15f2a76ee1
commit
0527fd8030
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -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;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user