mirror of
https://github.com/OPM/ResInsight.git
synced 2025-01-23 23:13:39 -06:00
#9366 RFT: Show all results with supported item count
This commit is contained in:
parent
c8d6e29447
commit
7c2941aedd
@ -39,6 +39,8 @@
|
|||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RifReaderOpmRft::RifReaderOpmRft( const QString& fileName, const QString& dataDeckFileName )
|
RifReaderOpmRft::RifReaderOpmRft( const QString& fileName, const QString& dataDeckFileName )
|
||||||
|
: m_segmentResultItemCount( 0 )
|
||||||
|
, m_connectionResultItemCount( 0 )
|
||||||
{
|
{
|
||||||
openFiles( fileName, dataDeckFileName );
|
openFiles( fileName, dataDeckFileName );
|
||||||
}
|
}
|
||||||
@ -47,6 +49,8 @@ RifReaderOpmRft::RifReaderOpmRft( const QString& fileName, const QString& dataDe
|
|||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RifReaderOpmRft::RifReaderOpmRft( const QString& fileName )
|
RifReaderOpmRft::RifReaderOpmRft( const QString& fileName )
|
||||||
|
: m_segmentResultItemCount( 0 )
|
||||||
|
, m_connectionResultItemCount( 0 )
|
||||||
{
|
{
|
||||||
openFiles( fileName, "" );
|
openFiles( fileName, "" );
|
||||||
}
|
}
|
||||||
@ -116,7 +120,7 @@ void RifReaderOpmRft::values( const RifEclipseRftAddress& rftAddress, std::vecto
|
|||||||
auto key = std::make_pair( wellName, RftDate{ y, m, d } );
|
auto key = std::make_pair( wellName, RftDate{ y, m, d } );
|
||||||
auto segment = m_rftWellDateSegments[key];
|
auto segment = m_rftWellDateSegments[key];
|
||||||
|
|
||||||
if ( resultName.find( "CON" ) == 0 )
|
if ( data.size() == m_connectionResultItemCount )
|
||||||
{
|
{
|
||||||
// Connection results with size equal to length of result CONSEGNO. CONSEGNO defines the segment
|
// Connection results with size equal to length of result CONSEGNO. CONSEGNO defines the segment
|
||||||
// numbers the connection is connected to.
|
// numbers the connection is connected to.
|
||||||
@ -505,10 +509,24 @@ void RifReaderOpmRft::buildSegmentData()
|
|||||||
segment.setSegmentData( segmentsForWellDate );
|
segment.setSegmentData( segmentsForWellDate );
|
||||||
|
|
||||||
auto arraysAtWellDate = m_opm_rft->listOfRftArrays( wellName, date );
|
auto arraysAtWellDate = m_opm_rft->listOfRftArrays( wellName, date );
|
||||||
|
|
||||||
for ( const auto& rftResultMetaData : arraysAtWellDate )
|
for ( const auto& rftResultMetaData : arraysAtWellDate )
|
||||||
{
|
{
|
||||||
auto [name, arrayType, size] = rftResultMetaData;
|
auto [name, arrayType, size] = rftResultMetaData;
|
||||||
if ( ( name.find( "SEG" ) == 0 ) || ( name.find( "CON" ) == 0 ) )
|
if ( ( name.find( "SEG" ) == 0 ) && m_segmentResultItemCount == 0 )
|
||||||
|
{
|
||||||
|
m_segmentResultItemCount = size;
|
||||||
|
}
|
||||||
|
if ( name.find( "CON" ) == 0 && m_connectionResultItemCount == 0 )
|
||||||
|
{
|
||||||
|
m_connectionResultItemCount = size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( const auto& rftResultMetaData : arraysAtWellDate )
|
||||||
|
{
|
||||||
|
auto [name, arrayType, size] = rftResultMetaData;
|
||||||
|
if ( size == m_segmentResultItemCount || size == m_connectionResultItemCount )
|
||||||
{
|
{
|
||||||
segment.addResultNameAndSize( rftResultMetaData );
|
segment.addResultNameAndSize( rftResultMetaData );
|
||||||
}
|
}
|
||||||
@ -580,8 +598,8 @@ void RifReaderOpmRft::buildSegmentBranchTypes( const RftSegmentKey& segmentKey )
|
|||||||
// The device segment is connected to a segment on the tubing branch
|
// The device segment is connected to a segment on the tubing branch
|
||||||
//
|
//
|
||||||
// Annulus branch
|
// Annulus branch
|
||||||
// Layer between device branch and reservoir. The segment connection data is imported from WSEGLINK in the data
|
// Layer between device branch and reservoir. The segment connection data is imported from WSEGLINK in the
|
||||||
// deck
|
// data deck
|
||||||
|
|
||||||
auto wellName = segmentKey.first;
|
auto wellName = segmentKey.first;
|
||||||
auto date = segmentKey.second;
|
auto date = segmentKey.second;
|
||||||
@ -616,8 +634,9 @@ void RifReaderOpmRft::buildSegmentBranchTypes( const RftSegmentKey& segmentKey )
|
|||||||
identifyTubingCandidateBranches( segmentRef, wellName, seglenstValues, seglenenValues );
|
identifyTubingCandidateBranches( segmentRef, wellName, seglenstValues, seglenenValues );
|
||||||
identifyAnnulusBranches( segmentRef, seglenstValues );
|
identifyAnnulusBranches( segmentRef, seglenstValues );
|
||||||
|
|
||||||
// The tubing branches are given increasing branch indices. If a tubing branch is categorized as an annulus
|
// The tubing branches are given increasing branch indices. If a tubing branch is categorized as an
|
||||||
// branch, the index values must be reassigned. Each triplet of tubing/device/annulus has a unique branch index.
|
// annulus branch, the index values must be reassigned. Each triplet of tubing/device/annulus has a
|
||||||
|
// unique branch index.
|
||||||
reassignBranchIndices( segmentRef );
|
reassignBranchIndices( segmentRef );
|
||||||
|
|
||||||
identifyDeviceBranches( segmentRef, seglenstValues );
|
identifyDeviceBranches( segmentRef, seglenstValues );
|
||||||
@ -723,8 +742,8 @@ void RifReaderOpmRft::identifyTubingCandidateBranches( RifRftSegment&
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RifReaderOpmRft::identifyAnnulusBranches( RifRftSegment& segmentRef, const std::vector<double>& seglenstValues )
|
void RifReaderOpmRft::identifyAnnulusBranches( RifRftSegment& segmentRef, const std::vector<double>& seglenstValues )
|
||||||
{
|
{
|
||||||
// If no WESEGLINK data is present, compare the location of the last N segments of two tubing branches. If the
|
// If no WESEGLINK data is present, compare the location of the last N segments of two tubing branches. If
|
||||||
// difference is correct, mark candidate branch as annulus branch instead of tubing.
|
// the difference is correct, mark candidate branch as annulus branch instead of tubing.
|
||||||
|
|
||||||
if ( m_wseglink.empty() )
|
if ( m_wseglink.empty() )
|
||||||
{
|
{
|
||||||
|
@ -99,5 +99,8 @@ private:
|
|||||||
std::map<RftSegmentKey, RifRftSegment> m_rftWellDateSegments;
|
std::map<RftSegmentKey, RifRftSegment> m_rftWellDateSegments;
|
||||||
std::set<QDateTime> m_rftSegmentTimeSteps;
|
std::set<QDateTime> m_rftSegmentTimeSteps;
|
||||||
|
|
||||||
|
size_t m_segmentResultItemCount;
|
||||||
|
size_t m_connectionResultItemCount;
|
||||||
|
|
||||||
std::map<std::string, std::vector<std::pair<int, int>>> m_wseglink;
|
std::map<std::string, std::vector<std::pair<int, int>>> m_wseglink;
|
||||||
};
|
};
|
||||||
|
@ -458,15 +458,15 @@ void RimWellLogRftCurve::assignColorFromResultName( const QString& resultName )
|
|||||||
{
|
{
|
||||||
cvf::Color3f color = cvf::Color3f::BLACK;
|
cvf::Color3f color = cvf::Color3f::BLACK;
|
||||||
|
|
||||||
if ( resultName.startsWith( "SEGO" ) || resultName.startsWith( "CONO" ) )
|
if ( resultName.startsWith( "SEGO" ) || resultName.startsWith( "CONO" ) || resultName.startsWith( "SOIL" ) )
|
||||||
{
|
{
|
||||||
color = RiaColorTables::summaryCurveGreenPaletteColors().cycledColor3f( 0 );
|
color = RiaColorTables::summaryCurveGreenPaletteColors().cycledColor3f( 0 );
|
||||||
}
|
}
|
||||||
else if ( resultName.startsWith( "SEGW" ) || resultName.startsWith( "CONW" ) )
|
else if ( resultName.startsWith( "SEGW" ) || resultName.startsWith( "CONW" ) || resultName.startsWith( "SWAT" ) )
|
||||||
{
|
{
|
||||||
color = RiaColorTables::summaryCurveBluePaletteColors().cycledColor3f( 0 );
|
color = RiaColorTables::summaryCurveBluePaletteColors().cycledColor3f( 0 );
|
||||||
}
|
}
|
||||||
else if ( resultName.startsWith( "SEGG" ) || resultName.startsWith( "CONG" ) )
|
else if ( resultName.startsWith( "SEGG" ) || resultName.startsWith( "CONG" ) || resultName.startsWith( "SGAS" ) )
|
||||||
{
|
{
|
||||||
color = RiaColorTables::summaryCurveRedPaletteColors().cycledColor3f( 0 );
|
color = RiaColorTables::summaryCurveRedPaletteColors().cycledColor3f( 0 );
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user