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:
parent
66cbc198c4
commit
7c9a09a40c
@ -276,3 +276,32 @@ QString RifCaseRealizationParametersFileLocator::locate( const QString& modelPat
|
||||
|
||||
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:
|
||||
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 )
|
||||
{
|
||||
std::shared_ptr<RigCaseRealizationParameters> parameters;
|
||||
QString parametersFile = RifCaseRealizationParametersFileLocator::locate( modelFolderOrFile );
|
||||
if ( !parametersFile.isEmpty() )
|
||||
{
|
||||
@ -51,13 +52,23 @@ void addCaseRealizationParametersIfFound( RimSummaryCase& sumCase, const QString
|
||||
try
|
||||
{
|
||||
reader->parse();
|
||||
sumCase.setCaseRealizationParameters( reader->parameters() );
|
||||
parameters = reader->parameters();
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
int RigCaseRealizationParameters::realizationNumber() const
|
||||
{
|
||||
return m_realizationNumber;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RigCaseRealizationParameters::setRealizationNumber( int realization )
|
||||
{
|
||||
m_realizationNumber = realization;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -66,6 +66,7 @@ public:
|
||||
|
||||
RigCaseRealizationParameters()
|
||||
: m_parametersHash( 0 )
|
||||
, m_realizationNumber( -1 )
|
||||
{
|
||||
}
|
||||
|
||||
@ -79,10 +80,14 @@ public:
|
||||
size_t parameterHash( const QString& name ) const;
|
||||
size_t parametersHash();
|
||||
|
||||
int realizationNumber() const;
|
||||
void setRealizationNumber( int realization );
|
||||
|
||||
void clearParametersHash();
|
||||
void calculateParametersHash( const std::set<QString>& paramNames = std::set<QString>() );
|
||||
|
||||
private:
|
||||
std::map<QString, Value> m_parameters;
|
||||
size_t m_parametersHash;
|
||||
int m_realizationNumber;
|
||||
};
|
||||
|
@ -62,3 +62,16 @@ TEST( RifCaseRealizationParametersReaderTest, SuccessfulParsing )
|
||||
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 );
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user