mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-24 22:27:55 -05:00
#14878: Add well-pick zone filtering to RFT cross plot and tornado plot
Let the RFT parameter cross plot reference a RimWellFormationsFile and use its well-pick formations to filter/group data by zone, pushed down to the tornado plot and RFT correlation sub plots.
This commit is contained in:
1 parent
45814555b5
commit
6c42ba5ae0
9 files changed
+535
-101
No files matched your search
@@ -30,6 +30,8 @@
|
||||
#include "RimSummaryEnsemble.h"
|
||||
#include "RimSummaryEnsembleTools.h"
|
||||
|
||||
#include "Formations/RimWellFormationsFile.h"
|
||||
|
||||
#include "RiuContextMenuLauncher.h"
|
||||
#include "RiuGroupedBarChartBuilder.h"
|
||||
#include "RiuPlotItem.h"
|
||||
@@ -60,8 +62,14 @@ RimRftTornadoPlot::RimRftTornadoPlot()
|
||||
CAF_PDM_InitFieldNoDefault( &m_selectedTimeStep, "TimeStep", "Time Step" );
|
||||
CAF_PDM_InitFieldNoDefault( &m_eclipseCase, "EclipseCase", "Eclipse Case (MD fallback)" );
|
||||
CAF_PDM_InitField( &m_useDepthRange, "UseDepthRange", false, "Filter by Depth Range" );
|
||||
CAF_PDM_InitField( &m_filterMode,
|
||||
"FilterMode",
|
||||
RimRftCrossPlotTools::DepthFilterModeEnum( RimRftCrossPlotTools::DepthFilterMode::DEPTH_RANGE ),
|
||||
"Filter By" );
|
||||
CAF_PDM_InitField( &m_depthRangeMin, "DepthRangeMin", 0.0, "Min Depth" );
|
||||
CAF_PDM_InitField( &m_depthRangeMax, "DepthRangeMax", 5000.0, "Max Depth" );
|
||||
CAF_PDM_InitFieldNoDefault( &m_wellFormations, "WellFormations", "Well Formations File" );
|
||||
CAF_PDM_InitFieldNoDefault( &m_selectedZones, "SelectedZones", "Zones" );
|
||||
CAF_PDM_InitField( &m_depthType, "DepthType", caf::AppEnum<RiaDefines::DepthType>( RiaDefines::DepthType::MEASURED_DEPTH ), "Depth Type" );
|
||||
m_depthType.uiCapability()->setUiHidden( true ); // driven by the parent RimRftCorrelationReportPlot
|
||||
|
||||
@@ -155,6 +163,30 @@ void RimRftTornadoPlot::setDepthType( RiaDefines::DepthType depthType )
|
||||
m_depthType = depthType;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimRftTornadoPlot::setFilterMode( RimRftCrossPlotTools::DepthFilterMode filterMode )
|
||||
{
|
||||
m_filterMode = filterMode;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimRftTornadoPlot::setWellFormations( RimWellFormationsFile* wellFormationsFile )
|
||||
{
|
||||
m_wellFormations = wellFormationsFile;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimRftTornadoPlot::setSelectedZones( const std::vector<QString>& zones )
|
||||
{
|
||||
m_selectedZones = zones;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -360,6 +392,21 @@ void RimRftTornadoPlot::onPlotItemSelected( std::shared_ptr<RiuPlotItem> plotIte
|
||||
if ( !paramName.isEmpty() && m_parameterSelectedCallback ) m_parameterSelectedCallback( paramName );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<RimRftCrossPlotTools::DepthInterval> RimRftTornadoPlot::depthIntervals() const
|
||||
{
|
||||
return RimRftCrossPlotTools::buildDepthIntervals( m_useDepthRange(),
|
||||
m_filterMode(),
|
||||
m_depthRangeMin(),
|
||||
m_depthRangeMax(),
|
||||
m_wellFormations(),
|
||||
m_wellName(),
|
||||
m_selectedZones(),
|
||||
m_depthType() );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -376,9 +423,7 @@ std::map<QString, double> RimRftTornadoPlot::addDataToChartBuilder( RiuGroupedBa
|
||||
m_wellName(),
|
||||
m_selectedTimeStep(),
|
||||
m_eclipseCase(),
|
||||
m_useDepthRange(),
|
||||
m_depthRangeMin(),
|
||||
m_depthRangeMax(),
|
||||
depthIntervals(),
|
||||
m_depthType() );
|
||||
|
||||
// For each numeric parameter, compute Pearson correlation against pressurePerCase
|
||||
@@ -421,12 +466,14 @@ void RimRftTornadoPlot::updatePlotTitle()
|
||||
|
||||
if ( m_useAutoPlotTitle() && m_ensemble() )
|
||||
{
|
||||
const QString rangeStr = m_useDepthRange() ? QString( " [%1 %2 - %3 m]" )
|
||||
.arg( RimRftCrossPlotTools::depthTypeAbbreviation( m_depthType() ) )
|
||||
.arg( m_depthRangeMin() )
|
||||
.arg( m_depthRangeMax() )
|
||||
: QString();
|
||||
m_description = QString( "Parameter Correlation vs RFT Pressure%1, %2" ).arg( rangeStr ).arg( m_ensemble->name() );
|
||||
const QString filterDescription = RimRftCrossPlotTools::depthFilterDescription( m_useDepthRange(),
|
||||
m_filterMode(),
|
||||
m_depthType(),
|
||||
m_depthRangeMin(),
|
||||
m_depthRangeMax(),
|
||||
m_selectedZones() );
|
||||
const QString rangeStr = filterDescription.isEmpty() ? QString() : QString( " [%1]" ).arg( filterDescription );
|
||||
m_description = QString( "Parameter Correlation vs RFT Pressure%1, %2" ).arg( rangeStr ).arg( m_ensemble->name() );
|
||||
}
|
||||
|
||||
m_plotWidget->setPlotTitle( m_description() );
|
||||
|
||||
Reference in new issue
Block a user