Statistics contour map: Add UI for selection result aggregation type.

This commit is contained in:
Kristian Bendiksen 2024-11-13 11:21:35 +01:00
parent 88ded4f7a0
commit 5588f8f0f9
2 changed files with 35 additions and 4 deletions

View File

@ -34,6 +34,7 @@
#include "RimEclipseContourMapProjection.h"
#include "RimEclipseResultDefinition.h"
#include "RimProject.h"
#include "RimTools.h"
#include "cafPdmUiDoubleSliderEditor.h"
#include "cafPdmUiPushButtonEditor.h"
@ -53,6 +54,10 @@ RimStatisticsContourMap::RimStatisticsContourMap()
CAF_PDM_InitField( &m_relativeSampleSpacing, "SampleSpacing", 0.9, "Sample Spacing Factor" );
m_relativeSampleSpacing.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() );
CAF_PDM_InitFieldNoDefault( &m_resultAggregation, "ResultAggregation", "Result Aggregation" );
CAF_PDM_InitField( &m_timeStep, "TimeStep", 0, "Time Step" );
CAF_PDM_InitFieldNoDefault( &m_resultDefinition, "ResultDefinition", "" );
m_resultDefinition.uiCapability()->setUiTreeChildrenHidden( true );
m_resultDefinition = new RimEclipseResultDefinition;
@ -71,6 +76,8 @@ RimStatisticsContourMap::RimStatisticsContourMap()
void RimStatisticsContourMap::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering )
{
uiOrdering.add( &m_relativeSampleSpacing );
uiOrdering.add( &m_resultAggregation );
uiOrdering.add( &m_timeStep );
caf::PdmUiGroup* resultDefinitionGroup = uiOrdering.addNewGroup( "Result Definition" );
m_resultDefinition->uiOrdering( uiConfigName, *resultDefinitionGroup );
@ -98,6 +105,26 @@ void RimStatisticsContourMap::fieldChangedByUi( const caf::PdmFieldHandle* chang
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QList<caf::PdmOptionItemInfo> RimStatisticsContourMap::calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions )
{
QList<caf::PdmOptionItemInfo> options;
if ( fieldNeedingOptions == &m_timeStep )
{
auto ensemble = firstAncestorOrThisOfType<RimEclipseCaseEnsemble>();
if ( ensemble && !ensemble->cases().empty() )
{
RimEclipseCase* firstEclipseCase = ensemble->cases().front();
RimTools::timeStepsForCase( firstEclipseCase, &options );
}
}
return options;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -150,8 +177,7 @@ void RimStatisticsContourMap::computeStatistics()
RimEclipseCase* firstEclipseCase = ensemble->cases().front();
firstEclipseCase->ensureReservoirCaseIsOpen();
int timeStep = 0;
RigContourMapCalculator::ResultAggregationType resultAggregation = RigContourMapCalculator::ResultAggregationType::MEAN;
RigContourMapCalculator::ResultAggregationType resultAggregation = m_resultAggregation();
cvf::BoundingBox gridBoundingBox = firstEclipseCase->activeCellsBoundingBox();
@ -186,7 +212,7 @@ void RimStatisticsContourMap::computeStatistics()
contourMapProjection.generateGridMapping( resultAggregation, {} );
std::vector<double> result =
contourMapProjection.generateResults( m_resultDefinition()->eclipseResultAddress(), resultAggregation, timeStep );
contourMapProjection.generateResults( m_resultDefinition()->eclipseResultAddress(), resultAggregation, m_timeStep() );
results.push_back( result );
}
}

View File

@ -21,6 +21,8 @@
#include "cafPdmField.h"
#include "cafPdmObject.h"
#include "RimContourMapProjection.h"
class RimEclipseCase;
class RimEclipseResultDefinition;
@ -43,11 +45,14 @@ protected:
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override;
void initAfterRead() override;
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override;
private:
void computeStatistics();
caf::PdmField<double> m_relativeSampleSpacing;
caf::PdmField<double> m_relativeSampleSpacing;
caf::PdmField<RimContourMapProjection::ResultAggregation> m_resultAggregation;
caf::PdmField<int> m_timeStep;
caf::PdmChildField<RimEclipseResultDefinition*> m_resultDefinition;
caf::PdmField<bool> m_computeStatisticsButton;