Improve filtering by 3D view for Producer/Injector Connectivity Table (#10027)

- Calculate by visible cells: Calculate flow diag by use of visible cells in 3D view (already existing functionality).
- Filter producers: select producer wells based on visibility in 3D view. Synch connected injectors - even if they are not visible in 3D view.
- Filter injectors: select injector wells based on visibility in 3D view. Synch connected producers - even if they are not visible in 3D view.
This commit is contained in:
Jørgen Herje
2023-03-31 10:04:17 +02:00
committed by GitHub
parent 2509977e5a
commit c40b400346
13 changed files with 240 additions and 46 deletions

View File

@@ -73,7 +73,7 @@ std::vector<SimulationWellCellBranch>
if ( timeStepIndex < 0 )
{
wellFramePtr = wellResults->staticWellCells();
wellFramePtr = wellResults->staticWellResultFrame();
}
else
{

View File

@@ -327,7 +327,7 @@ RiaDefines::WellProductionType RigSimWellData::wellProductionType( size_t result
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const RigWellResultFrame* RigSimWellData::staticWellCells() const
const RigWellResultFrame* RigSimWellData::staticWellResultFrame() const
{
// Make sure we have computed the static representation of the well
if ( m_staticWellCells->m_wellResultBranches.size() == 0 )

View File

@@ -50,7 +50,7 @@ public:
bool isOpen( size_t resultTimeStepIndex ) const;
RiaDefines::WellProductionType wellProductionType( size_t resultTimeStepIndex ) const;
const RigWellResultFrame* staticWellCells() const;
const RigWellResultFrame* staticWellResultFrame() const;
void computeMappingFromResultTimeIndicesToWellTimeIndices( const std::vector<QDateTime>& resultTimes );

View File

@@ -214,7 +214,7 @@ void RigSimulationWellCenterLineCalculator::calculateWellPipeCenterlineForTimeSt
if ( timeStepIndex < 0 )
{
wellFramePtr = wellResults->staticWellCells();
wellFramePtr = wellResults->staticWellResultFrame();
}
else
{

View File

@@ -301,3 +301,19 @@ cvf::Vec3d RigWellResultPoint::bottomPosition() const
{
return m_bottomPosition;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RigWellResultPoint> RigWellResultFrame::allResultPoints() const
{
std::vector<RigWellResultPoint> allPoints;
for ( const auto& resultBranch : m_wellResultBranches )
{
for ( const auto& resultPoint : resultBranch.m_branchResultPoints )
{
allPoints.push_back( resultPoint );
}
}
return allPoints;
}

View File

@@ -120,8 +120,9 @@ public:
{
}
const RigWellResultPoint* findResultCellWellHeadIncluded( size_t gridIndex, size_t gridCellIndex ) const;
const RigWellResultPoint* findResultCellWellHeadExcluded( size_t gridIndex, size_t gridCellIndex ) const;
const RigWellResultPoint* findResultCellWellHeadIncluded( size_t gridIndex, size_t gridCellIndex ) const;
const RigWellResultPoint* findResultCellWellHeadExcluded( size_t gridIndex, size_t gridCellIndex ) const;
std::vector<RigWellResultPoint> allResultPoints() const;
RigWellResultPoint wellHeadOrStartCell() const;
RiaDefines::WellProductionType m_productionType;