From 24fcec79ab1e65bd40a93ccd4a1a6c3837e827aa Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Fri, 30 Aug 2024 10:03:03 +0200 Subject: [PATCH] Look for fault definition in Pflotran input files Look for fault definition in Pflotran input files If no *.DATA file is found, look for *.IN file and search for fault definitions. --- .../RifEclipseInputFileTools.cpp | 101 ++++++ .../FileInterface/RifEclipseInputFileTools.h | 2 + .../FileInterface/RifReaderInterface.cpp | 24 +- .../RifEclipseInputFileTools-Test.cpp | 18 ++ .../pflotran/include/Faults_test_KH.grdecl | 287 ++++++++++++++++++ .../pflotran/include/ccs_3df_kh.grdecl | 27 ++ .../pflotran/model/P_FLT_TEST_NO-KH.in | 24 ++ 7 files changed, 480 insertions(+), 3 deletions(-) create mode 100644 ApplicationLibCode/UnitTests/TestData/RifEclipseInputFileTools/pflotran/include/Faults_test_KH.grdecl create mode 100644 ApplicationLibCode/UnitTests/TestData/RifEclipseInputFileTools/pflotran/include/ccs_3df_kh.grdecl create mode 100644 ApplicationLibCode/UnitTests/TestData/RifEclipseInputFileTools/pflotran/model/P_FLT_TEST_NO-KH.in diff --git a/ApplicationLibCode/FileInterface/RifEclipseInputFileTools.cpp b/ApplicationLibCode/FileInterface/RifEclipseInputFileTools.cpp index ee4c7f9c19..28bc9d940a 100644 --- a/ApplicationLibCode/FileInterface/RifEclipseInputFileTools.cpp +++ b/ApplicationLibCode/FileInterface/RifEclipseInputFileTools.cpp @@ -1054,6 +1054,107 @@ QString RifEclipseInputFileTools::faultFaceText( cvf::StructGridInterface::FaceT return ""; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RifEclipseInputFileTools::parsePflotranInputFile( const QString& fileName, cvf::Collection* faults ) +{ + QStringList gridSectionFilenames; + + RiaLogging::info( "Looking for 'Pflotran' fault definitions in " + fileName ); + + { + // Find all referenced grdecl files in a pflotran input file, in the GRID section, example + /* + GRID + TYPE grdecl ../include/ccs_3df_kh.grdecl + TYPE grdecl ../include/ccs_3df_other.grdecl + END + */ + + QFile file( fileName ); + if ( !file.open( QFile::ReadOnly ) ) return; + + bool continueParsing = true; + bool foundGridKeyword = false; + bool foundEndKeyword = false; + do + { + QString line; + line = file.readLine().trimmed(); + + if ( line.startsWith( "GRID" ) ) foundGridKeyword = true; + + if ( foundGridKeyword ) + { + if ( line.startsWith( "TYPE" ) ) + { + auto words = RiaTextStringTools::splitSkipEmptyParts( line, " " ); + if ( words.size() == 3 && words[1].startsWith( "grdecl", Qt::CaseInsensitive ) ) + { + QFileInfo fi( fileName ); + QDir currentFileFolder = fi.absoluteDir(); + + QString absoluteFilePath = currentFileFolder.absoluteFilePath( words.back() ); + gridSectionFilenames.push_back( absoluteFilePath ); + } + } + + if ( line.startsWith( "END" ) ) foundEndKeyword = true; + } + + if ( foundEndKeyword || file.atEnd() ) + { + continueParsing = false; + } + + } while ( continueParsing ); + } + + // Find all grdecl files defined by the external_file keyword + // For all these files, search for the FAULTS keyword and create fault objects + /* + external_file ccs_3df_kh.grdecl + external_file ccs_3df_other.grdecl + */ + + for ( const auto& gridSectionFilename : gridSectionFilenames ) + { + QFile file( gridSectionFilename ); + if ( !file.open( QFile::ReadOnly ) ) continue; + + do + { + QString line; + line = file.readLine().trimmed(); + + if ( line.startsWith( "external_file", Qt::CaseInsensitive ) ) + { + auto words = RiaTextStringTools::splitSkipEmptyParts( line, " " ); + if ( words.size() == 2 ) + { + QFileInfo fi( gridSectionFilename ); + QDir currentFileFolder = fi.absoluteDir(); + + QString absoluteFilePath = currentFileFolder.absoluteFilePath( words.back() ); + QFile grdeclFilename( absoluteFilePath ); + if ( !grdeclFilename.open( QFile::ReadOnly ) ) continue; + + auto currentFaultCount = faults->size(); + + readFaults( grdeclFilename, 0, faults, nullptr ); + + if ( currentFaultCount != faults->size() ) + { + RiaLogging::info( "Imported faults from " + absoluteFilePath ); + } + } + } + + } while ( !file.atEnd() ); + } +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/FileInterface/RifEclipseInputFileTools.h b/ApplicationLibCode/FileInterface/RifEclipseInputFileTools.h index 70db3f726e..ce23b7041d 100644 --- a/ApplicationLibCode/FileInterface/RifEclipseInputFileTools.h +++ b/ApplicationLibCode/FileInterface/RifEclipseInputFileTools.h @@ -126,6 +126,8 @@ public: static bool hasGridData( const QString& fileName ); + static void parsePflotranInputFile( const QString& fileName, cvf::Collection* faults ); + private: static void readFaults( QFile& data, qint64 filePos, cvf::Collection* faults, bool* isEditKeywordDetected ); diff --git a/ApplicationLibCode/FileInterface/RifReaderInterface.cpp b/ApplicationLibCode/FileInterface/RifReaderInterface.cpp index fc6d643bd7..48da9d6007 100644 --- a/ApplicationLibCode/FileInterface/RifReaderInterface.cpp +++ b/ApplicationLibCode/FileInterface/RifReaderInterface.cpp @@ -19,6 +19,7 @@ #include "RifReaderInterface.h" +#include "RiaLogging.h" #include "RiaPreferencesGrid.h" #include "RifEclipseInputFileTools.h" @@ -159,12 +160,16 @@ void RifReaderInterface::importFaults( const QStringList& fileSet, cvf::Collecti } else { - foreach ( QString fname, fileSet ) + bool isDataFileFound = false; + + for ( const auto& filename : fileSet ) { - if ( fname.endsWith( ".DATA" ) ) + if ( filename.endsWith( ".DATA" ) ) { + isDataFileFound = true; + std::vector filenamesWithFaults; - RifEclipseInputFileTools::readFaultsInGridSection( fname, faults, &filenamesWithFaults, faultIncludeFileAbsolutePathPrefix() ); + RifEclipseInputFileTools::readFaultsInGridSection( filename, faults, &filenamesWithFaults, faultIncludeFileAbsolutePathPrefix() ); std::sort( filenamesWithFaults.begin(), filenamesWithFaults.end() ); std::vector::iterator last = std::unique( filenamesWithFaults.begin(), filenamesWithFaults.end() ); @@ -173,5 +178,18 @@ void RifReaderInterface::importFaults( const QStringList& fileSet, cvf::Collecti setFilenamesWithFaults( filenamesWithFaults ); } } + + if ( !isDataFileFound ) + { + RiaLogging::info( "No *.DATA file is found" ); + + for ( const auto& filename : fileSet ) + { + if ( filename.endsWith( ".IN", Qt::CaseInsensitive ) ) + { + RifEclipseInputFileTools::parsePflotranInputFile( filename, faults ); + } + } + } } } diff --git a/ApplicationLibCode/UnitTests/RifEclipseInputFileTools-Test.cpp b/ApplicationLibCode/UnitTests/RifEclipseInputFileTools-Test.cpp index 0204f6a495..4fc7da0395 100644 --- a/ApplicationLibCode/UnitTests/RifEclipseInputFileTools-Test.cpp +++ b/ApplicationLibCode/UnitTests/RifEclipseInputFileTools-Test.cpp @@ -251,6 +251,24 @@ TEST( RifEclipseInputFileToolsTest, FaultData ) } } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +TEST( RifEclipseInputFileToolsTest, FaultDataPflotran ) +{ + static const QString testDataRootFolder = QString( "%1/RifEclipseInputFileTools/pflotran" ).arg( TEST_DATA_DIR ); + + { + QString fileName = testDataRootFolder + "/model/P_FLT_TEST_NO-KH.in"; + + cvf::Collection faults; + + RifEclipseInputFileTools::parsePflotranInputFile( fileName, &faults ); + + EXPECT_EQ( (size_t)4, faults.size() ); + } +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/UnitTests/TestData/RifEclipseInputFileTools/pflotran/include/Faults_test_KH.grdecl b/ApplicationLibCode/UnitTests/TestData/RifEclipseInputFileTools/pflotran/include/Faults_test_KH.grdecl new file mode 100644 index 0000000000..0b5f25153b --- /dev/null +++ b/ApplicationLibCode/UnitTests/TestData/RifEclipseInputFileTools/pflotran/include/Faults_test_KH.grdecl @@ -0,0 +1,287 @@ +NOECHO + + +SPECGRID + 30 30 12 F / + + +FAULTS +-- NAME IX1 IX2 IY1 IY2 IZ1 IZ2 FACE + +'F_TEST1' 8 8 1 1 1 12 J / +'F_TEST1' 8 8 1 1 1 12 I- / +'F_TEST1' 9 9 2 2 1 12 J / +'F_TEST1' 9 9 2 2 1 12 I- / +'F_TEST1' 10 10 3 3 1 12 J / +'F_TEST1' 10 10 3 3 1 12 I- / + +'F_TEST2' 2 2 1 1 1 12 J / +'F_TEST2' 2 2 1 1 1 12 I- / +'F_TEST2' 3 3 2 2 1 12 J / +'F_TEST2' 3 3 2 2 1 12 I- / +'F_TEST2' 4 4 3 3 1 12 J / +'F_TEST2' 4 4 3 3 1 12 I- / + +'F_ORIG1' 1 1 21 21 1 5 I / +'F_ORIG1' 1 1 21 21 8 8 I / +'F_ORIG1' 1 1 21 21 11 12 I / +'F_ORIG1' 1 1 21 21 1 6 J / +'F_ORIG1' 1 1 21 21 8 9 J / +'F_ORIG1' 1 1 21 21 11 12 J / +'F_ORIG1' 2 2 20 20 1 2 I / +'F_ORIG1' 2 2 20 20 5 5 I / +'F_ORIG1' 2 2 20 20 7 12 I / +'F_ORIG1' 2 2 20 20 1 3 J / +'F_ORIG1' 2 2 20 20 5 5 J / +'F_ORIG1' 2 2 20 20 8 8 J / +'F_ORIG1' 2 2 20 20 11 12 J / +'F_ORIG1' 3 3 19 19 1 2 I / +'F_ORIG1' 3 3 19 19 5 7 I / +'F_ORIG1' 3 3 19 19 10 12 I / +'F_ORIG1' 3 3 19 19 1 2 J / +'F_ORIG1' 3 3 19 19 5 8 J / +'F_ORIG1' 3 3 19 19 10 12 J / +'F_ORIG1' 4 4 18 18 1 2 I / +'F_ORIG1' 4 4 18 18 5 5 I / +'F_ORIG1' 4 4 18 18 7 10 I / +'F_ORIG1' 4 4 18 18 12 12 I / +'F_ORIG1' 4 4 18 18 1 2 J / +'F_ORIG1' 4 4 18 18 4 5 J / +'F_ORIG1' 4 4 18 18 7 7 J / +'F_ORIG1' 4 4 18 18 9 10 J / +'F_ORIG1' 4 4 18 18 12 12 J / +'F_ORIG1' 5 5 17 17 2 2 I / +'F_ORIG1' 5 5 17 17 4 4 I / +'F_ORIG1' 5 5 17 17 6 10 I / +'F_ORIG1' 5 5 17 17 12 12 I / +'F_ORIG1' 5 5 17 17 1 2 J / +'F_ORIG1' 5 5 17 17 5 10 J / +'F_ORIG1' 5 5 17 17 12 12 J / +'F_ORIG1' 6 6 16 16 1 10 I / +'F_ORIG1' 6 6 16 16 2 2 J / +'F_ORIG1' 6 6 16 16 4 4 J / +'F_ORIG1' 6 6 16 16 6 10 J / +'F_ORIG1' 7 7 15 15 3 3 I / +'F_ORIG1' 7 7 15 15 6 11 I / +'F_ORIG1' 7 7 15 15 3 4 J / +'F_ORIG1' 7 7 15 15 6 12 J / +'F_ORIG1' 8 8 14 14 1 1 I / +'F_ORIG1' 8 8 14 14 3 9 I / +'F_ORIG1' 8 8 14 14 11 12 I / +'F_ORIG1' 8 8 14 14 1 1 J / +'F_ORIG1' 8 8 14 14 3 3 J / +'F_ORIG1' 8 8 14 14 6 11 J / +'F_ORIG1' 9 9 13 13 1 1 I / +'F_ORIG1' 9 9 13 13 3 12 I / +'F_ORIG1' 9 9 13 13 1 1 J / +'F_ORIG1' 9 9 13 13 3 9 J / +'F_ORIG1' 9 9 13 13 11 12 J / +'F_ORIG1' 10 10 12 12 1 1 I / +'F_ORIG1' 10 10 12 12 4 6 I / +'F_ORIG1' 10 10 12 12 8 8 I / +'F_ORIG1' 10 10 12 12 10 11 I / +'F_ORIG1' 10 10 12 12 1 1 J / +'F_ORIG1' 10 10 12 12 4 8 J / +'F_ORIG1' 10 10 12 12 10 11 J / +'F_ORIG1' 11 11 11 11 2 6 I / +'F_ORIG1' 11 11 11 11 8 8 I / +'F_ORIG1' 11 11 11 11 3 6 J / +'F_ORIG1' 11 11 11 11 8 8 J / +'F_ORIG1' 11 11 11 11 11 11 J / +'F_ORIG1' 12 12 10 10 1 1 I / +'F_ORIG1' 12 12 10 10 3 6 I / +'F_ORIG1' 12 12 10 10 8 11 I / +'F_ORIG1' 12 12 10 10 1 6 J / +'F_ORIG1' 12 12 10 10 8 10 J / +'F_ORIG1' 13 13 9 9 3 3 I / +'F_ORIG1' 13 13 9 9 5 10 I / +'F_ORIG1' 13 13 9 9 12 12 I / +'F_ORIG1' 13 13 9 9 1 1 J / +'F_ORIG1' 13 13 9 9 3 3 J / +'F_ORIG1' 13 13 9 9 5 12 J / +'F_ORIG1' 14 14 8 8 3 3 I / +'F_ORIG1' 14 14 8 8 7 7 I / +'F_ORIG1' 14 14 8 8 9 12 I / +'F_ORIG1' 14 14 8 8 3 3 J / +'F_ORIG1' 14 14 8 8 7 10 J / +'F_ORIG1' 14 14 8 8 12 12 J / +'F_ORIG1' 15 15 7 7 3 4 I / +'F_ORIG1' 15 15 7 7 6 12 I / +'F_ORIG1' 15 15 7 7 2 4 J / +'F_ORIG1' 15 15 7 7 6 7 J / +'F_ORIG1' 15 15 7 7 9 12 J / +'F_ORIG1' 16 16 6 6 1 4 I / +'F_ORIG1' 16 16 6 6 6 7 I / +'F_ORIG1' 16 16 6 6 9 12 I / +'F_ORIG1' 16 16 6 6 1 1 J / +'F_ORIG1' 16 16 6 6 3 4 J / +'F_ORIG1' 16 16 6 6 6 12 J / +'F_ORIG1' 17 17 5 5 1 2 J / +'F_ORIG1' 17 17 5 5 4 4 J / +'F_ORIG1' 17 17 5 5 6 7 J / +'F_ORIG1' 17 17 5 5 9 9 J / +'F_ORIG1' 17 17 5 5 11 12 J / +'F_ORIG1' 18 18 4 4 1 2 I / +'F_ORIG1' 18 18 4 4 4 7 I / +'F_ORIG1' 18 18 4 4 11 11 I / +'F_ORIG1' 18 18 4 4 1 2 J / +'F_ORIG1' 18 18 4 4 4 5 J / +'F_ORIG1' 18 18 4 4 7 8 J / +'F_ORIG1' 18 18 4 4 10 11 J / +'F_ORIG1' 19 19 3 3 3 5 I / +'F_ORIG1' 19 19 3 3 7 9 I / +'F_ORIG1' 19 19 3 3 11 12 I / +'F_ORIG1' 19 19 3 3 2 2 J / +'F_ORIG1' 19 19 3 3 4 7 J / +'F_ORIG1' 19 19 3 3 11 11 J / +'F_ORIG1' 20 20 2 2 2 3 I / +'F_ORIG1' 20 20 2 2 5 10 I / +'F_ORIG1' 20 20 2 2 12 12 I / +'F_ORIG1' 20 20 2 2 3 3 J / +'F_ORIG1' 20 20 2 2 5 5 J / +'F_ORIG1' 20 20 2 2 7 12 J / +'F_ORIG1' 21 21 1 1 1 5 I / +'F_ORIG1' 21 21 1 1 8 11 I / +'F_ORIG1' 21 21 1 1 1 5 J / +'F_ORIG1' 21 21 1 1 7 10 J / +'F_ORIG1' 21 21 1 1 12 12 J / + +'F_ORIG2' 15 15 1 1 1 3 I / +'F_ORIG2' 15 15 1 1 5 6 I / +'F_ORIG2' 15 15 1 1 8 9 I / +'F_ORIG2' 15 15 1 1 11 11 I / +'F_ORIG2' 16 16 1 1 1 3 J / +'F_ORIG2' 16 16 1 1 5 8 J / +'F_ORIG2' 16 16 1 1 10 11 J / +'F_ORIG2' 16 16 2 2 1 3 I / +'F_ORIG2' 16 16 2 2 5 5 I / +'F_ORIG2' 16 16 2 2 7 8 I / +'F_ORIG2' 16 16 2 2 10 12 I / +'F_ORIG2' 16 16 3 3 1 3 I / +'F_ORIG2' 16 16 3 3 6 7 I / +'F_ORIG2' 16 16 3 3 10 10 I / +'F_ORIG2' 16 16 3 3 12 12 I / +'F_ORIG2' 17 17 3 3 2 2 J / +'F_ORIG2' 17 17 3 3 4 4 J / +'F_ORIG2' 17 17 3 3 7 8 J / +'F_ORIG2' 17 17 3 3 10 10 J / +'F_ORIG2' 17 17 3 3 12 12 J / +'F_ORIG2' 17 17 4 4 2 2 I / +'F_ORIG2' 17 17 4 4 4 5 I / +'F_ORIG2' 17 17 4 4 7 8 I / +'F_ORIG2' 17 17 4 4 10 10 I / +'F_ORIG2' 17 17 4 4 12 12 I / +'F_ORIG2' 17 17 5 5 1 2 I / +'F_ORIG2' 17 17 5 5 4 5 I / +'F_ORIG2' 17 17 5 5 7 7 I / +'F_ORIG2' 17 17 5 5 11 11 I / +'F_ORIG2' 18 18 5 5 1 2 J / +'F_ORIG2' 18 18 5 5 5 5 J / +'F_ORIG2' 18 18 5 5 7 8 J / +'F_ORIG2' 18 18 5 5 10 10 J / +'F_ORIG2' 18 18 6 6 1 3 I / +'F_ORIG2' 18 18 6 6 7 10 I / +'F_ORIG2' 18 18 7 7 1 2 I / +'F_ORIG2' 18 18 7 7 4 5 I / +'F_ORIG2' 18 18 7 7 9 12 I / +'F_ORIG2' 19 19 7 7 1 2 J / +'F_ORIG2' 19 19 7 7 4 6 J / +'F_ORIG2' 19 19 7 7 10 12 J / +'F_ORIG2' 19 19 8 8 1 5 I / +'F_ORIG2' 19 19 8 8 8 8 I / +'F_ORIG2' 19 19 8 8 10 11 I / +'F_ORIG2' 19 19 9 9 2 2 I / +'F_ORIG2' 19 19 9 9 4 12 I / +'F_ORIG2' 20 20 9 9 1 2 J / +'F_ORIG2' 20 20 9 9 4 12 J / +'F_ORIG2' 20 20 10 10 1 4 I / +'F_ORIG2' 20 20 10 10 6 9 I / +'F_ORIG2' 20 20 10 10 11 12 I / +'F_ORIG2' 20 20 11 11 1 6 I / +'F_ORIG2' 20 20 11 11 8 8 I / +'F_ORIG2' 20 20 11 11 10 11 I / +'F_ORIG2' 21 21 11 11 1 3 J / +'F_ORIG2' 21 21 11 11 5 6 J / +'F_ORIG2' 21 21 11 11 11 11 J / +'F_ORIG2' 21 21 12 12 1 1 I / +'F_ORIG2' 21 21 12 12 3 3 I / +'F_ORIG2' 21 21 12 12 6 6 I / +'F_ORIG2' 21 21 12 12 11 12 I / +'F_ORIG2' 21 21 13 13 3 3 I / +'F_ORIG2' 21 21 13 13 6 12 I / +'F_ORIG2' 22 22 13 13 3 3 J / +'F_ORIG2' 22 22 13 13 7 7 J / +'F_ORIG2' 22 22 13 13 10 12 J / +'F_ORIG2' 22 22 14 14 2 2 I / +'F_ORIG2' 22 22 14 14 4 4 I / +'F_ORIG2' 22 22 14 14 7 7 I / +'F_ORIG2' 22 22 14 14 10 12 I / +'F_ORIG2' 22 22 15 15 1 3 I / +'F_ORIG2' 22 22 15 15 6 7 I / +'F_ORIG2' 22 22 15 15 9 11 I / +'F_ORIG2' 23 23 15 15 2 3 J / +'F_ORIG2' 23 23 15 15 6 7 J / +'F_ORIG2' 23 23 15 15 9 11 J / +'F_ORIG2' 23 23 16 16 2 7 I / +'F_ORIG2' 23 23 16 16 10 12 I / +'F_ORIG2' 23 23 17 17 1 7 I / +'F_ORIG2' 23 23 17 17 10 12 I / +'F_ORIG2' 24 24 17 17 1 7 J / +'F_ORIG2' 24 24 17 17 10 12 J / +'F_ORIG2' 24 24 18 18 1 2 I / +'F_ORIG2' 24 24 18 18 6 8 I / +'F_ORIG2' 24 24 18 18 10 10 I / +'F_ORIG2' 24 24 18 18 12 12 I / +'F_ORIG2' 24 24 19 19 1 2 I / +'F_ORIG2' 24 24 19 19 5 6 I / +'F_ORIG2' 24 24 19 19 8 8 I / +'F_ORIG2' 24 24 19 19 10 12 I / +'F_ORIG2' 25 25 19 19 1 1 J / +'F_ORIG2' 25 25 19 19 4 6 J / +'F_ORIG2' 25 25 19 19 8 8 J / +'F_ORIG2' 25 25 19 19 10 11 J / +'F_ORIG2' 25 25 20 20 1 1 I / +'F_ORIG2' 25 25 20 20 4 4 I / +'F_ORIG2' 25 25 20 20 6 8 I / +'F_ORIG2' 25 25 20 20 10 11 I / +'F_ORIG2' 25 25 21 21 1 1 I / +'F_ORIG2' 25 25 21 21 6 11 I / +'F_ORIG2' 26 26 21 21 1 1 J / +'F_ORIG2' 26 26 21 21 4 4 J / +'F_ORIG2' 26 26 21 21 6 11 J / +'F_ORIG2' 26 26 22 22 1 1 I / +'F_ORIG2' 26 26 22 22 3 4 I / +'F_ORIG2' 26 26 22 22 6 10 I / +'F_ORIG2' 26 26 23 23 1 8 I / +'F_ORIG2' 26 26 23 23 10 10 I / +'F_ORIG2' 26 26 23 23 12 12 I / +'F_ORIG2' 27 27 23 23 1 10 J / +'F_ORIG2' 27 27 23 23 12 12 J / +'F_ORIG2' 27 27 24 24 1 2 I / +'F_ORIG2' 27 27 24 24 5 9 I / +'F_ORIG2' 27 27 24 24 12 12 I / +'F_ORIG2' 27 27 25 25 3 3 I / +'F_ORIG2' 27 27 25 25 6 6 I / +'F_ORIG2' 27 27 25 25 10 10 I / +'F_ORIG2' 27 27 25 25 12 12 I / +'F_ORIG2' 28 28 25 25 3 3 J / +'F_ORIG2' 28 28 25 25 6 7 J / +'F_ORIG2' 28 28 25 25 9 12 J / +'F_ORIG2' 28 28 26 26 2 2 I / +'F_ORIG2' 28 28 26 26 4 4 I / +'F_ORIG2' 28 28 26 26 6 11 I / +'F_ORIG2' 28 28 27 27 1 1 I / +'F_ORIG2' 28 28 27 27 4 6 I / +'F_ORIG2' 28 28 27 27 9 12 I / +'F_ORIG2' 29 29 27 27 2 2 J / +'F_ORIG2' 29 29 27 27 4 6 J / +'F_ORIG2' 29 29 27 27 9 12 J / +'F_ORIG2' 29 29 28 28 2 5 I / +'F_ORIG2' 29 29 28 28 8 11 I / +'F_ORIG2' 29 29 29 29 1 3 I / +'F_ORIG2' 29 29 29 29 5 5 I / +'F_ORIG2' 29 29 29 29 7 9 I / +'F_ORIG2' 30 30 29 29 2 3 J / +'F_ORIG2' 30 30 29 29 7 10 J / +/ +ECHO diff --git a/ApplicationLibCode/UnitTests/TestData/RifEclipseInputFileTools/pflotran/include/ccs_3df_kh.grdecl b/ApplicationLibCode/UnitTests/TestData/RifEclipseInputFileTools/pflotran/include/ccs_3df_kh.grdecl new file mode 100644 index 0000000000..b4ad7e7bc5 --- /dev/null +++ b/ApplicationLibCode/UnitTests/TestData/RifEclipseInputFileTools/pflotran/include/ccs_3df_kh.grdecl @@ -0,0 +1,27 @@ +DIMENS +30 30 12 / + +external_file ccs_3df_geom_kh.grdecl + +external_file ccs_3df_prop.grdecl + +external_file Faults_test_KH.grdecl + +external_file multflt_test_KH.grdecl + +EQUALS + ACTNUM 0 7 7 15 15 1 1 + ACTNUM 0 30 30 29 29 12 12 +/ + + +EQUALS +FIPNUM 1 1 30 1 30 1 2 / overburden +FIPNUM 2 1 30 1 30 1 6 / +FIPNUM 3 1 30 1 30 1 4 / +/ + +EQUALS +SATNUM 1 / +IMBNUM 2 / +/ diff --git a/ApplicationLibCode/UnitTests/TestData/RifEclipseInputFileTools/pflotran/model/P_FLT_TEST_NO-KH.in b/ApplicationLibCode/UnitTests/TestData/RifEclipseInputFileTools/pflotran/model/P_FLT_TEST_NO-KH.in new file mode 100644 index 0000000000..399110ddfe --- /dev/null +++ b/ApplicationLibCode/UnitTests/TestData/RifEclipseInputFileTools/pflotran/model/P_FLT_TEST_NO-KH.in @@ -0,0 +1,24 @@ + +SIMULATION + SIMULATION_TYPE SUBSURFACE + PROCESS_MODELS + SUBSURFACE_FLOW Flow + MODE GAS_WATER + OPTIONS + RESERVOIR_DEFAULTS + ISOTHERMAL + HYSTERESIS + STRAND + / + / ! end of subsurface_flow + / +END !! end simulation block + +SUBSURFACE + +#=========================== discretization =================================== + +GRID + TYPE grdecl ../include/ccs_3df_kh.grdecl +END +