#5539 Support ensembles in Analysis plots

This commit is contained in:
Jacob Støren
2020-02-26 13:51:57 +01:00
parent d540737a53
commit fd4cbc6c87

View File

@@ -644,7 +644,7 @@ void RimAnalysisPlot::onLoadDataAndUpdate()
///
//--------------------------------------------------------------------------------------------------
QString assignGroupingText( RimAnalysisPlot::SortGroupType sortGroup,
const RimAnalysisPlotDataEntry* dataEntry,
const RiaSummaryCurveDefinition dataEntry,
const QString& timestepString )
{
QString groupingText;
@@ -653,29 +653,29 @@ QString assignGroupingText( RimAnalysisPlot::SortGroupType sortGroup,
{
case RimAnalysisPlot::SUMMARY_ITEM:
{
RifEclipseSummaryAddress addr = dataEntry->summaryAddress();
RifEclipseSummaryAddress addr = dataEntry.summaryAddress();
groupingText = QString::fromStdString( addr.itemUiText() );
}
break;
case RimAnalysisPlot::CASE:
{
if ( dataEntry->summaryCase() )
if ( dataEntry.summaryCase() )
{
groupingText = dataEntry->summaryCase()->displayCaseName();
groupingText = dataEntry.summaryCase()->displayCaseName();
}
}
break;
case RimAnalysisPlot::ENSEMBLE:
{
if ( dataEntry->ensemble() )
if ( dataEntry.ensemble() )
{
groupingText = dataEntry->ensemble()->name();
groupingText = dataEntry.ensemble()->name();
}
}
break;
case RimAnalysisPlot::QUANTITY:
{
RifEclipseSummaryAddress addr = dataEntry->summaryAddress();
RifEclipseSummaryAddress addr = dataEntry.summaryAddress();
groupingText = QString::fromStdString( addr.quantityName() );
}
@@ -708,19 +708,37 @@ void RimAnalysisPlot::addDataToChartBuilder( RiuGroupedBarChartBuilder& chartBui
for ( const RimAnalysisPlotDataEntry* dataEntry : m_data )
{
if ( !dataEntry->summaryCase() ) continue; // Todo, ensembles
RiaSummaryCurveDefinition orgBarDataEntry = dataEntry->curveDefinition();
RifSummaryReaderInterface* reader = dataEntry->summaryCase()->summaryReader();
std::vector<RiaSummaryCurveDefinition> barDataDefinitions;
if ( orgBarDataEntry.isEnsembleCurve() )
{
std::vector<RimSummaryCase*> sumCases = orgBarDataEntry.ensemble()->allSummaryCases();
for ( auto sumCase : sumCases )
{
barDataDefinitions.push_back(
RiaSummaryCurveDefinition( sumCase, orgBarDataEntry.summaryAddress(), orgBarDataEntry.ensemble() ) );
}
}
else
{
barDataDefinitions.push_back( orgBarDataEntry );
}
for ( const RiaSummaryCurveDefinition& curveDef : barDataDefinitions )
{
RifSummaryReaderInterface* reader = curveDef.summaryCase()->summaryReader();
if ( !reader ) continue;
// Todo:
// If is RimGridSummaryCase and using summary item ans legend and summary items are wells, then:
// If is RimGridSummaryCase and using summary item as legend and summary items are wells, then:
/// use color from eclCase->defaultWellColor( wellName );
const std::vector<time_t>& timesteps = reader->timeSteps( dataEntry->summaryAddress() );
const std::vector<time_t>& timesteps = reader->timeSteps( curveDef.summaryAddress() );
std::vector<double> values;
reader->values( dataEntry->summaryAddress(), &values );
reader->values( curveDef.summaryAddress(), &values );
// Find selected timestep indices
@@ -747,10 +765,10 @@ void RimAnalysisPlot::addDataToChartBuilder( RiuGroupedBarChartBuilder& chartBui
QString timestepString = dateTime.toString( formatString );
QString majorText = assignGroupingText( m_majorGroupType(), dataEntry, timestepString );
QString medText = assignGroupingText( m_mediumGroupType(), dataEntry, timestepString );
QString minText = assignGroupingText( m_minorGroupType(), dataEntry, timestepString );
QString legendText = assignGroupingText( m_sortGroupForLegend(), dataEntry, timestepString );
QString majorText = assignGroupingText( m_majorGroupType(), curveDef, timestepString );
QString medText = assignGroupingText( m_mediumGroupType(), curveDef, timestepString );
QString minText = assignGroupingText( m_minorGroupType(), curveDef, timestepString );
QString legendText = assignGroupingText( m_sortGroupForLegend(), curveDef, timestepString );
double value = values[timestepIdx];
@@ -771,22 +789,22 @@ void RimAnalysisPlot::addDataToChartBuilder( RiuGroupedBarChartBuilder& chartBui
{
if ( m_useQuantityInBarText )
{
barText += QString::fromStdString( dataEntry->summaryAddress().quantityName() ) + separator;
barText += QString::fromStdString( curveDef.summaryAddress().quantityName() ) + separator;
}
if ( m_useSummaryItemInBarText )
{
barText += QString::fromStdString( dataEntry->summaryAddress().itemUiText() ) + separator;
barText += QString::fromStdString( curveDef.summaryAddress().itemUiText() ) + separator;
}
if ( m_useCaseInBarText && dataEntry->summaryCase() )
if ( m_useCaseInBarText && curveDef.summaryCase() )
{
barText += dataEntry->summaryCase()->displayCaseName() + separator;
barText += curveDef.summaryCase()->displayCaseName() + separator;
}
if ( m_useEnsembleInBarText && dataEntry->ensemble() )
if ( m_useEnsembleInBarText && curveDef.ensemble() )
{
barText += dataEntry->ensemble()->name() + separator;
barText += curveDef.ensemble()->name() + separator;
}
if ( m_useTimeStepInBarText )
@@ -798,6 +816,7 @@ void RimAnalysisPlot::addDataToChartBuilder( RiuGroupedBarChartBuilder& chartBui
chartBuilder.addBarEntry( majorText, medText, minText, sortValue, legendText, barText, values[timestepIdx] );
}
}
}
}
//--------------------------------------------------------------------------------------------------