mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Missing first grid timestep in RFT, and missing previous closest timestep if all available are before observed timesteps.
This commit is contained in:
parent
cbeb248f6e
commit
f0ad02bc37
@ -485,6 +485,14 @@ std::set<QDateTime> RimWellPlotTools::findMatchingOrAdjacentTimeSteps(const std:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The above will only work if there are at least one available timestep equal or after any of the basetimeline times.
|
||||||
|
// If no timesteps matched but we have some, add the last available because the above code missed it.
|
||||||
|
|
||||||
|
if (!resultTimeSteps.size() && baseTimeLine.size() && availableTimeSteps.size())
|
||||||
|
{
|
||||||
|
resultTimeSteps.insert(*availableTimeSteps.rbegin());
|
||||||
|
}
|
||||||
|
|
||||||
return resultTimeSteps;
|
return resultTimeSteps;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -492,7 +500,8 @@ std::set<QDateTime> RimWellPlotTools::findMatchingOrAdjacentTimeSteps(const std:
|
|||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
std::set<QDateTime> RimWellPlotTools::availableSimWellTimesteps(RimEclipseCase * eclCase,
|
std::set<QDateTime> RimWellPlotTools::availableSimWellTimesteps(RimEclipseCase * eclCase,
|
||||||
const QString& simWellName)
|
const QString& simWellName,
|
||||||
|
bool addFirstReportTimestep)
|
||||||
{
|
{
|
||||||
std::set<QDateTime> availebleTimeSteps;
|
std::set<QDateTime> availebleTimeSteps;
|
||||||
|
|
||||||
@ -501,7 +510,7 @@ std::set<QDateTime> RimWellPlotTools::availableSimWellTimesteps(RimEclipseCase *
|
|||||||
|
|
||||||
for ( size_t tsIdx = 0; tsIdx < allTimeSteps.size(); ++tsIdx )
|
for ( size_t tsIdx = 0; tsIdx < allTimeSteps.size(); ++tsIdx )
|
||||||
{
|
{
|
||||||
if ( simWell->hasWellResult(tsIdx) )
|
if ( simWell->hasWellResult(tsIdx) || (addFirstReportTimestep && tsIdx == 0) )
|
||||||
{
|
{
|
||||||
availebleTimeSteps.insert(allTimeSteps[tsIdx]);
|
availebleTimeSteps.insert(allTimeSteps[tsIdx]);
|
||||||
}
|
}
|
||||||
@ -609,7 +618,7 @@ bool RimWellPlotTools::tryMatchChannelName(const std::set<QString>& channelNames
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
std::set < RiaRftPltCurveDefinition > RimWellPlotTools::curveDefsFromTimesteps(const QString& simWellName,
|
std::set < RiaRftPltCurveDefinition > RimWellPlotTools::curveDefsFromTimesteps(const QString& simWellName,
|
||||||
const std::vector<QDateTime>& selectedTimeSteps,
|
const std::vector<QDateTime>& selectedTimeSteps,
|
||||||
const std::set<RifEclipseRftAddress::RftWellLogChannelType>& interestingRFTResults,
|
bool firstSimWellTimeStepIsValid,
|
||||||
const std::vector<RifDataSourceForRftPlt>& selectedSourcesExpanded)
|
const std::vector<RifDataSourceForRftPlt>& selectedSourcesExpanded)
|
||||||
{
|
{
|
||||||
std::set<RiaRftPltCurveDefinition> curveDefs;
|
std::set<RiaRftPltCurveDefinition> curveDefs;
|
||||||
@ -633,7 +642,7 @@ std::set < RiaRftPltCurveDefinition > RimWellPlotTools::curveDefsFromTimesteps(c
|
|||||||
}
|
}
|
||||||
else if ( addr.sourceType() == RifDataSourceForRftPlt::GRID && addr.eclCase() )
|
else if ( addr.sourceType() == RifDataSourceForRftPlt::GRID && addr.eclCase() )
|
||||||
{
|
{
|
||||||
std::set<QDateTime> timeSteps = RimWellPlotTools::availableSimWellTimesteps(addr.eclCase(), simWellName);
|
std::set<QDateTime> timeSteps = RimWellPlotTools::availableSimWellTimesteps(addr.eclCase(), simWellName, firstSimWellTimeStepIsValid);
|
||||||
|
|
||||||
for ( const QDateTime& time : timeSteps )
|
for ( const QDateTime& time : timeSteps )
|
||||||
{
|
{
|
||||||
@ -778,6 +787,9 @@ void RimWellPlotTools::calculateValueOptionsForTimeSteps(const QString& simWellN
|
|||||||
QList<caf::PdmOptionItemInfo>& options)
|
QList<caf::PdmOptionItemInfo>& options)
|
||||||
{
|
{
|
||||||
//std::vector<RifDataSourceForRftPlt> selSources = selectedSourcesExpanded();
|
//std::vector<RifDataSourceForRftPlt> selSources = selectedSourcesExpanded();
|
||||||
|
|
||||||
|
bool addFirstTimestep = (interestingRFTResults.count(RifEclipseRftAddress::PRESSURE) == 1);
|
||||||
|
|
||||||
bool hasObservedData = false;
|
bool hasObservedData = false;
|
||||||
bool hasRftData = false;
|
bool hasRftData = false;
|
||||||
bool hasGridData = false;
|
bool hasGridData = false;
|
||||||
@ -836,7 +848,7 @@ void RimWellPlotTools::calculateValueOptionsForTimeSteps(const QString& simWellN
|
|||||||
{
|
{
|
||||||
if ( source.sourceType() == RifDataSourceForRftPlt::GRID && source.eclCase() )
|
if ( source.sourceType() == RifDataSourceForRftPlt::GRID && source.eclCase() )
|
||||||
{
|
{
|
||||||
std::set<QDateTime> wellTimeSteps = RimWellPlotTools::availableSimWellTimesteps(source.eclCase(), simWellName);
|
std::set<QDateTime> wellTimeSteps = RimWellPlotTools::availableSimWellTimesteps(source.eclCase(), simWellName, addFirstTimestep);
|
||||||
|
|
||||||
for ( const QDateTime& date: wellTimeSteps)
|
for ( const QDateTime& date: wellTimeSteps)
|
||||||
{
|
{
|
||||||
@ -864,14 +876,21 @@ void RimWellPlotTools::calculateValueOptionsForTimeSteps(const QString& simWellN
|
|||||||
{
|
{
|
||||||
std::set<QDateTime> baseTimeSteps;
|
std::set<QDateTime> baseTimeSteps;
|
||||||
for (const auto& dateSourceSetPair: *timeBaseline) baseTimeSteps.insert(dateSourceSetPair.first);
|
for (const auto& dateSourceSetPair: *timeBaseline) baseTimeSteps.insert(dateSourceSetPair.first);
|
||||||
|
|
||||||
std::set<QDateTime> rftTimeSteps;
|
std::set<QDateTime> rftTimeSteps;
|
||||||
for (const auto& dateSourceSetPair: rftTimeStepsWithSources) rftTimeSteps.insert(dateSourceSetPair.first);
|
for (const auto& dateSourceSetPair: rftTimeStepsWithSources) rftTimeSteps.insert(dateSourceSetPair.first);
|
||||||
|
|
||||||
std::set<QDateTime> gridTimeSteps;
|
std::set<QDateTime> gridTimeSteps;
|
||||||
for (const auto& dateSourceSetPair: gridTimestepsWithSources) gridTimeSteps.insert(dateSourceSetPair.first);
|
for (const auto& dateSourceSetPair: gridTimestepsWithSources) gridTimeSteps.insert(dateSourceSetPair.first);
|
||||||
|
|
||||||
std::set<QDateTime> filteredRftTimeSteps = RimWellPlotTools::findMatchingOrAdjacentTimeSteps(baseTimeSteps, rftTimeSteps);
|
std::set<QDateTime> filteredRftTimeSteps = RimWellPlotTools::findMatchingOrAdjacentTimeSteps(baseTimeSteps, rftTimeSteps);
|
||||||
std::set<QDateTime> filteredGridTimeSteps = RimWellPlotTools::findMatchingOrAdjacentTimeSteps(baseTimeSteps, gridTimeSteps);
|
std::set<QDateTime> filteredGridTimeSteps = RimWellPlotTools::findMatchingOrAdjacentTimeSteps(baseTimeSteps, gridTimeSteps);
|
||||||
|
|
||||||
|
if (addFirstTimestep && gridTimeSteps.size())
|
||||||
|
{
|
||||||
|
filteredGridTimeSteps.insert(*gridTimeSteps.begin());
|
||||||
|
}
|
||||||
|
|
||||||
// Fill final map
|
// Fill final map
|
||||||
timestepsToShowWithSources = observedTimeStepsWithSources;
|
timestepsToShowWithSources = observedTimeStepsWithSources;
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ public:
|
|||||||
QList<caf::PdmOptionItemInfo>& options);
|
QList<caf::PdmOptionItemInfo>& options);
|
||||||
static std::set < RiaRftPltCurveDefinition > curveDefsFromTimesteps(const QString& simWellName,
|
static std::set < RiaRftPltCurveDefinition > curveDefsFromTimesteps(const QString& simWellName,
|
||||||
const std::vector<QDateTime>& selectedTimeStepVector,
|
const std::vector<QDateTime>& selectedTimeStepVector,
|
||||||
const std::set<RifEclipseRftAddress::RftWellLogChannelType>& interestingRFTResults,
|
bool firstReportTimeStepIsValid,
|
||||||
const std::vector<RifDataSourceForRftPlt>& selectedSourcesExpanded);
|
const std::vector<RifDataSourceForRftPlt>& selectedSourcesExpanded);
|
||||||
|
|
||||||
static QString flowPlotAxisTitle(RimWellLogFile::WellFlowCondition condition,
|
static QString flowPlotAxisTitle(RimWellLogFile::WellFlowCondition condition,
|
||||||
@ -123,7 +123,7 @@ private:
|
|||||||
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> findMatchingOrAdjacentTimeSteps(const std::set<QDateTime>& baseTimeLine, const std::set<QDateTime>& availableTimeSteps);
|
||||||
static std::set<QDateTime> availableSimWellTimesteps(RimEclipseCase * eclCase, const QString& simWellName);
|
static std::set<QDateTime> availableSimWellTimesteps(RimEclipseCase * eclCase, const QString& simWellName, bool addFirstReportTimeStep);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -281,9 +281,7 @@ std::set < RiaRftPltCurveDefinition > RimWellPltPlot::selectedCurveDefs() const
|
|||||||
{
|
{
|
||||||
return RimWellPlotTools::curveDefsFromTimesteps(RimWellPlotTools::simWellName(m_wellPathName),
|
return RimWellPlotTools::curveDefsFromTimesteps(RimWellPlotTools::simWellName(m_wellPathName),
|
||||||
m_selectedTimeSteps.v(),
|
m_selectedTimeSteps.v(),
|
||||||
{ RifEclipseRftAddress::ORAT,
|
false,
|
||||||
RifEclipseRftAddress::WRAT,
|
|
||||||
RifEclipseRftAddress::GRAT },
|
|
||||||
selectedSourcesExpanded());
|
selectedSourcesExpanded());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -431,7 +431,7 @@ std::set < RiaRftPltCurveDefinition > RimWellRftPlot::selectedCurveDefs() const
|
|||||||
{
|
{
|
||||||
return RimWellPlotTools::curveDefsFromTimesteps(associatedSimWellName(),
|
return RimWellPlotTools::curveDefsFromTimesteps(associatedSimWellName(),
|
||||||
m_selectedTimeSteps.v(),
|
m_selectedTimeSteps.v(),
|
||||||
{ RifEclipseRftAddress::PRESSURE },
|
true,
|
||||||
selectedSourcesExpanded());
|
selectedSourcesExpanded());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user