#7966 Ensemble Well Log: depth equalization and filter by curve set options in well log plot (#8001)

This commit is contained in:
Kristian Bendiksen 2021-09-14 10:44:52 +02:00 committed by GitHub
parent 785ee51099
commit 1df25ed71c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 90 additions and 18 deletions

View File

@ -20,6 +20,9 @@
#include "Rim3dView.h"
#include "RimCase.h"
#include "RimEnsembleCurveSet.h"
#include "RimMainPlotCollection.h"
#include "RimProject.h"
//--------------------------------------------------------------------------------------------------
///
@ -35,3 +38,19 @@ void RiaOptionItemFactory::appendOptionItemFromViewNameAndCaseName( Rim3dView*
optionItems->push_back( caf::PdmOptionItemInfo( displayName, view, false, iconProvider ) );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiaOptionItemFactory::appendOptionItemsForEnsembleCurveSets( QList<caf::PdmOptionItemInfo>* options )
{
options->push_back( caf::PdmOptionItemInfo( "None", nullptr ) );
RimMainPlotCollection* mainPlotColl = RimProject::current()->mainPlotCollection();
std::vector<RimEnsembleCurveSet*> ensembleCurveSets;
mainPlotColl->descendantsOfType( ensembleCurveSets );
for ( auto ensembleCurveSet : ensembleCurveSets )
{
options->push_back( caf::PdmOptionItemInfo( ensembleCurveSet->name(), ensembleCurveSet ) );
}
}

View File

@ -28,4 +28,5 @@ class RiaOptionItemFactory
{
public:
static void appendOptionItemFromViewNameAndCaseName( Rim3dView* view, QList<caf::PdmOptionItemInfo>* optionItems );
static void appendOptionItemsForEnsembleCurveSets( QList<caf::PdmOptionItemInfo>* options );
};

View File

@ -20,6 +20,7 @@
#include "RimDepthTrackPlot.h"
#include "RiaGuiApplication.h"
#include "RiaOptionItemFactory.h"
#include "RiaPreferences.h"
#include "RigWellLogCurveData.h"
@ -28,7 +29,10 @@
#include "RimEclipseCase.h"
#include "RimEclipseCaseCollection.h"
#include "RimEclipseResultCase.h"
#include "RimEnsembleCurveSet.h"
#include "RimEnsembleWellLogCurveSet.h"
#include "RimGeoMechCase.h"
#include "RimMainPlotCollection.h"
#include "RimOilField.h"
#include "RimPlot.h"
#include "RimProject.h"
@ -118,6 +122,9 @@ RimDepthTrackPlot::RimDepthTrackPlot()
m_nameConfig.uiCapability()->setUiTreeChildrenHidden( true );
m_nameConfig = new RimWellLogPlotNameConfig();
CAF_PDM_InitFieldNoDefault( &m_ensembleCurveSet, "FilterEnsembleCurveSet", "Filter by Ensemble Curve Set", "", "", "" );
CAF_PDM_InitFieldNoDefault( &m_depthEqualization, "DepthEqualization", "Depth Equalization", "", "", "" );
CAF_PDM_InitFieldNoDefault( &m_plots, "Tracks", "", "", "", "" );
m_plots.uiCapability()->setUiHidden( true );
auto reorderability = caf::PdmFieldReorderCapability::addToField( &m_plots );
@ -830,6 +837,26 @@ void RimDepthTrackPlot::fieldChangedByUi( const caf::PdmFieldHandle* changedFiel
{
performAutoNameUpdate();
}
else if ( changedField == &m_depthEqualization )
{
std::vector<RimEnsembleWellLogCurveSet*> ensembleWellLogCurveSets;
descendantsOfType( ensembleWellLogCurveSets );
for ( auto ensembleWellLogCurveSet : ensembleWellLogCurveSets )
{
ensembleWellLogCurveSet->setDepthEqualization( m_depthEqualization() );
ensembleWellLogCurveSet->loadDataAndUpdate( true );
}
}
else if ( changedField == &m_ensembleCurveSet )
{
std::vector<RimEnsembleWellLogCurveSet*> ensembleWellLogCurveSets;
descendantsOfType( ensembleWellLogCurveSets );
for ( auto ensembleWellLogCurveSet : ensembleWellLogCurveSets )
{
ensembleWellLogCurveSet->setFilterByEnsembleCurveSet( m_ensembleCurveSet() );
ensembleWellLogCurveSet->loadDataAndUpdate( true );
}
}
updateConnectedEditors();
}
@ -856,6 +883,15 @@ void RimDepthTrackPlot::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderi
plotLayoutGroup->add( &m_axisTitleFontSize );
plotLayoutGroup->add( &m_axisValueFontSize );
std::vector<RimEnsembleWellLogCurveSet*> ensembleWellLogCurveSets;
descendantsOfType( ensembleWellLogCurveSets );
if ( !ensembleWellLogCurveSets.empty() )
{
caf::PdmUiGroup* ensembleWellLogGroup = uiOrdering.addNewGroup( "Ensemble Well Log" );
ensembleWellLogGroup->add( &m_depthEqualization );
ensembleWellLogGroup->add( &m_ensembleCurveSet );
}
uiOrdering.skipRemainingFields( true );
}
@ -893,6 +929,10 @@ QList<caf::PdmOptionItemInfo> RimDepthTrackPlot::calculateValueOptions( const ca
{
options = caf::FontTools::relativeSizeValueOptions( RiaPreferences::current()->defaultPlotFontSize() );
}
else if ( fieldNeedingOptions == &m_ensembleCurveSet )
{
RiaOptionItemFactory::appendOptionItemsForEnsembleCurveSets( &options );
}
( *useOptionsOnly ) = true;
return options;

View File

@ -21,6 +21,7 @@
#include "RiaDefines.h"
#include "RimAbstractPlotCollection.h"
#include "RimEnsembleWellLogStatistics.h"
#include "RimPlotWindow.h"
#include "RimWellLogPlotNameConfig.h"
@ -30,6 +31,7 @@
#include "cafPdmField.h"
#include "cafPdmFieldHandle.h"
#include "cafPdmObject.h"
#include "cafPdmPtrField.h"
#include <QPointer>
@ -38,6 +40,8 @@
class RimWellLogCurveCommonDataSource;
class RiuWellLogPlot;
class RimPlot;
class RimEnsembleCurveSet;
class QKeyEvent;
//==================================================================================================
@ -175,6 +179,9 @@ protected:
caf::PdmChildField<RimWellLogPlotNameConfig*> m_nameConfig;
caf::PdmChildArrayField<RimPlot*> m_plots;
caf::PdmField<caf::AppEnum<RimEnsembleWellLogStatistics::DepthEqualization>> m_depthEqualization;
caf::PdmPtrField<RimEnsembleCurveSet*> m_ensembleCurveSet;
QPointer<RiuWellLogPlot> m_viewer;
std::set<RiaDefines::DepthUnitType> m_availableDepthUnits;
std::set<DepthTypeEnum> m_availableDepthTypes;

View File

@ -19,6 +19,7 @@
#include "RimEnsembleSurface.h"
#include "RiaLogging.h"
#include "RiaOptionItemFactory.h"
#include "RigSurfaceResampler.h"
#include "RigSurfaceStatisticsCalculator.h"
@ -217,15 +218,7 @@ QList<caf::PdmOptionItemInfo> RimEnsembleSurface::calculateValueOptions( const c
if ( fieldNeedingOptions == &m_ensembleCurveSet )
{
options.push_back( caf::PdmOptionItemInfo( "None", nullptr ) );
RimMainPlotCollection* mainPlotColl = RimProject::current()->mainPlotCollection();
std::vector<RimEnsembleCurveSet*> ensembleCurveSets;
mainPlotColl->descendantsOfType( ensembleCurveSets );
for ( auto ensembleCurveSet : ensembleCurveSets )
{
options.push_back( caf::PdmOptionItemInfo( ensembleCurveSet->name(), ensembleCurveSet ) );
}
RiaOptionItemFactory::appendOptionItemsForEnsembleCurveSets( &options );
}
return options;

View File

@ -20,6 +20,7 @@
#include "RiaColorTools.h"
#include "RiaLogging.h"
#include "RiaOptionItemFactory.h"
#include "RimEnsembleCurveFilter.h"
#include "RimEnsembleCurveFilterCollection.h"
@ -571,15 +572,7 @@ QList<caf::PdmOptionItemInfo>
}
else if ( fieldNeedingOptions == &m_ensembleCurveSet )
{
options.push_back( caf::PdmOptionItemInfo( "None", nullptr ) );
RimMainPlotCollection* mainPlotColl = RimProject::current()->mainPlotCollection();
std::vector<RimEnsembleCurveSet*> ensembleCurveSets;
mainPlotColl->descendantsOfType( ensembleCurveSets );
for ( auto ensembleCurveSet : ensembleCurveSets )
{
options.push_back( caf::PdmOptionItemInfo( ensembleCurveSet->name(), ensembleCurveSet ) );
}
RiaOptionItemFactory::appendOptionItemsForEnsembleCurveSets( &options );
}
else if ( fieldNeedingOptions == &m_colorMode )
{
@ -925,6 +918,22 @@ RimEnsembleWellLogStatistics::DepthEqualization RimEnsembleWellLogCurveSet::dept
return m_depthEqualization();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEnsembleWellLogCurveSet::setDepthEqualization( RimEnsembleWellLogStatistics::DepthEqualization depthEqualization )
{
m_depthEqualization = depthEqualization;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEnsembleWellLogCurveSet::setFilterByEnsembleCurveSet( RimEnsembleCurveSet* ensembleCurveSet )
{
m_ensembleCurveSet = ensembleCurveSet;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -114,12 +114,15 @@ public:
const RimEnsembleWellLogStatistics* ensembleWellLogStatistics() const;
RimEnsembleWellLogStatistics::DepthEqualization depthEqualization() const;
void setDepthEqualization( RimEnsembleWellLogStatistics::DepthEqualization depthEqualization );
void updateStatistics();
void setEnsembleWellLogs( RimEnsembleWellLogs* ensembleWellLogs );
void setWellLogChannelName( const QString& wellLogChannelName );
void setFilterByEnsembleCurveSet( RimEnsembleCurveSet* ensembleCurveSet );
private:
void updateEnsembleCurves( const std::vector<RimWellLogFile*>& curves );
void updateStatisticsCurves( const std::vector<RimWellLogFile*>& curves );