mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
RFT Plot. Do not show cases with no time steps. Do not show source editor headers when no cases
This commit is contained in:
@@ -317,6 +317,11 @@ std::vector<RimWellPath*> RimWellRftPlot::wellPathsContainingPressure(const QStr
|
|||||||
for (RimOilField* oilField : project->oilFields)
|
for (RimOilField* oilField : project->oilFields)
|
||||||
{
|
{
|
||||||
auto wellPathColl = oilField->wellPathCollection();
|
auto wellPathColl = oilField->wellPathCollection();
|
||||||
|
auto wellPathsVector = std::vector<RimWellPath*>(wellPathColl->wellPaths().begin(), wellPathColl->wellPaths().end());
|
||||||
|
size_t timeStepCount = timeStepsFromWellPaths(wellPathsVector).size();
|
||||||
|
|
||||||
|
if (timeStepCount == 0) continue;
|
||||||
|
|
||||||
for (const auto& wellPath : wellPathColl->wellPaths)
|
for (const auto& wellPath : wellPathColl->wellPaths)
|
||||||
{
|
{
|
||||||
bool hasPressure = false;
|
bool hasPressure = false;
|
||||||
@@ -418,13 +423,17 @@ RimWellRftPlot::eclipseCasesContainingPressure(const QString& wellName) const
|
|||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
std::vector<RimEclipseResultCase*>
|
std::vector<RimEclipseResultCase*>
|
||||||
RimWellRftPlot::gridCasesFromEclipseCases(const std::vector<std::tuple<RimEclipseResultCase*, bool, bool>>& eclipseCases) const
|
RimWellRftPlot::gridCasesFromEclipseCases(const std::vector<std::tuple<RimEclipseResultCase*, bool, bool>>& eclipseCasesTuple) const
|
||||||
{
|
{
|
||||||
std::vector<RimEclipseResultCase*> cases;
|
std::vector<RimEclipseResultCase*> cases;
|
||||||
for (const auto& eclCase : eclipseCases)
|
for (const auto& eclCaseTuple : eclipseCasesTuple)
|
||||||
{
|
{
|
||||||
bool hasPressureData = std::get<1>(eclCase);
|
bool hasPressureData = std::get<1>(eclCaseTuple);
|
||||||
cases.push_back(std::get<0>(eclCase));
|
size_t timeStepCount = timeStepsFromGridCase(std::get<0>(eclCaseTuple)).size();
|
||||||
|
if (timeStepCount > 0)
|
||||||
|
{
|
||||||
|
cases.push_back(std::get<0>(eclCaseTuple));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return cases;
|
return cases;
|
||||||
}
|
}
|
||||||
@@ -433,15 +442,16 @@ RimWellRftPlot::gridCasesFromEclipseCases(const std::vector<std::tuple<RimEclips
|
|||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
std::vector<RimEclipseResultCase*>
|
std::vector<RimEclipseResultCase*>
|
||||||
RimWellRftPlot::rftCasesFromEclipseCases(const std::vector<std::tuple<RimEclipseResultCase*, bool, bool>>& eclipseCases) const
|
RimWellRftPlot::rftCasesFromEclipseCases(const std::vector<std::tuple<RimEclipseResultCase*, bool, bool>>& eclipseCasesTuple) const
|
||||||
{
|
{
|
||||||
std::vector<RimEclipseResultCase*> cases;
|
std::vector<RimEclipseResultCase*> cases;
|
||||||
for (const auto& eclCase : eclipseCases)
|
for (const auto& eclCaseTuple : eclipseCasesTuple)
|
||||||
{
|
{
|
||||||
bool hasRftData = std::get<2>(eclCase);
|
bool hasRftData = std::get<2>(eclCaseTuple);
|
||||||
if (hasRftData)
|
size_t timeStepCount = timeStepsFromRftCase(std::get<0>(eclCaseTuple)).size();
|
||||||
|
if (hasRftData && timeStepCount > 0)
|
||||||
{
|
{
|
||||||
cases.push_back(std::get<0>(eclCase));
|
cases.push_back(std::get<0>(eclCaseTuple));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return cases;
|
return cases;
|
||||||
@@ -471,6 +481,20 @@ std::vector<QDateTime> RimWellRftPlot::timeStepsFromGridCase(const RimEclipseCas
|
|||||||
return eclipseCaseData->results(RiaDefines::MATRIX_MODEL)->timeStepDates(resultIndex);
|
return eclipseCaseData->results(RiaDefines::MATRIX_MODEL)->timeStepDates(resultIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
std::vector<QDateTime> RimWellRftPlot::timeStepsFromWellPaths(const std::vector<RimWellPath*> wellPaths) const
|
||||||
|
{
|
||||||
|
std::set<QDateTime> dates;
|
||||||
|
for (const auto& wellPath : wellPaths)
|
||||||
|
{
|
||||||
|
auto wellLogFile = wellPath->wellLogFile();
|
||||||
|
dates.insert(RiaDateStringParser::parseDateString(wellLogFile->date()));
|
||||||
|
}
|
||||||
|
return std::vector<QDateTime>(dates.begin(), dates.end());
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -510,13 +534,10 @@ std::set < std::pair<RimWellRftAddress, QDateTime>> RimWellRftPlot::selectedCurv
|
|||||||
}
|
}
|
||||||
else if (rftAddr.sourceType() == RftSourceType::OBSERVED)
|
else if (rftAddr.sourceType() == RftSourceType::OBSERVED)
|
||||||
{
|
{
|
||||||
for (const auto& wellPath : wellPaths)
|
const auto& timeSteps = timeStepsFromWellPaths(wellPaths);
|
||||||
|
if (std::find(timeSteps.begin(), timeSteps.end(), selectedDate) != timeSteps.end())
|
||||||
{
|
{
|
||||||
auto wellLogFile = wellPath->wellLogFile();
|
curveDefs.insert(std::make_pair(rftAddr, selectedDate));
|
||||||
if (RiaDateStringParser::parseDateString(wellLogFile->date()) == selectedDate)
|
|
||||||
{
|
|
||||||
curveDefs.insert(std::make_pair(rftAddr, selectedDate));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -764,8 +785,11 @@ QList<caf::PdmOptionItemInfo> RimWellRftPlot::calculateValueOptions(const caf::P
|
|||||||
{
|
{
|
||||||
const std::vector<std::tuple<RimEclipseResultCase*, bool, bool>>& eclipseCases = eclipseCasesContainingPressure(m_wellName);
|
const std::vector<std::tuple<RimEclipseResultCase*, bool, bool>>& eclipseCases = eclipseCasesContainingPressure(m_wellName);
|
||||||
|
|
||||||
options.push_back(caf::PdmOptionItemInfo::createHeader(RimWellRftAddress::sourceTypeUiText(RftSourceType::RFT), true));
|
|
||||||
auto rftCases = rftCasesFromEclipseCases(eclipseCases);
|
auto rftCases = rftCasesFromEclipseCases(eclipseCases);
|
||||||
|
if (rftCases.size() > 0)
|
||||||
|
{
|
||||||
|
options.push_back(caf::PdmOptionItemInfo::createHeader(RimWellRftAddress::sourceTypeUiText(RftSourceType::RFT), true));
|
||||||
|
}
|
||||||
for (const auto& rftCase : rftCases)
|
for (const auto& rftCase : rftCases)
|
||||||
{
|
{
|
||||||
auto addr = RimWellRftAddress(RftSourceType::RFT, rftCase->caseId);
|
auto addr = RimWellRftAddress(RftSourceType::RFT, rftCase->caseId);
|
||||||
@@ -774,8 +798,11 @@ QList<caf::PdmOptionItemInfo> RimWellRftPlot::calculateValueOptions(const caf::P
|
|||||||
options.push_back(item);
|
options.push_back(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
options.push_back(caf::PdmOptionItemInfo::createHeader(RimWellRftAddress::sourceTypeUiText(RftSourceType::GRID), true));
|
|
||||||
auto gridCases = gridCasesFromEclipseCases(eclipseCases);
|
auto gridCases = gridCasesFromEclipseCases(eclipseCases);
|
||||||
|
if (gridCases.size() > 0)
|
||||||
|
{
|
||||||
|
options.push_back(caf::PdmOptionItemInfo::createHeader(RimWellRftAddress::sourceTypeUiText(RftSourceType::GRID), true));
|
||||||
|
}
|
||||||
for (const auto& gridCase : gridCases)
|
for (const auto& gridCase : gridCases)
|
||||||
{
|
{
|
||||||
auto addr = RimWellRftAddress(RftSourceType::GRID, gridCase->caseId);
|
auto addr = RimWellRftAddress(RftSourceType::GRID, gridCase->caseId);
|
||||||
@@ -784,9 +811,10 @@ QList<caf::PdmOptionItemInfo> RimWellRftPlot::calculateValueOptions(const caf::P
|
|||||||
options.push_back(item);
|
options.push_back(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
options.push_back(caf::PdmOptionItemInfo::createHeader(RimWellRftAddress::sourceTypeUiText(RftSourceType::OBSERVED), true));
|
|
||||||
if (wellPathsContainingPressure(m_wellName).size() > 0)
|
if (wellPathsContainingPressure(m_wellName).size() > 0)
|
||||||
{
|
{
|
||||||
|
options.push_back(caf::PdmOptionItemInfo::createHeader(RimWellRftAddress::sourceTypeUiText(RftSourceType::OBSERVED), true));
|
||||||
|
|
||||||
auto addr = RimWellRftAddress(RftSourceType::OBSERVED);
|
auto addr = RimWellRftAddress(RftSourceType::OBSERVED);
|
||||||
auto item = caf::PdmOptionItemInfo(addr.uiText(), QVariant::fromValue(addr));
|
auto item = caf::PdmOptionItemInfo(addr.uiText(), QVariant::fromValue(addr));
|
||||||
item.setLevel(1);
|
item.setLevel(1);
|
||||||
@@ -877,6 +905,8 @@ void RimWellRftPlot::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering&
|
|||||||
timeStepsGroup->add(&m_selectedTimeSteps);
|
timeStepsGroup->add(&m_selectedTimeSteps);
|
||||||
|
|
||||||
//uiOrdering.add(&m_showPlotTitle);
|
//uiOrdering.add(&m_showPlotTitle);
|
||||||
|
|
||||||
|
uiOrdering.skipRemainingFields(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -949,10 +979,8 @@ void RimWellRftPlot::calculateValueOptionsForTimeSteps(const QString& wellName,
|
|||||||
}
|
}
|
||||||
else if (selection.sourceType() == RimWellRftAddress(RftSourceType::OBSERVED))
|
else if (selection.sourceType() == RimWellRftAddress(RftSourceType::OBSERVED))
|
||||||
{
|
{
|
||||||
for (const auto& wellPath : observedWellPaths)
|
for (const auto& date : timeStepsFromWellPaths(observedWellPaths))
|
||||||
{
|
{
|
||||||
auto wellLogFile = wellPath->wellLogFile();
|
|
||||||
auto date = RiaDateStringParser::parseDateString(wellLogFile->date());
|
|
||||||
if (date.isValid())
|
if (date.isValid())
|
||||||
{
|
{
|
||||||
dates.insert(date);
|
dates.insert(date);
|
||||||
|
|||||||
@@ -116,10 +116,11 @@ private:
|
|||||||
RimWellPath* wellPathForObservedData(const QString& wellName, const QDateTime& date) const;
|
RimWellPath* wellPathForObservedData(const QString& wellName, const QDateTime& date) const;
|
||||||
|
|
||||||
std::vector<std::tuple<RimEclipseResultCase*, bool, bool>> eclipseCasesContainingPressure(const QString& wellName) const;
|
std::vector<std::tuple<RimEclipseResultCase*, bool, bool>> eclipseCasesContainingPressure(const QString& wellName) const;
|
||||||
std::vector<RimEclipseResultCase*> gridCasesFromEclipseCases(const std::vector<std::tuple<RimEclipseResultCase*, bool, bool>>& eclipseCases) const;
|
std::vector<RimEclipseResultCase*> gridCasesFromEclipseCases(const std::vector<std::tuple<RimEclipseResultCase*, bool, bool>>& eclipseCasesTuple) const;
|
||||||
std::vector<RimEclipseResultCase*> rftCasesFromEclipseCases(const std::vector<std::tuple<RimEclipseResultCase*, bool, bool>>& eclipseCases) const;
|
std::vector<RimEclipseResultCase*> rftCasesFromEclipseCases(const std::vector<std::tuple<RimEclipseResultCase*, bool, bool>>& eclipseCasesTuple) const;
|
||||||
std::vector<QDateTime> timeStepsFromRftCase(RimEclipseResultCase* gridCase) const;
|
std::vector<QDateTime> timeStepsFromRftCase(RimEclipseResultCase* gridCase) const;
|
||||||
std::vector<QDateTime> timeStepsFromGridCase(const RimEclipseCase* gridCase) const;
|
std::vector<QDateTime> timeStepsFromGridCase(const RimEclipseCase* gridCase) const;
|
||||||
|
std::vector<QDateTime> timeStepsFromWellPaths(const std::vector<RimWellPath*> wellPaths) const;
|
||||||
|
|
||||||
std::set<std::pair<RimWellRftAddress, QDateTime>> selectedCurveDefs() const;
|
std::set<std::pair<RimWellRftAddress, QDateTime>> selectedCurveDefs() const;
|
||||||
std::set<std::pair<RimWellRftAddress, QDateTime>> curveDefsFromCurves() const;
|
std::set<std::pair<RimWellRftAddress, QDateTime>> curveDefsFromCurves() const;
|
||||||
|
|||||||
Reference in New Issue
Block a user