mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Fixed issue #6034 - Improve INP import : Add support for columns spanning more than one line.
This commit is contained in:
parent
523cdc2b7d
commit
3a5ef7fb86
1
.gitignore
vendored
1
.gitignore
vendored
@ -60,6 +60,7 @@ ipch/
|
||||
Ankh.NoLoad
|
||||
.vs
|
||||
out
|
||||
build
|
||||
CMakeSettings.json
|
||||
enc_temp_folder
|
||||
|
||||
|
@ -66,17 +66,20 @@ RifElementPropertyMetadata RifElementPropertyTableReader::readMetadata( const QS
|
||||
metadataBlockFound = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( !metadataBlockFound ) continue;
|
||||
|
||||
QStringList cols = RifFileParseTools::splitLineAndTrim( line, "," );
|
||||
|
||||
else if ( line.toUpper().startsWith( "*DISTRIBUTION" ) )
|
||||
{
|
||||
metadata.fileName = fileName;
|
||||
break;
|
||||
}
|
||||
|
||||
if ( !metadataBlockFound || line.startsWith( "*" ) ) continue;
|
||||
|
||||
QStringList cols = RifFileParseTools::splitLineAndTrim( line, ",", true );
|
||||
|
||||
for ( QString s : cols )
|
||||
{
|
||||
metadata.dataColumns.push_back( s );
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
closeFile( file );
|
||||
@ -110,6 +113,7 @@ void RifElementPropertyTableReader::readData( const RifElementPropertyMetadata*
|
||||
QTextStream stream( file );
|
||||
bool dataBlockFound = false;
|
||||
int lineNo = 0;
|
||||
QStringList collectedCols;
|
||||
|
||||
// Init data vectors
|
||||
table->elementIds.clear();
|
||||
@ -118,22 +122,39 @@ void RifElementPropertyTableReader::readData( const RifElementPropertyMetadata*
|
||||
while ( !stream.atEnd() )
|
||||
{
|
||||
QString line = stream.readLine();
|
||||
QStringList cols = RifFileParseTools::splitLineAndTrim( line, "," );
|
||||
if ( !line.startsWith( "*" ) )
|
||||
{
|
||||
if ( collectedCols.size() > 0 && collectedCols.size() != 8 )
|
||||
{
|
||||
collectedCols.clear();
|
||||
}
|
||||
|
||||
collectedCols << RifFileParseTools::splitLineAndTrim( line, ",", true );
|
||||
}
|
||||
else
|
||||
{
|
||||
collectedCols.clear();
|
||||
}
|
||||
lineNo++;
|
||||
|
||||
if ( !dataBlockFound )
|
||||
{
|
||||
if ( !line.startsWith( "*" ) && !line.startsWith( "," ) && cols.size() == expectedColumnCount )
|
||||
if ( !line.startsWith( "*" ) && !line.startsWith( "," ) && collectedCols.size() == expectedColumnCount )
|
||||
{
|
||||
dataBlockFound = true;
|
||||
else
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( cols.size() != expectedColumnCount )
|
||||
else if ( collectedCols.size() > expectedColumnCount )
|
||||
{
|
||||
throw FileParseException(
|
||||
QString( "Number of columns mismatch at %1:%2" ).arg( metadata->fileName ).arg( lineNo ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
QStringList cols = collectedCols;
|
||||
|
||||
for ( int c = 0; c < expectedColumnCount; c++ )
|
||||
{
|
||||
@ -163,6 +184,8 @@ void RifElementPropertyTableReader::readData( const RifElementPropertyMetadata*
|
||||
table->data[c - 1].push_back( value );
|
||||
}
|
||||
}
|
||||
collectedCols.clear();
|
||||
dataBlockFound = false;
|
||||
}
|
||||
|
||||
table->hasData = true;
|
||||
|
@ -53,3 +53,41 @@ TEST( RicElementPropertyTableReaderTest, ParseFailed )
|
||||
EXPECT_TRUE( e.message.startsWith( "Number of columns mismatch" ) );
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
TEST( RicElementPropertyTableReaderTest, MoreThanEightColumns )
|
||||
{
|
||||
RifElementPropertyMetadata metadata = RifElementPropertyTableReader::readMetadata(
|
||||
ELEM_PROP_TEST_DATA_DIRECTORY + "ELASTIC_TABLE_morethan8columns.inp" );
|
||||
|
||||
RifElementPropertyTable table;
|
||||
RifElementPropertyTableReader::readData( &metadata, &table );
|
||||
|
||||
EXPECT_TRUE( table.hasData );
|
||||
|
||||
EXPECT_EQ( 9u, metadata.dataColumns.size() );
|
||||
EXPECT_STREQ( "MODULUS", metadata.dataColumns[0].toStdString().c_str() );
|
||||
EXPECT_STREQ( "MODULUS", metadata.dataColumns[1].toStdString().c_str() );
|
||||
EXPECT_STREQ( "MODULUS", metadata.dataColumns[2].toStdString().c_str() );
|
||||
EXPECT_STREQ( "RATIO", metadata.dataColumns[3].toStdString().c_str() );
|
||||
EXPECT_STREQ( "RATIO", metadata.dataColumns[4].toStdString().c_str() );
|
||||
EXPECT_STREQ( "RATIO", metadata.dataColumns[5].toStdString().c_str() );
|
||||
EXPECT_STREQ( "MODULUS", metadata.dataColumns[6].toStdString().c_str() );
|
||||
EXPECT_STREQ( "MODULUS", metadata.dataColumns[7].toStdString().c_str() );
|
||||
EXPECT_STREQ( "MODULUS", metadata.dataColumns[8].toStdString().c_str() );
|
||||
|
||||
|
||||
EXPECT_EQ( 9u, table.data.size() );
|
||||
EXPECT_EQ( 8u, table.elementIds.size() );
|
||||
EXPECT_EQ( 8u, table.data[0].size() );
|
||||
EXPECT_EQ( 8u, table.data[1].size() );
|
||||
EXPECT_EQ( 8u, table.data[2].size() );
|
||||
EXPECT_EQ( 8u, table.data[3].size() );
|
||||
EXPECT_EQ( 8u, table.data[4].size() );
|
||||
EXPECT_EQ( 8u, table.data[5].size() );
|
||||
EXPECT_EQ( 8u, table.data[6].size() );
|
||||
EXPECT_EQ( 8u, table.data[7].size() );
|
||||
EXPECT_EQ( 8u, table.data[8].size() );
|
||||
}
|
||||
|
@ -0,0 +1,24 @@
|
||||
** ELASTIC SETTING FOR EACH ELEMENT
|
||||
*Distribution Table, name=RSV_Res-1_Elastic_Table
|
||||
MODULUS, MODULUS, MODULUS, RATIO, RATIO, RATIO, MODULUS,
|
||||
MODULUS, MODULUS
|
||||
*Distribution, name=RSV_Res-1_ELASTICS, location=ELEMENT, Table=RSV_Res-1_Elastic_Table
|
||||
** Description: Element-by-Element Elastic properties
|
||||
, 5000000000.0, 5000000000.0, 5000000000.0, 0.20, 0.20, 0.20, 2083333333.3,
|
||||
2083333333.3, 2083333333.3,
|
||||
Res-1.9764, 4998669605.36, 4998515013.81, 4985819146.89, 0.20, 0.20, 0.20, 2082985108.55
|
||||
2083070114.11, 2083195609.10
|
||||
Res-1.9763, 4998378764.10, 4996164940.36, 4967298321.58, 0.20, 0.20, 0.20, 2081274342.77
|
||||
2083260687.92, 2083208458.19
|
||||
Res-1.9762, 4998328556.97, 4995561505.50, 4964174759.06, 0.20, 0.20, 0.20, 2080763818.91
|
||||
2083292591.66, 2083261000.75
|
||||
Res-1.9761, 4998322867.69, 4994775664.48, 4958309492.44, 0.20, 0.20, 0.20, 2079995008.83
|
||||
2083319853.08, 2083286460.02
|
||||
Res-1.9760, 4998346381.04, 4994364077.05, 4955669201.25, 0.20, 0.20, 0.20, 2079617885.94
|
||||
2083326454.00, 2083303403.23
|
||||
Res-1.9759, 4998383500.18, 4994047179.49, 4953310980.82, 0.20, 0.20, 0.20, 2079279656.11
|
||||
2083330439.00, 2083313410.86
|
||||
Res-1.9758, 4998414899.36, 4993818845.60, 4951718769.13, 0.20, 0.20, 0.20, 2079052099.57
|
||||
2083331777.84, 2083319849.17
|
||||
Res-1.9757, 4998444377.89, 4993643343.12, 4950414224.86, 0.20, 0.20, 0.20, 2078864720.70
|
||||
2083332526.54, 2083323962.41
|
Loading…
Reference in New Issue
Block a user