mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
parent
1808745ea0
commit
30e3622ad4
@ -225,15 +225,6 @@ FlowPhase RimWellPlotTools::flowPhaseFromChannelName(const QString& channelName)
|
|||||||
return FLOW_PHASE_NONE;
|
return FLOW_PHASE_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
void RimWellPlotTools::addTimeStepToMap(std::map<QDateTime, std::set<RifDataSourceForRftPlt>>& destMap,
|
|
||||||
const std::pair<QDateTime, std::set<RifDataSourceForRftPlt>>& timeStepToAdd)
|
|
||||||
{
|
|
||||||
auto timeStepMapToAdd = std::map<QDateTime, std::set<RifDataSourceForRftPlt>>{ timeStepToAdd };
|
|
||||||
addTimeStepsToMap(destMap, timeStepMapToAdd);
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
@ -459,27 +450,6 @@ QDateTime RimWellPlotTools::timeStepFromWellLogFile(RimWellLogFile* wellLogFile)
|
|||||||
return timeStep;
|
return timeStep;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
std::map<QDateTime, std::set<RifDataSourceForRftPlt>> RimWellPlotTools::timeStepsMapFromRftCase(RimEclipseResultCase* rftCase, const QString& simWellName)
|
|
||||||
{
|
|
||||||
std::map<QDateTime, std::set<RifDataSourceForRftPlt>> timeStepsMap;
|
|
||||||
RifReaderEclipseRft* const reader = rftCase->rftReader();
|
|
||||||
if (reader != nullptr)
|
|
||||||
{
|
|
||||||
for (const QDateTime& timeStep : reader->availableTimeSteps(simWellName, RifEclipseRftAddress::PRESSURE))
|
|
||||||
{
|
|
||||||
if (timeStepsMap.count(timeStep) == 0)
|
|
||||||
{
|
|
||||||
timeStepsMap.insert(std::make_pair(timeStep, std::set<RifDataSourceForRftPlt>()));
|
|
||||||
}
|
|
||||||
timeStepsMap[timeStep].insert(RifDataSourceForRftPlt(RifDataSourceForRftPlt::RFT, rftCase));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return timeStepsMap;
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -503,55 +473,6 @@ std::map<QDateTime, std::set<RifDataSourceForRftPlt>> RimWellPlotTools::timeStep
|
|||||||
return timeStepsMap;
|
return timeStepsMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
std::map<QDateTime, std::set<RifDataSourceForRftPlt> > RimWellPlotTools::timeStepsMapFromWellLogFile(RimWellLogFile* wellLogFile)
|
|
||||||
{
|
|
||||||
std::map<QDateTime, std::set<RifDataSourceForRftPlt> > timeStepsMap;
|
|
||||||
|
|
||||||
QDateTime timeStep = wellLogFile->date();
|
|
||||||
|
|
||||||
if (timeStepsMap.count(timeStep) == 0)
|
|
||||||
{
|
|
||||||
timeStepsMap.insert(std::make_pair(timeStep, std::set<RifDataSourceForRftPlt>()));
|
|
||||||
}
|
|
||||||
timeStepsMap[timeStep].insert(RifDataSourceForRftPlt(RifDataSourceForRftPlt::OBSERVED, wellLogFile));
|
|
||||||
|
|
||||||
return timeStepsMap;
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
std::map<QDateTime, std::set<RifDataSourceForRftPlt>>
|
|
||||||
RimWellPlotTools::adjacentTimeSteps(const std::vector<std::pair<QDateTime, std::set<RifDataSourceForRftPlt>>>& allTimeSteps,
|
|
||||||
const std::pair<QDateTime, std::set<RifDataSourceForRftPlt>>& searchTimeStepPair)
|
|
||||||
{
|
|
||||||
std::map<QDateTime, std::set<RifDataSourceForRftPlt>> timeStepsMap;
|
|
||||||
|
|
||||||
if (allTimeSteps.size() > 0)
|
|
||||||
{
|
|
||||||
auto itr = std::find_if(allTimeSteps.begin(), allTimeSteps.end(),
|
|
||||||
[searchTimeStepPair](const std::pair<QDateTime, std::set<RifDataSourceForRftPlt>>& dt)
|
|
||||||
{
|
|
||||||
return dt.first > searchTimeStepPair.first;
|
|
||||||
});
|
|
||||||
|
|
||||||
auto itrEnd = itr != allTimeSteps.end() ? itr + 1 : itr;
|
|
||||||
|
|
||||||
for (itr = itrEnd - 1; itr != allTimeSteps.begin() && (*itr).first >= searchTimeStepPair.first; itr--);
|
|
||||||
auto itrFirst = itr;
|
|
||||||
|
|
||||||
timeStepsMap.insert(itrFirst, itrEnd);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add searched time step in case it is not included
|
|
||||||
addTimeStepToMap(timeStepsMap, searchTimeStepPair);
|
|
||||||
|
|
||||||
return timeStepsMap;
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@ -65,6 +65,8 @@ class RimWellPlotTools
|
|||||||
static bool hasFlowData(RimWellPath* wellPath);
|
static bool hasFlowData(RimWellPath* wellPath);
|
||||||
static bool isFlowChannel(RimWellLogFileChannel* channel);
|
static bool isFlowChannel(RimWellLogFileChannel* channel);
|
||||||
static bool tryMatchChannelName(const std::set<QString>& channelNames, const QString& channelNameToMatch);
|
static bool tryMatchChannelName(const std::set<QString>& channelNames, const QString& channelNameToMatch);
|
||||||
|
static std::set<QDateTime> findMatchingOrAdjacentTimeSteps(const std::set<QDateTime>& baseTimeLine, const std::set<QDateTime>& availableTimeSteps);
|
||||||
|
static std::set<QDateTime> availableSimWellTimesteps(RimEclipseCase * eclCase, const QString& simWellName );
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// PLT Only
|
// PLT Only
|
||||||
@ -72,30 +74,24 @@ public:
|
|||||||
static bool isGasFlowChannel(const QString& channelName);
|
static bool isGasFlowChannel(const QString& channelName);
|
||||||
static bool isWaterFlowChannel(const QString& channelName);
|
static bool isWaterFlowChannel(const QString& channelName);
|
||||||
static FlowPhase flowPhaseFromChannelName(const QString& channelName);
|
static FlowPhase flowPhaseFromChannelName(const QString& channelName);
|
||||||
|
|
||||||
static std::vector<RimWellLogFile*> wellLogFilesContainingFlow(const QString& wellName);
|
static std::vector<RimWellLogFile*> wellLogFilesContainingFlow(const QString& wellName);
|
||||||
static std::vector<RimWellLogFileChannel*> getFlowChannelsFromWellFile(const RimWellLogFile* wellLogFile);
|
static std::vector<RimWellLogFileChannel*> getFlowChannelsFromWellFile(const RimWellLogFile* wellLogFile);
|
||||||
static std::set<QDateTime> findMatchingOrAdjacentTimeSteps(const std::set<QDateTime>& baseTimeLine, const std::set<QDateTime>& availableTimeSteps);
|
|
||||||
static std::set<QDateTime> availableSimWellTimesteps(RimEclipseCase * eclCase, const QString& simWellName );
|
|
||||||
static RimWellPath* wellPathByWellPathNameOrSimWellName(const QString& wellPathNameOrSimwellName);
|
static RimWellPath* wellPathByWellPathNameOrSimWellName(const QString& wellPathNameOrSimwellName);
|
||||||
|
|
||||||
// RFT Only
|
// RFT Only
|
||||||
static std::pair<size_t, QString> pressureResultDataInfo(const RigEclipseCaseData* eclipseCaseData);
|
static std::pair<size_t, QString> pressureResultDataInfo(const RigEclipseCaseData* eclipseCaseData);
|
||||||
static void addTimeStepToMap(std::map<QDateTime, std::set<RifDataSourceForRftPlt>>& destMap,
|
|
||||||
const std::pair<QDateTime, std::set<RifDataSourceForRftPlt>>& timeStepToAdd);
|
|
||||||
static void addTimeStepsToMap(std::map<QDateTime, std::set<RifDataSourceForRftPlt>>& destMap,
|
static void addTimeStepsToMap(std::map<QDateTime, std::set<RifDataSourceForRftPlt>>& destMap,
|
||||||
const std::map<QDateTime, std::set<RifDataSourceForRftPlt>>& timeStepsToAdd);
|
const std::map<QDateTime, std::set<RifDataSourceForRftPlt>>& timeStepsToAdd);
|
||||||
static std::vector<RimWellLogFile*> wellLogFilesContainingPressure(const QString& simWellName);
|
static std::vector<RimWellLogFile*> wellLogFilesContainingPressure(const QString& simWellName);
|
||||||
static RimWellLogFileChannel* getPressureChannelFromWellFile(const RimWellLogFile* wellLogFile);
|
static RimWellLogFileChannel* getPressureChannelFromWellFile(const RimWellLogFile* wellLogFile);
|
||||||
static RimWellPath* wellPathFromWellLogFile(const RimWellLogFile* wellLogFile);
|
static RimWellPath* wellPathFromWellLogFile(const RimWellLogFile* wellLogFile);
|
||||||
static std::set<QDateTime> timeStepsFromRftCase(RimEclipseResultCase* rftCase, const QString& simWellName);
|
static std::set<QDateTime> timeStepsFromRftCase(RimEclipseResultCase* rftCase, const QString& simWellName);
|
||||||
static std::set<QDateTime> timeStepsFromGridCase(RimEclipseCase* gridCase);
|
static std::set<QDateTime> timeStepsFromGridCase(RimEclipseCase* gridCase);
|
||||||
static QDateTime timeStepFromWellLogFile(RimWellLogFile* wellLogFile);
|
static QDateTime timeStepFromWellLogFile(RimWellLogFile* wellLogFile);
|
||||||
static std::map<QDateTime, std::set<RifDataSourceForRftPlt>> timeStepsMapFromRftCase(RimEclipseResultCase* rftCase, const QString& simWellName);
|
|
||||||
static std::map<QDateTime, std::set<RifDataSourceForRftPlt>> timeStepsMapFromGridCase(RimEclipseCase* gridCase);
|
static std::map<QDateTime, std::set<RifDataSourceForRftPlt>> timeStepsMapFromGridCase(RimEclipseCase* gridCase);
|
||||||
static std::map<QDateTime, std::set<RifDataSourceForRftPlt>> timeStepsMapFromWellLogFile(RimWellLogFile* wellLogFile);
|
|
||||||
static std::map<QDateTime, std::set<RifDataSourceForRftPlt>> adjacentTimeSteps(const std::vector<std::pair<QDateTime, std::set<RifDataSourceForRftPlt>>>& allTimeSteps,
|
|
||||||
const std::pair<QDateTime, std::set<RifDataSourceForRftPlt>>& searchTimeStepPair);
|
|
||||||
static RiaRftPltCurveDefinition curveDefFromCurve(const RimWellLogCurve* curve);
|
static RiaRftPltCurveDefinition curveDefFromCurve(const RimWellLogCurve* curve);
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
static void appendSet(std::set<T>& destSet, const std::set<T>& setToAppend);
|
static void appendSet(std::set<T>& destSet, const std::set<T>& setToAppend);
|
||||||
|
|
||||||
|
@ -499,9 +499,9 @@ void RimWellRftPlot::updateCurvesInPlot(const std::set<RiaRftPltCurveDefinition>
|
|||||||
curve->setCase(gridCase);
|
curve->setCase(gridCase);
|
||||||
|
|
||||||
// Result definition
|
// Result definition
|
||||||
RimEclipseResultDefinition* resultDef = new RimEclipseResultDefinition();
|
RimEclipseResultDefinition* resultDef = new RimEclipseResultDefinition(); // Memory leak !!
|
||||||
resultDef->setResultVariable(resultDataInfo.second);
|
resultDef->setResultVariable(resultDataInfo.second);
|
||||||
curve->setEclipseResultDefinition(resultDef);
|
curve->setEclipseResultDefinition(resultDef); // Strange construct ?
|
||||||
|
|
||||||
// Time step
|
// Time step
|
||||||
const std::set<QDateTime>& timeSteps = RimWellPlotTools::timeStepsFromGridCase(gridCase);
|
const std::set<QDateTime>& timeSteps = RimWellPlotTools::timeStepsFromGridCase(gridCase);
|
||||||
|
Loading…
Reference in New Issue
Block a user