mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#3841 Summary : Detect summary curves and corresponding history curves
This commit is contained in:
parent
d40675f222
commit
aaff5d33e5
@ -17,6 +17,7 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#include "RiaSummaryCurveAnalyzer.h"
|
#include "RiaSummaryCurveAnalyzer.h"
|
||||||
|
#include "RiaStdStringTools.h"
|
||||||
|
|
||||||
#include "RiaSummaryCurveDefinition.h"
|
#include "RiaSummaryCurveDefinition.h"
|
||||||
|
|
||||||
@ -62,6 +63,44 @@ std::set<std::string> RiaSummaryCurveAnalyzer::quantities() const
|
|||||||
return m_quantities;
|
return m_quantities;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
std::set<std::string> RiaSummaryCurveAnalyzer::quantityNamesWithHistory() const
|
||||||
|
{
|
||||||
|
assignCategoryToQuantities();
|
||||||
|
|
||||||
|
return m_quantitiesWithMatchingHistory;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
std::set<std::string> RiaSummaryCurveAnalyzer::quantityNamesNoHistory() const
|
||||||
|
{
|
||||||
|
assignCategoryToQuantities();
|
||||||
|
|
||||||
|
return m_quantitiesNoMatchingHistory;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
std::string RiaSummaryCurveAnalyzer::quantityNameForTitle() const
|
||||||
|
{
|
||||||
|
if (quantityNamesWithHistory().size() == 1 && quantityNamesNoHistory().empty())
|
||||||
|
{
|
||||||
|
return *quantityNamesWithHistory().begin();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (quantityNamesNoHistory().size() == 1 && quantityNamesWithHistory().empty())
|
||||||
|
{
|
||||||
|
return *quantityNamesNoHistory().begin();
|
||||||
|
}
|
||||||
|
|
||||||
|
return std::string();
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -130,7 +169,7 @@ std::vector<QString> RiaSummaryCurveAnalyzer::identifierTexts(RifEclipseSummaryA
|
|||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
std::vector<RifEclipseSummaryAddress>
|
std::vector<RifEclipseSummaryAddress>
|
||||||
RiaSummaryCurveAnalyzer::addressesForCategory(const std::set<RifEclipseSummaryAddress>& addresses,
|
RiaSummaryCurveAnalyzer::addressesForCategory(const std::set<RifEclipseSummaryAddress>& addresses,
|
||||||
RifEclipseSummaryAddress::SummaryVarCategory category)
|
RifEclipseSummaryAddress::SummaryVarCategory category)
|
||||||
{
|
{
|
||||||
std::vector<RifEclipseSummaryAddress> filteredAddresses;
|
std::vector<RifEclipseSummaryAddress> filteredAddresses;
|
||||||
@ -158,6 +197,61 @@ void RiaSummaryCurveAnalyzer::clear()
|
|||||||
m_categories.clear();
|
m_categories.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RiaSummaryCurveAnalyzer::assignCategoryToQuantities() const
|
||||||
|
{
|
||||||
|
if (!m_quantities.empty())
|
||||||
|
{
|
||||||
|
if (m_quantitiesWithMatchingHistory.empty() && m_quantitiesNoMatchingHistory.empty())
|
||||||
|
{
|
||||||
|
computeQuantityNamesWithHistory();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RiaSummaryCurveAnalyzer::computeQuantityNamesWithHistory() const
|
||||||
|
{
|
||||||
|
m_quantitiesNoMatchingHistory.clear();
|
||||||
|
m_quantitiesWithMatchingHistory.clear();
|
||||||
|
|
||||||
|
const std::string historyIdentifier("H");
|
||||||
|
|
||||||
|
for (const auto& s : m_quantities)
|
||||||
|
{
|
||||||
|
if (RiaStdStringTools::endsWith(s, historyIdentifier))
|
||||||
|
{
|
||||||
|
std::string summaryCurveName = s.substr(0, s.size() - 1);
|
||||||
|
|
||||||
|
if (m_quantities.find(summaryCurveName) != m_quantities.end())
|
||||||
|
{
|
||||||
|
m_quantitiesWithMatchingHistory.insert(summaryCurveName);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_quantitiesNoMatchingHistory.insert(summaryCurveName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::string historySummaryCurveName = s + historyIdentifier;
|
||||||
|
|
||||||
|
if (m_quantities.find(historySummaryCurveName) != m_quantities.end())
|
||||||
|
{
|
||||||
|
m_quantitiesWithMatchingHistory.insert(s);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_quantitiesNoMatchingHistory.insert(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@ -42,6 +42,11 @@ public:
|
|||||||
void clear();
|
void clear();
|
||||||
|
|
||||||
std::set<std::string> quantities() const;
|
std::set<std::string> quantities() const;
|
||||||
|
std::set<std::string> quantityNamesWithHistory() const;
|
||||||
|
std::set<std::string> quantityNamesNoHistory() const;
|
||||||
|
|
||||||
|
std::string quantityNameForTitle() const;
|
||||||
|
|
||||||
std::set<std::string> wellNames() const;
|
std::set<std::string> wellNames() const;
|
||||||
std::set<std::string> wellGroupNames() const;
|
std::set<std::string> wellGroupNames() const;
|
||||||
std::set<int> regionNumbers() const;
|
std::set<int> regionNumbers() const;
|
||||||
@ -54,10 +59,16 @@ public:
|
|||||||
RifEclipseSummaryAddress::SummaryVarCategory category);
|
RifEclipseSummaryAddress::SummaryVarCategory category);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void assignCategoryToQuantities() const;
|
||||||
|
void computeQuantityNamesWithHistory() const;
|
||||||
|
|
||||||
void analyzeSingleAddress(const RifEclipseSummaryAddress& address);
|
void analyzeSingleAddress(const RifEclipseSummaryAddress& address);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::set<std::string> m_quantities;
|
std::set<std::string> m_quantities;
|
||||||
|
mutable std::set<std::string> m_quantitiesWithMatchingHistory;
|
||||||
|
mutable std::set<std::string> m_quantitiesNoMatchingHistory;
|
||||||
|
|
||||||
std::set<std::string> m_wellNames;
|
std::set<std::string> m_wellNames;
|
||||||
std::set<std::string> m_wellGroupNames;
|
std::set<std::string> m_wellGroupNames;
|
||||||
std::set<int> m_regionNumbers;
|
std::set<int> m_regionNumbers;
|
||||||
|
Loading…
Reference in New Issue
Block a user