Files
ResInsight/ApplicationLibCode/Application/Tools/Summary/RiaSummaryTools.h
Magne Sjaastad 9b6e441386 Make it possible to exclude partial delta curves
Make sure statistics curves are recomputed on flag change

When toggling "Discard Missing or Incomplete Realizations", make sure the statistics is recomputed and the ensemble plots updated.
2024-11-18 07:45:20 +01:00

106 lines
4.8 KiB
C++

/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2017 Statoil ASA
//
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "RiaDateTimeDefines.h"
#include "RifEclipseSummaryAddressDefines.h"
#include "RimObservedDataCollection.h"
#include <QString>
#include <QStringList>
#include <vector>
class RifEclipseSummaryAddress;
class RimSummaryPlot;
class RimSummaryMultiPlot;
class RimSummaryMultiPlotCollection;
class RimSummaryCaseMainCollection;
class RimSummaryCase;
class RimSummaryEnsemble;
class RimSummaryTable;
class RimSummaryTableCollection;
class RimObservedDataCollection;
class RimSummaryCurve;
class RimUserDefinedCalculation;
namespace caf
{
class PdmObject;
class PdmOptionItemInfo;
} // namespace caf
//==================================================================================================
//
//==================================================================================================
class RiaSummaryTools
{
public:
static RimSummaryCaseMainCollection* summaryCaseMainCollection();
static RimSummaryMultiPlotCollection* summaryMultiPlotCollection();
static RimObservedDataCollection* observedDataCollection();
static std::vector<RimSummaryCase*> singleTopLevelSummaryCases();
static void notifyCalculatedCurveNameHasChanged( int calculationId, const QString& currentCurveName );
static RimSummaryPlot* parentSummaryPlot( caf::PdmObject* object );
static RimSummaryMultiPlot* parentSummaryMultiPlot( caf::PdmObject* object );
static RimSummaryMultiPlotCollection* parentSummaryPlotCollection( caf::PdmObject* object );
static RimSummaryTable* parentSummaryTable( caf::PdmObject* object );
static RimSummaryTableCollection* parentSummaryTableCollection( caf::PdmObject* object );
static RifEclipseSummaryAddressDefines::CurveType identifyCurveType( const RifEclipseSummaryAddress& address );
static void getSummaryCasesAndAddressesForCalculation( int id,
std::vector<RimSummaryCase*>& cases,
std::vector<RifEclipseSummaryAddress>& addresses );
static std::pair<std::vector<time_t>, std::vector<double>> resampledValuesForPeriod( const RifEclipseSummaryAddress& address,
const std::vector<time_t>& timeSteps,
const std::vector<double>& values,
RiaDefines::DateTimePeriod period );
static std::pair<std::vector<time_t>, std::vector<double>>
resampledValuesForPeriod( RifEclipseSummaryAddressDefines::CurveType accumulatedOrRate,
const std::vector<time_t>& timeSteps,
const std::vector<double>& values,
RiaDefines::DateTimePeriod period );
static RimSummaryCase* summaryCaseById( int caseId );
static RimSummaryEnsemble* ensembleById( int ensembleId );
static QList<caf::PdmOptionItemInfo> optionsForAllSummaryCases();
static QList<caf::PdmOptionItemInfo> optionsForSummaryCases( const std::vector<RimSummaryCase*>& cases );
static void copyCurveDataSources( RimSummaryCurve& curve, const RimSummaryCurve& otherCurve );
static void copyCurveAxisData( RimSummaryCurve& curve, const RimSummaryCurve& otherCurve );
static void reloadSummaryCase( RimSummaryCase* summaryCase );
static void reloadSummaryEnsemble( RimSummaryEnsemble* ensemble );
static time_t calculateTimeThreshold( const time_t& minimum, const time_t& maximum );
private:
static void updateRequiredCalculatedCurves( RimSummaryCase* sourceSummaryCase );
static bool isCalculationRequired( const RimUserDefinedCalculation* summaryCalculation, const RimSummaryCase* summaryCase );
};