mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#9671 summary calculations for summary items
* Summary Calculation: use shorter name in title * Sort summary addresses to group calculated results last. * Summary Calculation: add option to distribute calculation to other items. * Add support for summary calculation for RimGridSummaryCase. * Use short name for calculations in plot titles. * Update ensembles in Data Sources when calculation is added. * Summary Calculation: allow drag-and-drop of ensembles * Summary Plot: fix axis range aggregation for calculated ensemble addresses. --------- Co-authored-by: Kristian Bendiksen <kristian.bendiksen@gmail.com>
This commit is contained in:
@@ -18,15 +18,20 @@
|
||||
|
||||
#include "RimCalculatedSummaryCurveReader.h"
|
||||
|
||||
#include "RifEclipseSummaryAddress.h"
|
||||
#include "RimSummaryCalculation.h"
|
||||
#include "RimSummaryCalculationCollection.h"
|
||||
#include "RimUserDefinedCalculation.h"
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RifCalculatedSummaryCurveReader::RifCalculatedSummaryCurveReader( RimSummaryCalculationCollection* calculationCollection )
|
||||
RifCalculatedSummaryCurveReader::RifCalculatedSummaryCurveReader( RimSummaryCalculationCollection* calculationCollection,
|
||||
RimSummaryCase* summaryCase )
|
||||
: m_calculationCollection( calculationCollection )
|
||||
, m_summaryCase( summaryCase )
|
||||
{
|
||||
CAF_ASSERT( summaryCase );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -35,9 +40,10 @@ RifCalculatedSummaryCurveReader::RifCalculatedSummaryCurveReader( RimSummaryCalc
|
||||
std::vector<time_t> RifCalculatedSummaryCurveReader::timeSteps( const RifEclipseSummaryAddress& resultAddress ) const
|
||||
{
|
||||
RimSummaryCalculation* calc = findCalculationByName( resultAddress );
|
||||
if ( calc )
|
||||
if ( calc && m_summaryCase )
|
||||
{
|
||||
return calc->timeSteps();
|
||||
RimSummaryCalculationAddress address( resultAddress );
|
||||
return calc->timeSteps( m_summaryCase, address );
|
||||
}
|
||||
|
||||
return {};
|
||||
@@ -49,9 +55,10 @@ std::vector<time_t> RifCalculatedSummaryCurveReader::timeSteps( const RifEclipse
|
||||
bool RifCalculatedSummaryCurveReader::values( const RifEclipseSummaryAddress& resultAddress, std::vector<double>* values ) const
|
||||
{
|
||||
RimSummaryCalculation* calc = findCalculationByName( resultAddress );
|
||||
if ( calc )
|
||||
if ( calc && m_summaryCase )
|
||||
{
|
||||
*values = calc->values();
|
||||
RimSummaryCalculationAddress address( resultAddress );
|
||||
*values = calc->values( m_summaryCase, address );
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -82,8 +89,17 @@ void RifCalculatedSummaryCurveReader::buildMetaData()
|
||||
|
||||
for ( RimUserDefinedCalculation* calc : m_calculationCollection->calculations() )
|
||||
{
|
||||
m_allResultAddresses.insert(
|
||||
RifEclipseSummaryAddress::calculatedAddress( calc->description().toStdString(), calc->id() ) );
|
||||
RimSummaryCalculation* sumCalc = dynamic_cast<RimSummaryCalculation*>( calc );
|
||||
CAF_ASSERT( sumCalc );
|
||||
|
||||
const auto& allAddresses = sumCalc->allAddressesForSummaryCase( m_summaryCase );
|
||||
for ( auto calculationAddress : allAddresses )
|
||||
{
|
||||
if ( calculationAddress.address().isValid() )
|
||||
{
|
||||
m_allResultAddresses.insert( calculationAddress.address() );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,12 +109,9 @@ void RifCalculatedSummaryCurveReader::buildMetaData()
|
||||
RimSummaryCalculation*
|
||||
RifCalculatedSummaryCurveReader::findCalculationByName( const RifEclipseSummaryAddress& resultAddress ) const
|
||||
{
|
||||
if ( m_calculationCollection && resultAddress.category() == RifEclipseSummaryAddress::SUMMARY_CALCULATED )
|
||||
{
|
||||
return dynamic_cast<RimSummaryCalculation*>( m_calculationCollection->findCalculationById( resultAddress.id() ) );
|
||||
}
|
||||
if ( !m_calculationCollection || !resultAddress.isCalculated() ) return nullptr;
|
||||
|
||||
return nullptr;
|
||||
return dynamic_cast<RimSummaryCalculation*>( m_calculationCollection->findCalculationById( resultAddress.id() ) );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user