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:
@@ -230,16 +230,7 @@ RifEclipseSummaryAddress addressFromErtSmSpecNode(const smspec_node_type * ertSu
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
const std::vector<RifEclipseSummaryAddress>& RifReaderEclipseSummary::allResultAddresses()
|
||||
{
|
||||
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);
|
||||
|
||||
m_allResultAddresses.push_back(addressFromErtSmSpecNode(ertSumVarNode));
|
||||
}
|
||||
}
|
||||
buildMetaData();
|
||||
|
||||
return m_allResultAddresses;
|
||||
}
|
||||
@@ -318,17 +309,47 @@ std::vector<QDateTime> RifReaderEclipseSummary::fromTimeT(const std::vector<time
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
int RifReaderEclipseSummary::indexFromAddress(const RifEclipseSummaryAddress& resultAddress)
|
||||
{
|
||||
// For now, a slow linear search
|
||||
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;
|
||||
}
|
||||
this->buildMetaData();
|
||||
|
||||
auto it = m_resultAddressToErtNodeIdx.find(resultAddress);
|
||||
if (it != m_resultAddressToErtNodeIdx.end())
|
||||
{
|
||||
return it->second;
|
||||
}
|
||||
|
||||
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
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
|
@@ -22,6 +22,7 @@
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
|
||||
#include "cvfObject.h"
|
||||
|
||||
@@ -42,6 +43,7 @@ public:
|
||||
bool open(const std::string& headerFileName, const std::vector<std::string>& dataFileNames);
|
||||
void close();
|
||||
|
||||
bool hasAddress(const RifEclipseSummaryAddress& resultAddress);
|
||||
const std::vector<RifEclipseSummaryAddress>& allResultAddresses();
|
||||
std::vector<time_t> timeSteps() const;
|
||||
|
||||
@@ -55,6 +57,7 @@ private:
|
||||
int timeStepCount() const;
|
||||
int indexFromAddress(const RifEclipseSummaryAddress& resultAddress);
|
||||
|
||||
void buildMetaData();
|
||||
private:
|
||||
// Taken from ecl_sum.h
|
||||
typedef struct ecl_sum_struct ecl_sum_type;
|
||||
@@ -64,5 +67,7 @@ private:
|
||||
const ecl_smspec_type * eclSmSpec;
|
||||
|
||||
std::vector<RifEclipseSummaryAddress> m_allResultAddresses;
|
||||
std::map<RifEclipseSummaryAddress, int> m_resultAddressToErtNodeIdx;
|
||||
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user