mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#782 Avoid creating curves for none existing data.
This commit is contained in:
parent
833de65df6
commit
5c09935ac5
@ -230,16 +230,7 @@ RifEclipseSummaryAddress addressFromErtSmSpecNode(const smspec_node_type * ertSu
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
const std::vector<RifEclipseSummaryAddress>& RifReaderEclipseSummary::allResultAddresses()
|
const std::vector<RifEclipseSummaryAddress>& RifReaderEclipseSummary::allResultAddresses()
|
||||||
{
|
{
|
||||||
if (m_allResultAddresses.size() == 0)
|
buildMetaData();
|
||||||
{
|
|
||||||
int varCount = ecl_smspec_num_nodes( eclSmSpec);
|
|
||||||
for(int i = 0; i < varCount; i++)
|
|
||||||
{
|
|
||||||
const smspec_node_type * ertSumVarNode = ecl_smspec_iget_node(eclSmSpec, i);
|
|
||||||
|
|
||||||
m_allResultAddresses.push_back(addressFromErtSmSpecNode(ertSumVarNode));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return m_allResultAddresses;
|
return m_allResultAddresses;
|
||||||
}
|
}
|
||||||
@ -318,17 +309,47 @@ std::vector<QDateTime> RifReaderEclipseSummary::fromTimeT(const std::vector<time
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
int RifReaderEclipseSummary::indexFromAddress(const RifEclipseSummaryAddress& resultAddress)
|
int RifReaderEclipseSummary::indexFromAddress(const RifEclipseSummaryAddress& resultAddress)
|
||||||
{
|
{
|
||||||
// For now, a slow linear search
|
this->buildMetaData();
|
||||||
int resIndex = -1;
|
|
||||||
int addrCount = static_cast<int>(this->allResultAddresses().size());
|
|
||||||
for (int idx = 0; idx < addrCount; ++idx)
|
|
||||||
{
|
|
||||||
if (m_allResultAddresses[idx] == resultAddress) return idx;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
auto it = m_resultAddressToErtNodeIdx.find(resultAddress);
|
||||||
|
if (it != m_resultAddressToErtNodeIdx.end())
|
||||||
|
{
|
||||||
|
return it->second;
|
||||||
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RifReaderEclipseSummary::buildMetaData()
|
||||||
|
{
|
||||||
|
if(m_allResultAddresses.size() == 0)
|
||||||
|
{
|
||||||
|
int varCount = ecl_smspec_num_nodes(eclSmSpec);
|
||||||
|
for(int i = 0; i < varCount; i++)
|
||||||
|
{
|
||||||
|
const smspec_node_type * ertSumVarNode = ecl_smspec_iget_node(eclSmSpec, i);
|
||||||
|
RifEclipseSummaryAddress addr = addressFromErtSmSpecNode(ertSumVarNode);
|
||||||
|
m_allResultAddresses.push_back(addr);
|
||||||
|
m_resultAddressToErtNodeIdx[addr] = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
bool RifReaderEclipseSummary::hasAddress(const RifEclipseSummaryAddress& resultAddress)
|
||||||
|
{
|
||||||
|
this->buildMetaData();
|
||||||
|
|
||||||
|
auto it = m_resultAddressToErtNodeIdx.find(resultAddress);
|
||||||
|
|
||||||
|
return (it != m_resultAddressToErtNodeIdx.end());
|
||||||
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
#include "cvfObject.h"
|
#include "cvfObject.h"
|
||||||
|
|
||||||
@ -42,6 +43,7 @@ public:
|
|||||||
bool open(const std::string& headerFileName, const std::vector<std::string>& dataFileNames);
|
bool open(const std::string& headerFileName, const std::vector<std::string>& dataFileNames);
|
||||||
void close();
|
void close();
|
||||||
|
|
||||||
|
bool hasAddress(const RifEclipseSummaryAddress& resultAddress);
|
||||||
const std::vector<RifEclipseSummaryAddress>& allResultAddresses();
|
const std::vector<RifEclipseSummaryAddress>& allResultAddresses();
|
||||||
std::vector<time_t> timeSteps() const;
|
std::vector<time_t> timeSteps() const;
|
||||||
|
|
||||||
@ -55,6 +57,7 @@ private:
|
|||||||
int timeStepCount() const;
|
int timeStepCount() const;
|
||||||
int indexFromAddress(const RifEclipseSummaryAddress& resultAddress);
|
int indexFromAddress(const RifEclipseSummaryAddress& resultAddress);
|
||||||
|
|
||||||
|
void buildMetaData();
|
||||||
private:
|
private:
|
||||||
// Taken from ecl_sum.h
|
// Taken from ecl_sum.h
|
||||||
typedef struct ecl_sum_struct ecl_sum_type;
|
typedef struct ecl_sum_struct ecl_sum_type;
|
||||||
@ -64,5 +67,7 @@ private:
|
|||||||
const ecl_smspec_type * eclSmSpec;
|
const ecl_smspec_type * eclSmSpec;
|
||||||
|
|
||||||
std::vector<RifEclipseSummaryAddress> m_allResultAddresses;
|
std::vector<RifEclipseSummaryAddress> m_allResultAddresses;
|
||||||
|
std::map<RifEclipseSummaryAddress, int> m_resultAddressToErtNodeIdx;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -242,12 +242,19 @@ void RimSummaryCurveFilter::syncCurvesFromUiSelection()
|
|||||||
|
|
||||||
for (RimSummaryCase* currentCase: m_selectedSummaryCases)
|
for (RimSummaryCase* currentCase: m_selectedSummaryCases)
|
||||||
{
|
{
|
||||||
|
if (!currentCase || !currentCase->caseData() || !currentCase->caseData()->summaryReader()) continue;
|
||||||
|
|
||||||
|
RifReaderEclipseSummary* reader = currentCase->caseData()->summaryReader();
|
||||||
|
|
||||||
for(const RifEclipseSummaryAddress& addr: m_uiFilterResultMultiSelection.v())
|
for(const RifEclipseSummaryAddress& addr: m_uiFilterResultMultiSelection.v())
|
||||||
{
|
{
|
||||||
|
if(!reader->hasAddress(addr)) continue;
|
||||||
|
|
||||||
newCurveDefinitions.insert(std::make_pair(currentCase, addr));
|
newCurveDefinitions.insert(std::make_pair(currentCase, addr));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
// Delete all existing curves that is not matching
|
// Delete all existing curves that is not matching
|
||||||
// Remove the entries in the search set that we already have
|
// Remove the entries in the search set that we already have
|
||||||
for(RimSummaryCurve* curve: m_curves)
|
for(RimSummaryCurve* curve: m_curves)
|
||||||
@ -263,6 +270,10 @@ void RimSummaryCurveFilter::syncCurvesFromUiSelection()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_curves.removeChildObject(nullptr);
|
m_curves.removeChildObject(nullptr);
|
||||||
|
#else
|
||||||
|
m_curves.deleteAllChildObjects();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// Create all new curves that is missing
|
// Create all new curves that is missing
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user