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;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
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;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
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;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
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 isFlowChannel(RimWellLogFileChannel* channel);
|
||||
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:
|
||||
// PLT Only
|
||||
@ -72,30 +74,24 @@ public:
|
||||
static bool isGasFlowChannel(const QString& channelName);
|
||||
static bool isWaterFlowChannel(const QString& channelName);
|
||||
static FlowPhase flowPhaseFromChannelName(const QString& channelName);
|
||||
|
||||
static std::vector<RimWellLogFile*> wellLogFilesContainingFlow(const QString& wellName);
|
||||
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);
|
||||
|
||||
// RFT Only
|
||||
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,
|
||||
const std::map<QDateTime, std::set<RifDataSourceForRftPlt>>& timeStepsToAdd);
|
||||
static std::vector<RimWellLogFile*> wellLogFilesContainingPressure(const QString& simWellName);
|
||||
static RimWellLogFileChannel* getPressureChannelFromWellFile(const RimWellLogFile* wellLogFile);
|
||||
static RimWellPath* wellPathFromWellLogFile(const RimWellLogFile* wellLogFile);
|
||||
static std::set<QDateTime> timeStepsFromRftCase(RimEclipseResultCase* rftCase, const QString& simWellName);
|
||||
static std::set<QDateTime> timeStepsFromGridCase(RimEclipseCase* gridCase);
|
||||
static QDateTime timeStepFromWellLogFile(RimWellLogFile* wellLogFile);
|
||||
static std::map<QDateTime, std::set<RifDataSourceForRftPlt>> timeStepsMapFromRftCase(RimEclipseResultCase* rftCase, const QString& simWellName);
|
||||
static std::set<QDateTime> timeStepsFromRftCase(RimEclipseResultCase* rftCase, const QString& simWellName);
|
||||
static std::set<QDateTime> timeStepsFromGridCase(RimEclipseCase* gridCase);
|
||||
static QDateTime timeStepFromWellLogFile(RimWellLogFile* wellLogFile);
|
||||
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);
|
||||
|
||||
template<typename T>
|
||||
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);
|
||||
|
||||
// Result definition
|
||||
RimEclipseResultDefinition* resultDef = new RimEclipseResultDefinition();
|
||||
RimEclipseResultDefinition* resultDef = new RimEclipseResultDefinition(); // Memory leak !!
|
||||
resultDef->setResultVariable(resultDataInfo.second);
|
||||
curve->setEclipseResultDefinition(resultDef);
|
||||
curve->setEclipseResultDefinition(resultDef); // Strange construct ?
|
||||
|
||||
// Time step
|
||||
const std::set<QDateTime>& timeSteps = RimWellPlotTools::timeStepsFromGridCase(gridCase);
|
||||
|
Loading…
Reference in New Issue
Block a user