mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-30 17:10:19 -05:00
Adjust ordering of Flow keywords
This commit is contained in:
1 parent
7fa10b3e59
commit
1abff4c0dc
2 files changed
+77
-18
No files matched your search
@@ -227,24 +227,10 @@ std::expected<QString, QString> RicScheduleDataGenerator::generateDateSection( c
|
||||
bool alignColumns )
|
||||
{
|
||||
// Keyword priority order for output
|
||||
static const std::vector<QString> keywordOrder = { "END",
|
||||
"WELSPECS",
|
||||
"COMPORD",
|
||||
"GRUPTREE",
|
||||
"COMPDAT",
|
||||
"COMPLUMP",
|
||||
"WELSEGS",
|
||||
"COMPSEGS",
|
||||
"WCONHIST",
|
||||
"WCONINJH",
|
||||
"WCONPROD",
|
||||
"WCONINJE",
|
||||
"WRFTPLT",
|
||||
"TUNING",
|
||||
"RPTSCHED",
|
||||
"RPTRST",
|
||||
"WSEGVALV",
|
||||
"WSEGAICD" };
|
||||
static const std::vector<QString> keywordOrder = {
|
||||
"END", "WELSPECS", "COMPORD", "GRUPTREE", "COMPDAT", "COMPLUMP", "WELSEGS", "WSEGVALV", "WSEGAICD", "COMPSEGS", "WCONHIST",
|
||||
"WCONINJH", "WCONPROD", "WCONINJE", "WRFTPLT", "GCONPROD", "GCONINJE", "GEFAC", "TUNING", "RPTSCHED", "RPTRST",
|
||||
};
|
||||
|
||||
QString result;
|
||||
|
||||
|
||||
@@ -117,6 +117,79 @@ TEST_F( RicExportScheduleFeatureTest, ExportWritesScheduleForTimelineEvents )
|
||||
EXPECT_TRUE( content.contains( "--DAY" ) );
|
||||
}
|
||||
|
||||
TEST_F( RicExportScheduleFeatureTest, ExportKeepsKeywordPriorityOrderRegardlessOfInsertionOrder )
|
||||
{
|
||||
FeatureTestModel model = RiaFeatureTestModelBuilder::combinedModel();
|
||||
ASSERT_TRUE( model.eclipseCase != nullptr );
|
||||
|
||||
RimOilField* oilField = RimProject::current()->activeOilField();
|
||||
ASSERT_TRUE( oilField != nullptr && oilField->wellPathCollection() != nullptr );
|
||||
RimWellEventTimeline* timeline = oilField->wellPathCollection()->eventTimeline();
|
||||
ASSERT_TRUE( timeline != nullptr );
|
||||
|
||||
// Added out of priority order on purpose: the exporter must still emit them sorted by the
|
||||
// keyword priority order, with the group keywords (GCONPROD, GCONINJE, GEFAC) placed between
|
||||
// WRFTPLT and TUNING, and the MSW keywords (WELSEGS, WSEGVALV, WSEGAICD, COMPSEGS) kept in that
|
||||
// relative order. The MSW/group keywords use schedule-level keyword events with dummy data (not
|
||||
// real well completions), so only the keyword priority order is exercised here.
|
||||
const QDateTime date( QDate( 2024, 1, 1 ), QTime( 0, 0, 0 ) );
|
||||
timeline->addKeywordEvent( date, "RPTRST" )->addIntItem( "BASIC", 2 );
|
||||
timeline->addKeywordEvent( date, "TUNING" );
|
||||
timeline->addKeywordEvent( date, "GEFAC" )->addStringItem( "GROUP", "FIELD" );
|
||||
timeline->addKeywordEvent( date, "GCONINJE" )->addStringItem( "GROUP", "FIELD" );
|
||||
timeline->addKeywordEvent( date, "GCONPROD" )->addStringItem( "GROUP", "FIELD" );
|
||||
timeline->addKeywordEvent( date, "WRFTPLT" )->addStringItem( "WELL", "W1" );
|
||||
timeline->addKeywordEvent( date, "COMPSEGS" )->addStringItem( "WELL", "W1" );
|
||||
timeline->addKeywordEvent( date, "WSEGAICD" )->addStringItem( "WELL", "W1" );
|
||||
timeline->addKeywordEvent( date, "WSEGVALV" )->addStringItem( "WELL", "W1" );
|
||||
timeline->addKeywordEvent( date, "WELSEGS" )->addStringItem( "WELL", "W1" );
|
||||
|
||||
caf::SelectionManager::instance()->setSelectedItem( timeline );
|
||||
|
||||
QTemporaryDir temporaryDir;
|
||||
ASSERT_TRUE( temporaryDir.isValid() );
|
||||
const QString fileName = temporaryDir.filePath( "schedule_order.SCH" );
|
||||
|
||||
auto exportedFile = RicExportScheduleFeature::exportScheduleToFile( *timeline, *model.eclipseCase, fileName );
|
||||
ASSERT_TRUE( exportedFile.has_value() ) << exportedFile.error().toStdString();
|
||||
|
||||
QFile file( fileName );
|
||||
ASSERT_TRUE( file.open( QIODevice::ReadOnly | QIODevice::Text ) );
|
||||
const QString content = QTextStream( &file ).readAll();
|
||||
|
||||
const int wrftpltPos = content.indexOf( "WRFTPLT" );
|
||||
const int gconprodPos = content.indexOf( "GCONPROD" );
|
||||
const int gconinjePos = content.indexOf( "GCONINJE" );
|
||||
const int gefacPos = content.indexOf( "GEFAC" );
|
||||
const int tuningPos = content.indexOf( "TUNING" );
|
||||
const int rptrstPos = content.indexOf( "RPTRST" );
|
||||
const int welsegsPos = content.indexOf( "WELSEGS" );
|
||||
const int wsegvalvPos = content.indexOf( "WSEGVALV" );
|
||||
const int wsegaicdPos = content.indexOf( "WSEGAICD" );
|
||||
const int compsegsPos = content.indexOf( "COMPSEGS" );
|
||||
|
||||
ASSERT_NE( wrftpltPos, -1 );
|
||||
ASSERT_NE( gconprodPos, -1 );
|
||||
ASSERT_NE( gconinjePos, -1 );
|
||||
ASSERT_NE( gefacPos, -1 );
|
||||
ASSERT_NE( tuningPos, -1 );
|
||||
ASSERT_NE( rptrstPos, -1 );
|
||||
ASSERT_NE( welsegsPos, -1 );
|
||||
ASSERT_NE( wsegvalvPos, -1 );
|
||||
ASSERT_NE( wsegaicdPos, -1 );
|
||||
ASSERT_NE( compsegsPos, -1 );
|
||||
|
||||
EXPECT_LT( wrftpltPos, gconprodPos );
|
||||
EXPECT_LT( gconprodPos, gconinjePos );
|
||||
EXPECT_LT( gconinjePos, gefacPos );
|
||||
EXPECT_LT( gefacPos, tuningPos );
|
||||
EXPECT_LT( tuningPos, rptrstPos );
|
||||
|
||||
EXPECT_LT( welsegsPos, wsegvalvPos );
|
||||
EXPECT_LT( wsegvalvPos, wsegaicdPos );
|
||||
EXPECT_LT( wsegaicdPos, compsegsPos );
|
||||
}
|
||||
|
||||
TEST_F( RicExportScheduleFeatureTest, ExportOfEmptyTimelineFails )
|
||||
{
|
||||
FeatureTestModel model = RiaFeatureTestModelBuilder::combinedModel();
|
||||
|
||||
Reference in new issue
Block a user