mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2022 Curve Calculator : Calculated summary case is now available
This commit is contained in:
@@ -61,6 +61,22 @@ void RiaSummaryCurveDefinition::resultValues(const RiaSummaryCurveDefinition& cu
|
||||
reader->values(curveDefinition.summaryAddress(), values);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
const std::vector<time_t>& RiaSummaryCurveDefinition::timeSteps(const RiaSummaryCurveDefinition& curveDefinition)
|
||||
{
|
||||
std::vector<time_t> dummy;
|
||||
|
||||
if (!curveDefinition.summaryAddress().isValid()) return dummy;
|
||||
if (!curveDefinition.summaryCase()) return dummy;
|
||||
|
||||
RifSummaryReaderInterface* reader = curveDefinition.summaryCase()->summaryReader();
|
||||
if (!reader) return dummy;
|
||||
|
||||
return reader->timeSteps(curveDefinition.summaryAddress());
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -39,7 +39,8 @@ public:
|
||||
bool operator < (const RiaSummaryCurveDefinition& other) const;
|
||||
|
||||
// TODO: Consider moving to a separate tools class
|
||||
static void resultValues(const RiaSummaryCurveDefinition& curveDefinition, std::vector<double>* values);
|
||||
static void resultValues(const RiaSummaryCurveDefinition& curveDefinition, std::vector<double>* values);
|
||||
static const std::vector<time_t>& timeSteps(const RiaSummaryCurveDefinition& curveDefinition);
|
||||
|
||||
private:
|
||||
std::pair<RimSummaryCase*, RifEclipseSummaryAddress> m_curveDefinition;
|
||||
|
||||
@@ -188,6 +188,8 @@ bool RimCalculation::calculate()
|
||||
|
||||
std::vector<std::vector<double>> variableValues;
|
||||
variableValues.resize(m_variables.size());
|
||||
|
||||
std::vector<time_t> sourceTimeSteps;
|
||||
|
||||
size_t itemCount = 0;
|
||||
|
||||
@@ -215,6 +217,11 @@ bool RimCalculation::calculate()
|
||||
std::vector<double>& curveValues = variableValues[i];
|
||||
RiaSummaryCurveDefinition::resultValues(curveDef, &curveValues);
|
||||
|
||||
if (sourceTimeSteps.size() == 0)
|
||||
{
|
||||
sourceTimeSteps = RiaSummaryCurveDefinition::timeSteps(curveDef);
|
||||
}
|
||||
|
||||
if (itemCount == 0)
|
||||
{
|
||||
itemCount = curveValues.size();
|
||||
@@ -247,6 +254,9 @@ bool RimCalculation::calculate()
|
||||
|
||||
if (evaluatedOk)
|
||||
{
|
||||
// Copy time vector from source
|
||||
m_timesteps = sourceTimeSteps;
|
||||
|
||||
QString txt;
|
||||
for (auto v : m_calculatedValues())
|
||||
{
|
||||
|
||||
@@ -37,7 +37,9 @@ RimCalculationCollection::RimCalculationCollection()
|
||||
m_calcuations.uiCapability()->setUiEditorTypeName(caf::PdmUiTreeSelectionEditor::uiEditorTypeName());
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_calcuationSummaryCase, "CalculationsSummaryCase", "Calculations Summary Case", "", "", "");
|
||||
m_calcuationSummaryCase = new RimCalculatedSummaryCase;
|
||||
m_calcuationSummaryCase.xmlCapability()->disableIO();
|
||||
|
||||
ensureSummaryCaseIsCreated();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -50,7 +52,8 @@ RimCalculation* RimCalculationCollection::addCalculation()
|
||||
|
||||
m_calcuations.push_back(calculation);
|
||||
|
||||
m_calcuationSummaryCase()->buildMetaData();
|
||||
ensureSummaryCaseIsCreated();
|
||||
m_calcuationSummaryCase->buildMetaData();
|
||||
|
||||
return calculation;
|
||||
}
|
||||
@@ -62,7 +65,8 @@ void RimCalculationCollection::deleteCalculation(RimCalculation* calculation)
|
||||
{
|
||||
m_calcuations.removeChildObject(calculation);
|
||||
|
||||
m_calcuationSummaryCase()->buildMetaData();
|
||||
ensureSummaryCaseIsCreated();
|
||||
m_calcuationSummaryCase->buildMetaData();
|
||||
|
||||
delete calculation;
|
||||
}
|
||||
@@ -85,8 +89,37 @@ std::vector<RimCalculation*> RimCalculationCollection::calculations() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimCalculatedSummaryCase* RimCalculationCollection::calculationSummaryCase()
|
||||
RimSummaryCase* RimCalculationCollection::calculationSummaryCase()
|
||||
{
|
||||
ensureSummaryCaseIsCreated();
|
||||
|
||||
return m_calcuationSummaryCase();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimCalculationCollection::deleteAllContainedObjects()
|
||||
{
|
||||
RimCalculatedSummaryCase* sumCase = m_calcuationSummaryCase();
|
||||
if (sumCase)
|
||||
{
|
||||
m_calcuationSummaryCase.removeChildObject(sumCase);
|
||||
|
||||
delete sumCase;
|
||||
}
|
||||
|
||||
m_calcuations.deleteAllChildObjects();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimCalculationCollection::ensureSummaryCaseIsCreated()
|
||||
{
|
||||
if (!m_calcuationSummaryCase())
|
||||
{
|
||||
m_calcuationSummaryCase = new RimCalculatedSummaryCase;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include "cafPdmChildField.h"
|
||||
|
||||
class RimCalculation;
|
||||
class RimSummaryCase;
|
||||
class RimCalculatedSummaryCase;
|
||||
|
||||
//==================================================================================================
|
||||
@@ -40,7 +41,12 @@ public:
|
||||
void deleteCalculation(RimCalculation* calculation);
|
||||
std::vector<RimCalculation*> calculations() const;
|
||||
|
||||
RimCalculatedSummaryCase* calculationSummaryCase();
|
||||
RimSummaryCase* calculationSummaryCase();
|
||||
|
||||
void deleteAllContainedObjects();
|
||||
|
||||
private:
|
||||
void ensureSummaryCaseIsCreated();
|
||||
|
||||
private:
|
||||
caf::PdmChildArrayField<RimCalculation*> m_calcuations;
|
||||
|
||||
@@ -200,6 +200,8 @@ void RimProject::close()
|
||||
|
||||
multiSnapshotDefinitions.deleteAllChildObjects();
|
||||
|
||||
calculationCollection->deleteAllContainedObjects();
|
||||
|
||||
delete viewLinkerCollection->viewLinker();
|
||||
viewLinkerCollection->viewLinker = NULL;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user