Read units type from file and set CDARCHY value based on units type

This commit is contained in:
Magne Sjaastad
2014-08-27 14:05:29 +02:00
parent d76dd6a588
commit ffbfb8bdf0
12 changed files with 143 additions and 19 deletions

View File

@@ -329,3 +329,26 @@ void RifEclipseOutputFileTools::readGridDimensions(const QString& gridFileName,
stringlist_free( lgr_names );
}
//--------------------------------------------------------------------------------------------------
/// Returns the following integer values from the first INTEHEAD keyword found
/// 1 : METRIC
/// 2 : FIELD
/// 3 : LAB
/// -1 : No INTEHEAD keyword found
//--------------------------------------------------------------------------------------------------
int RifEclipseOutputFileTools::readUnitsType(ecl_file_type* ecl_file)
{
int unitsType = -1;
if (ecl_file)
{
ecl_kw_type* kwINTEHEAD = ecl_file_iget_named_kw(ecl_file, INTEHEAD_KW, 0);
if (kwINTEHEAD)
{
unitsType = ecl_kw_iget_int(kwINTEHEAD, INTEHEAD_UNIT_INDEX);
}
}
return unitsType;
}

View File

@@ -56,4 +56,6 @@ public:
static QStringList filterFileNamesOfType(const QStringList& fileSet, ecl_file_enum fileType);
static void readGridDimensions(const QString& gridFileName, std::vector< std::vector<int> >& gridDimensions);
static int readUnitsType(ecl_file_type* ecl_file);
};

View File

@@ -54,4 +54,5 @@ public:
virtual bool results(const QString& resultName, size_t timeStep, size_t gridCount, std::vector<double>* values) = 0;
virtual void readWellData(well_info_type * well_info) = 0;
virtual int readUnitsType() = 0;
};

View File

@@ -240,3 +240,19 @@ void RifEclipseRestartFilesetAccess::openTimeStep(size_t timeStep)
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
int RifEclipseRestartFilesetAccess::readUnitsType()
{
ecl_file_type* ecl_file = NULL;
if (m_ecl_files.size() > 0)
{
openTimeStep(0);
ecl_file = m_ecl_files[0];
}
return RifEclipseOutputFileTools::readUnitsType(ecl_file);
}

View File

@@ -47,6 +47,7 @@ public:
bool results(const QString& resultName, size_t timeStep, size_t gridCount, std::vector<double>* values);
virtual void readWellData(well_info_type* well_info);
virtual int readUnitsType();
private:
void openTimeStep(size_t timeStep);

View File

@@ -163,3 +163,13 @@ void RifEclipseUnifiedRestartFileAccess::setRestartFiles(const QStringList& file
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
int RifEclipseUnifiedRestartFileAccess::readUnitsType()
{
openFile();
return RifEclipseOutputFileTools::readUnitsType(m_ecl_file);
}

View File

@@ -48,6 +48,7 @@ public:
bool results(const QString& resultName, size_t timeStep, size_t gridCount, std::vector<double>* values);
virtual void readWellData(well_info_type * well_info);
virtual int readUnitsType();
private:
bool openFile();

View File

@@ -16,28 +16,29 @@
//
/////////////////////////////////////////////////////////////////////////////////
#include "cvfBase.h"
#include "RigMainGrid.h"
#include "RigCaseData.h"
#include "RigCaseCellResultsData.h"
#include "RifReaderEclipseOutput.h"
#include "RigCaseCellResultsData.h"
#include "RigCaseData.h"
#include "RigMainGrid.h"
#include "RifEclipseInputFileTools.h"
#include "RifEclipseOutputFileTools.h"
#include "RifEclipseUnifiedRestartFileAccess.h"
#include "RifEclipseRestartFilesetAccess.h"
#include "RifEclipseUnifiedRestartFileAccess.h"
#include "RifReaderInterface.h"
#include <iostream>
#include "cafProgressInfo.h"
#include "ecl_grid.h"
#include "well_state.h"
#include "ecl_kw_magic.h"
#include "ecl_nnc_export.h"
#include "cafProgressInfo.h"
#include <iostream>
#include <map>
#include "RifEclipseInputFileTools.h"
#include <cmath> // Needed for HUGE_VAL on Linux
//--------------------------------------------------------------------------------------------------
/// ECLIPSE cell numbering layout:
@@ -676,6 +677,22 @@ void RifReaderEclipseOutput::buildMetaData()
fractureModelResults->setTimeStepDates(resIndex, m_timeSteps);
}
}
// Default units type is METRIC
RigCaseData::UnitsType unitsType = RigCaseData::UNITS_METRIC;
{
int unitsTypeValue = m_dynamicResultsAccess->readUnitsType();
if (unitsTypeValue == 2)
{
unitsType = RigCaseData::UNITS_FIELD;
}
else if (unitsTypeValue == 3)
{
unitsType = RigCaseData::UNITS_LAB;
}
}
m_eclipseCase->setUnitsType(unitsType);
}
progInfo.incrementProgress();