mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-14 09:22:13 -05:00
Add topology curves and show in additional track
* Add topology curves and default plot * Improve visual appearance * Update sub module opm-common * Add support for INCLUDE keyword to allow parsing of include files recursively * Search for *.DATA with fallback to *.SCH to automatically import WESEGLINK data * Find annulus branch based on MD diff on segment start * Stop growing device branch if segment starts at a lower MD than previous
This commit is contained in:
1 parent
f155da0179
commit
6d5e303361
21 files changed
+893
-149
No files matched your search
@@ -21,6 +21,8 @@
|
||||
#include <algorithm>
|
||||
#include <unordered_set>
|
||||
|
||||
#include "cvfAssert.h"
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
/// segnxt : Int ID for the next segment
|
||||
/// brno : Branch ID number
|
||||
@@ -162,9 +164,21 @@ int RifRftSegment::oneBasedBranchIndexForBranchId( int branchId ) const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::map<int, int> RifRftSegment::branchIdsAndOneBasedBranchIndices() const
|
||||
std::map<int, int> RifRftSegment::branchIdsAndOneBasedBranchIndices( RiaDefines::RftBranchType branchType ) const
|
||||
{
|
||||
return m_oneBasedBranchIndexMap;
|
||||
std::map<int, int> mapForBranchType;
|
||||
|
||||
// find all branch ids for the given branch type
|
||||
|
||||
for ( const auto& [branchId, branchIndex] : m_oneBasedBranchIndexMap )
|
||||
{
|
||||
if ( branchType == RiaDefines::RftBranchType::RFT_UNKNOWN || this->branchType( branchId ) == branchType )
|
||||
{
|
||||
mapForBranchType[branchId] = branchIndex;
|
||||
}
|
||||
}
|
||||
|
||||
return mapForBranchType;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -183,8 +197,21 @@ const RifRftSegmentData* RifRftSegment::segmentData( int segmentNumber ) const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RifRftSegment::createDeviceBranch( int deviceBranchFirstSegmentNumber, int oneBasedBranchIndex )
|
||||
const RifRftSegmentData* RifRftSegment::segmentDataByIndex( int segmentIndex ) const
|
||||
{
|
||||
CVF_ASSERT( segmentIndex < m_topology.size() );
|
||||
|
||||
return &( m_topology[segmentIndex] );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RifRftSegment::createDeviceBranch( int deviceBranchFirstSegmentNumber,
|
||||
int oneBasedBranchIndex,
|
||||
const std::vector<double>& seglenstValues )
|
||||
{
|
||||
double lastAssignedDeviceBranchDepth = -1.0;
|
||||
for ( auto& segData : m_topology )
|
||||
{
|
||||
if ( segData.segNo() < deviceBranchFirstSegmentNumber ) continue;
|
||||
@@ -192,6 +219,13 @@ void RifRftSegment::createDeviceBranch( int deviceBranchFirstSegmentNumber, int
|
||||
auto branchNumber = segData.segBrno();
|
||||
if ( branchType( branchNumber ) != RiaDefines::RftBranchType::RFT_UNKNOWN ) return;
|
||||
|
||||
auto segmentIndex = segmentIndexFromSegmentNumber( segData.segNo() );
|
||||
if ( segmentIndex < 0 ) continue;
|
||||
|
||||
double candidateSegmentDepth = seglenstValues[segmentIndex];
|
||||
if ( lastAssignedDeviceBranchDepth > -1.0 && lastAssignedDeviceBranchDepth > candidateSegmentDepth ) return;
|
||||
|
||||
lastAssignedDeviceBranchDepth = candidateSegmentDepth;
|
||||
setOneBasedBranchIndex( segData.segBrno(), oneBasedBranchIndex );
|
||||
|
||||
setBranchType( segData.segBrno(), RiaDefines::RftBranchType::RFT_DEVICE );
|
||||
@@ -235,7 +269,7 @@ RiaDefines::RftBranchType RifRftSegment::branchType( int branchId ) const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<size_t> RifRftSegment::indicesForBranchNumber( int branchNumber ) const
|
||||
std::vector<size_t> RifRftSegment::segmentIndicesForBranchNumber( int branchNumber ) const
|
||||
{
|
||||
std::vector<size_t> v;
|
||||
for ( size_t i = 0; i < m_topology.size(); i++ )
|
||||
@@ -253,7 +287,7 @@ std::vector<size_t> RifRftSegment::indicesForBranchNumber( int branchNumber ) co
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<size_t> RifRftSegment::indicesForBranchIndex( int branchIndex, RiaDefines::RftBranchType branchType ) const
|
||||
std::vector<size_t> RifRftSegment::segmentIndicesForBranchIndex( int branchIndex, RiaDefines::RftBranchType branchType ) const
|
||||
{
|
||||
std::vector<size_t> v;
|
||||
for ( size_t i = 0; i < m_topology.size(); i++ )
|
||||
@@ -287,7 +321,7 @@ std::vector<int> RifRftSegment::segmentNumbersForBranchIndex( int
|
||||
{
|
||||
std::vector<int> v;
|
||||
|
||||
auto indices = indicesForBranchIndex( oneBasedBranchIndex, branchType );
|
||||
auto indices = segmentIndicesForBranchIndex( oneBasedBranchIndex, branchType );
|
||||
for ( auto index : indices )
|
||||
{
|
||||
v.push_back( m_topology[index].segNo() );
|
||||
@@ -295,3 +329,33 @@ std::vector<int> RifRftSegment::segmentNumbersForBranchIndex( int
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::set<int> RifRftSegment::uniqueOneBasedBranchIndices( RiaDefines::RftBranchType branchType ) const
|
||||
{
|
||||
std::set<int> indices;
|
||||
|
||||
for ( const auto [branchId, branchIndex] : m_oneBasedBranchIndexMap )
|
||||
{
|
||||
indices.insert( branchIndex );
|
||||
}
|
||||
|
||||
return indices;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
int RifRftSegment::segmentIndexFromSegmentNumber( int segmentNumber ) const
|
||||
{
|
||||
for ( size_t i = 0; i < m_topology.size(); i++ )
|
||||
{
|
||||
auto segment = m_topology[i];
|
||||
|
||||
if ( segment.segNo() == segmentNumber ) return i;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
Reference in new issue
Block a user