mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-26 23:20:29 -05:00
#14345 Add Data Filters to grid ensembles
Add a data filter collection to RimReservoirGridEnsemble, so filters can be defined once for the ensemble. The filters are bound to the main case of the ensemble for configuration. Expose filter creation commands from a Data Filters submenu on the ensemble node, and hide the collection node while empty, matching the case-level behavior. Grid calculation integration is intentionally left for the dependent calculation-filtering change.
This commit is contained in:
1 parent
2f2f0fd4e8
commit
ab43e67f0f
4 files changed
+59
-6
No files matched your search
@@ -18,6 +18,8 @@
|
||||
|
||||
#include "RimReservoirGridEnsemble.h"
|
||||
|
||||
#include "cafPdmUiTreeOrdering.h"
|
||||
|
||||
#include "RiaLogging.h"
|
||||
#include "RiaQStringFormatter.h"
|
||||
#include "RiaResultNames.h"
|
||||
@@ -37,6 +39,7 @@
|
||||
#include "Formations/RimFormationNamesCollection.h"
|
||||
#include "Rim2dIntersectionViewCollection.h"
|
||||
#include "RimCaseCollection.h"
|
||||
#include "RimDataFilterCollection.h"
|
||||
#include "RimEclipseCase.h"
|
||||
#include "RimEclipseCellColors.h"
|
||||
#include "RimEclipseResultCase.h"
|
||||
@@ -111,6 +114,9 @@ RimReservoirGridEnsemble::RimReservoirGridEnsemble()
|
||||
CAF_PDM_InitFieldNoDefault( &m_ensembleCase, "EnsembleCase", "Ensemble Grid" );
|
||||
m_ensembleCase = nullptr;
|
||||
|
||||
CAF_PDM_InitScriptableFieldNoDefault( &m_dataFilterCollection, "DataFilterCollection", "Data Filters" );
|
||||
m_dataFilterCollection = new RimDataFilterCollection;
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_viewCollection, "ViewCollection", "Views" );
|
||||
m_viewCollection = new RimEclipseViewCollection;
|
||||
m_viewCollection->setEclipseCaseProvider( [this]() { return this->cases(); } );
|
||||
@@ -195,6 +201,7 @@ void RimReservoirGridEnsemble::addCase( RimEclipseCase* reservoir )
|
||||
clearActiveCellUnions();
|
||||
clearStatisticsResults();
|
||||
updateMainGridAndActiveCellsForStatisticsCases();
|
||||
updateDataFilterCollectionCase();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -214,6 +221,7 @@ void RimReservoirGridEnsemble::removeCase( RimEclipseCase* reservoir )
|
||||
clearActiveCellUnions();
|
||||
clearStatisticsResults();
|
||||
updateMainGridAndActiveCellsForStatisticsCases();
|
||||
updateDataFilterCollectionCase();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -648,6 +656,13 @@ void RimReservoirGridEnsemble::appendMenuItems( caf::CmdFeatureMenuBuilder& menu
|
||||
{
|
||||
menuBuilder << "RicNewStatisticsCaseFeature";
|
||||
}
|
||||
|
||||
// The "Data Filters" collection node is hidden while empty, so expose the filter creation
|
||||
// commands on the ensemble node to allow creating the first filter.
|
||||
menuBuilder << "Separator";
|
||||
menuBuilder.subMenuStart( "Data Filters", QIcon( ":/CellFilter.png" ) );
|
||||
m_dataFilterCollection->appendMenuItems( menuBuilder );
|
||||
menuBuilder.subMenuEnd();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -659,6 +674,24 @@ RimFormationNames* RimReservoirGridEnsemble::activeFormationNames() const
|
||||
return m_activeFormationNames();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimDataFilterCollection* RimReservoirGridEnsemble::dataFilterCollection() const
|
||||
{
|
||||
return m_dataFilterCollection();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
/// The filters in the collection need a source case for configuration (result meta data, grid
|
||||
/// geometry). Use the main case of the ensemble. Evaluation of the filters is done per case, see
|
||||
/// RimCellFilterTools::computeReservoirCellVisibility.
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimReservoirGridEnsemble::updateDataFilterCollectionCase()
|
||||
{
|
||||
if ( m_dataFilterCollection() ) m_dataFilterCollection->setCase( mainCase() );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -725,6 +758,12 @@ void RimReservoirGridEnsemble::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiT
|
||||
|
||||
uiTreeOrdering.add( &m_caseCollection );
|
||||
uiTreeOrdering.add( &m_statisticsCaseCollection );
|
||||
|
||||
if ( m_dataFilterCollection() && m_dataFilterCollection()->shouldBeVisibleInTree() )
|
||||
{
|
||||
uiTreeOrdering.add( m_dataFilterCollection() );
|
||||
}
|
||||
|
||||
uiTreeOrdering.add( &m_viewCollection );
|
||||
|
||||
for ( auto eclipseCase : cases() )
|
||||
@@ -793,6 +832,7 @@ void RimReservoirGridEnsemble::initAfterRead()
|
||||
m_viewCollection->setEclipseCaseProvider( [this]() { return this->cases(); } );
|
||||
}
|
||||
|
||||
updateDataFilterCollectionCase();
|
||||
updateStatisticsVisibility();
|
||||
}
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
class RigActiveCellInfo;
|
||||
class RigMainGrid;
|
||||
class RimCaseCollection;
|
||||
class RimDataFilterCollection;
|
||||
class RimEclipseCase;
|
||||
class RimEclipseStatisticsCase;
|
||||
class RimEclipseView;
|
||||
@@ -98,6 +99,9 @@ public:
|
||||
// Formation names
|
||||
RimFormationNames* activeFormationNames() const override;
|
||||
|
||||
// Data filters
|
||||
RimDataFilterCollection* dataFilterCollection() const;
|
||||
|
||||
// Statistics
|
||||
RimCaseCollection* statisticsCaseCollection() const override;
|
||||
RimEclipseStatisticsCase* createAndAppendStatisticsCase() override;
|
||||
@@ -144,6 +148,7 @@ private:
|
||||
void loadGridsInSharedMode();
|
||||
void loadGridsInIndividualMode();
|
||||
void updateGridModeToolTip();
|
||||
void updateDataFilterCollectionCase();
|
||||
|
||||
private:
|
||||
// File set reference
|
||||
@@ -160,6 +165,9 @@ private:
|
||||
caf::PdmChildField<RimCaseCollection*> m_statisticsCaseCollection;
|
||||
caf::PdmChildField<RimEclipseCase*> m_ensembleCase;
|
||||
|
||||
// Data filters
|
||||
caf::PdmChildField<RimDataFilterCollection*> m_dataFilterCollection;
|
||||
|
||||
// Grid mode
|
||||
caf::PdmField<bool> m_autoDetectGridType;
|
||||
caf::PdmField<caf::AppEnum<GridModeType>> m_gridMode;
|
||||
|
||||
Reference in new issue
Block a user