mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#4763 Ensemble Parameters : Add realization number
This commit is contained in:
@@ -276,3 +276,32 @@ QString RifCaseRealizationParametersFileLocator::locate( const QString& modelPat
|
|||||||
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
int RifCaseRealizationParametersFileLocator::realizationNumber( const QString& modelPath )
|
||||||
|
{
|
||||||
|
QDir dir( modelPath );
|
||||||
|
QString absolutePath = dir.absolutePath();
|
||||||
|
|
||||||
|
int resultIndex = -1;
|
||||||
|
|
||||||
|
// Use parenthesis to indicate capture of sub string
|
||||||
|
QString pattern = "(realization-\\d+)";
|
||||||
|
|
||||||
|
QRegExp regexp( pattern, Qt::CaseInsensitive );
|
||||||
|
if ( regexp.indexIn( absolutePath ) )
|
||||||
|
{
|
||||||
|
QString tempText = regexp.cap( 1 );
|
||||||
|
|
||||||
|
QRegExp rx( "(\\d+)" ); // Find number
|
||||||
|
int digitPos = rx.indexIn( tempText );
|
||||||
|
if ( digitPos > -1 )
|
||||||
|
{
|
||||||
|
resultIndex = rx.cap( 0 ).toInt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return resultIndex;
|
||||||
|
}
|
||||||
|
|||||||
@@ -95,4 +95,5 @@ class RifCaseRealizationParametersFileLocator
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static QString locate( const QString& modelPath );
|
static QString locate( const QString& modelPath );
|
||||||
|
static int realizationNumber( const QString& modelPath );
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ CAF_PDM_SOURCE_INIT( RimSummaryCaseMainCollection, "SummaryCaseCollection" );
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void addCaseRealizationParametersIfFound( RimSummaryCase& sumCase, const QString modelFolderOrFile )
|
void addCaseRealizationParametersIfFound( RimSummaryCase& sumCase, const QString modelFolderOrFile )
|
||||||
{
|
{
|
||||||
|
std::shared_ptr<RigCaseRealizationParameters> parameters;
|
||||||
QString parametersFile = RifCaseRealizationParametersFileLocator::locate( modelFolderOrFile );
|
QString parametersFile = RifCaseRealizationParametersFileLocator::locate( modelFolderOrFile );
|
||||||
if ( !parametersFile.isEmpty() )
|
if ( !parametersFile.isEmpty() )
|
||||||
{
|
{
|
||||||
@@ -51,13 +52,23 @@ void addCaseRealizationParametersIfFound( RimSummaryCase& sumCase, const QString
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
reader->parse();
|
reader->parse();
|
||||||
sumCase.setCaseRealizationParameters( reader->parameters() );
|
parameters = reader->parameters();
|
||||||
}
|
}
|
||||||
catch ( ... )
|
catch ( ... )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
parameters = std::shared_ptr<RigCaseRealizationParameters>( new RigCaseRealizationParameters() );
|
||||||
|
}
|
||||||
|
|
||||||
|
int realizationNumber = RifCaseRealizationParametersFileLocator::realizationNumber( modelFolderOrFile );
|
||||||
|
parameters->setRealizationNumber( realizationNumber );
|
||||||
|
parameters->addParameter( "REALIZATION_NUM", realizationNumber );
|
||||||
|
|
||||||
|
sumCase.setCaseRealizationParameters( parameters );
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -168,6 +168,22 @@ size_t RigCaseRealizationParameters::parametersHash()
|
|||||||
return m_parametersHash;
|
return m_parametersHash;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
int RigCaseRealizationParameters::realizationNumber() const
|
||||||
|
{
|
||||||
|
return m_realizationNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RigCaseRealizationParameters::setRealizationNumber( int realization )
|
||||||
|
{
|
||||||
|
m_realizationNumber = realization;
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ public:
|
|||||||
|
|
||||||
RigCaseRealizationParameters()
|
RigCaseRealizationParameters()
|
||||||
: m_parametersHash( 0 )
|
: m_parametersHash( 0 )
|
||||||
|
, m_realizationNumber( -1 )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,10 +80,14 @@ public:
|
|||||||
size_t parameterHash( const QString& name ) const;
|
size_t parameterHash( const QString& name ) const;
|
||||||
size_t parametersHash();
|
size_t parametersHash();
|
||||||
|
|
||||||
|
int realizationNumber() const;
|
||||||
|
void setRealizationNumber( int realization );
|
||||||
|
|
||||||
void clearParametersHash();
|
void clearParametersHash();
|
||||||
void calculateParametersHash( const std::set<QString>& paramNames = std::set<QString>() );
|
void calculateParametersHash( const std::set<QString>& paramNames = std::set<QString>() );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::map<QString, Value> m_parameters;
|
std::map<QString, Value> m_parameters;
|
||||||
size_t m_parametersHash;
|
size_t m_parametersHash;
|
||||||
|
int m_realizationNumber;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -62,3 +62,16 @@ TEST( RifCaseRealizationParametersReaderTest, SuccessfulParsing )
|
|||||||
EXPECT_TRUE( false );
|
EXPECT_TRUE( false );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
TEST( RifCaseRealizationParametersReaderTest, FindRealizationNumber )
|
||||||
|
{
|
||||||
|
QString filePath = "d:/gitroot-ceesol/ResInsight-regression-test/ModelData/ensemble_reek_with_params/realization-"
|
||||||
|
"7/iter-0/eclipse/model/3_R001_REEK-7.SMSPEC";
|
||||||
|
|
||||||
|
int realisationNumber = RifCaseRealizationParametersFileLocator::realizationNumber( filePath );
|
||||||
|
|
||||||
|
EXPECT_EQ( 7, realisationNumber );
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user