#1947 RFT/PLT Plot: Open RFT file on usage

This commit is contained in:
Unknown 2017-10-04 16:13:17 +02:00
parent f56557f0c3
commit 24d59d7f84
3 changed files with 27 additions and 22 deletions

View File

@ -25,7 +25,8 @@
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RifReaderEclipseRft::RifReaderEclipseRft()
RifReaderEclipseRft::RifReaderEclipseRft(const std::string& fileName):
m_fileName(fileName), m_ecl_rft_file(nullptr)
{
}
@ -39,13 +40,13 @@ RifReaderEclipseRft::~RifReaderEclipseRft()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RifReaderEclipseRft::open(const std::string& fileName)
void RifReaderEclipseRft::open()
{
if (fileName.empty()) return false;
if (m_fileName.empty()) return;
m_ecl_rft_file = ecl_rft_file_alloc_case(fileName.data());
m_ecl_rft_file = ecl_rft_file_alloc_case(m_fileName.data());
if (m_ecl_rft_file == NULL) return false;
if (m_ecl_rft_file == NULL) return;
int fileSize = ecl_rft_file_get_size(m_ecl_rft_file);
@ -97,22 +98,32 @@ bool RifReaderEclipseRft::open(const std::string& fileName)
}
}
return true;
return;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const std::vector<RifEclipseRftAddress>& RifReaderEclipseRft::eclipseRftAddresses() const
const std::vector<RifEclipseRftAddress>& RifReaderEclipseRft::eclipseRftAddresses()
{
if (!m_ecl_rft_file)
{
open();
}
return m_eclipseRftAddresses;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RifReaderEclipseRft::values(const RifEclipseRftAddress& rftAddress, std::vector<double>* values) const
void RifReaderEclipseRft::values(const RifEclipseRftAddress& rftAddress, std::vector<double>* values)
{
if (!m_ecl_rft_file)
{
open();
}
int index = indexFromAddress(rftAddress);
if (index < 0) return;

View File

@ -31,27 +31,22 @@ class RifEclipseRftAddress;
class RifReaderEclipseRft
{
public:
RifReaderEclipseRft();
RifReaderEclipseRft(const std::string& fileName);
~RifReaderEclipseRft();
bool open(const std::string& fileName);
const std::vector<RifEclipseRftAddress>& eclipseRftAddresses() const;
void values(const RifEclipseRftAddress& rftAddress, std::vector<double>* values) const;
/*const std::vector<std::string>& wellNames() const;
std::vector<time_t> timeSteps();*/
//void values(const std::string& wellName, size_t timeStepIndex, std::vector<double>* values) const;
const std::vector<RifEclipseRftAddress>& eclipseRftAddresses();
void values(const RifEclipseRftAddress& rftAddress, std::vector<double>* values);
private:
int indexFromAddress(const RifEclipseRftAddress& rftAddress) const;
void open();
int indexFromAddress(const RifEclipseRftAddress& rftAddress) const;
private:
// Taken from ecl_rft_file.h and ecl_rft_node.h
typedef struct ecl_rft_file_struct ecl_rft_file_type;
typedef struct ecl_rft_node_struct ecl_rft_node_type;
std::string m_fileName;
ecl_rft_file_type* m_ecl_rft_file;
std::vector<RifEclipseRftAddress> m_eclipseRftAddresses;
std::map<RifEclipseRftAddress, int> m_rftAddressToLibeclNodeIdx;

View File

@ -12,9 +12,8 @@
TEST(DISABLED_RifReaderEclipseRftTest, TestRifEclipseRftAddress)
{
std::string filename = "C:\\Users\\Rebecca Cox\\Dropbox\\norne\\norne\\NORNE_ATW2013.RFT";
RifReaderEclipseRft reader;
bool ok = reader.open(filename);
ASSERT_TRUE(ok);
RifReaderEclipseRft reader(filename);
std::vector<RifEclipseRftAddress> addresses = reader.eclipseRftAddresses();