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:
@@ -25,6 +25,27 @@
|
||||
///
|
||||
///
|
||||
//==================================================================================================
|
||||
class RimSummaryCalculationAddress
|
||||
{
|
||||
public:
|
||||
RimSummaryCalculationAddress( RifEclipseSummaryAddress summaryAddress )
|
||||
: m_summaryAddress( summaryAddress )
|
||||
{
|
||||
}
|
||||
|
||||
RifEclipseSummaryAddress address() const { return m_summaryAddress; }
|
||||
|
||||
private:
|
||||
RifEclipseSummaryAddress m_summaryAddress;
|
||||
};
|
||||
|
||||
struct SummaryCalculationVariable
|
||||
{
|
||||
QString name;
|
||||
RimSummaryCase* summaryCase;
|
||||
RifEclipseSummaryAddress summaryAddress;
|
||||
};
|
||||
|
||||
class RimSummaryCalculation : public RimUserDefinedCalculation
|
||||
{
|
||||
CAF_PDM_HEADER_INIT;
|
||||
@@ -32,10 +53,42 @@ class RimSummaryCalculation : public RimUserDefinedCalculation
|
||||
public:
|
||||
RimSummaryCalculation();
|
||||
|
||||
std::vector<RimSummaryCalculationAddress> allAddressesForSummaryCase( RimSummaryCase* summaryCase ) const;
|
||||
|
||||
std::vector<double> values( RimSummaryCase* summaryCase, const RimSummaryCalculationAddress& addr );
|
||||
std::vector<time_t> timeSteps( RimSummaryCase* summaryCase, const RimSummaryCalculationAddress& addr );
|
||||
|
||||
bool calculate() override;
|
||||
void updateDependentObjects() override;
|
||||
void removeDependentObjects() override;
|
||||
|
||||
QString buildCalculationName() const override;
|
||||
|
||||
protected:
|
||||
RimSummaryCalculationVariable* createVariable() override;
|
||||
|
||||
static std::optional<std::pair<std::vector<double>, std::vector<time_t>>>
|
||||
calculateResult( const QString& expression,
|
||||
const std::vector<SummaryCalculationVariable>& variables,
|
||||
RimSummaryCase* summaryCase );
|
||||
|
||||
std::optional<std::pair<std::vector<double>, std::vector<time_t>>>
|
||||
calculateWithSubstitutions( RimSummaryCase* summaryCase, const RifEclipseSummaryAddress& addr );
|
||||
|
||||
static void substituteVariables( std::vector<SummaryCalculationVariable>& vars,
|
||||
const RifEclipseSummaryAddress& address );
|
||||
|
||||
std::vector<RimSummaryCalculationAddress>
|
||||
allAddressesForCategory( RifEclipseSummaryAddress::SummaryVarCategory category,
|
||||
const std::set<RifEclipseSummaryAddress>& allResultAddresses ) const;
|
||||
|
||||
RimSummaryCalculationAddress singleAddressesForCategory( const RifEclipseSummaryAddress& address ) const;
|
||||
|
||||
std::optional<std::vector<SummaryCalculationVariable>> getVariables() const;
|
||||
|
||||
bool checkVariables() const;
|
||||
|
||||
bool detectCyclicCalculation( int id, std::set<int>& ids ) const;
|
||||
|
||||
caf::PdmField<bool> m_distributeToOtherItems;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user