mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2022 Curve Calculator : Wire up access to calculated curve data
This commit is contained in:
parent
bd8abba779
commit
d5d26a36f2
@ -49,6 +49,8 @@ RimCalculation::RimCalculation()
|
|||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault(&m_variables, "Variables", "Variables", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&m_variables, "Variables", "Variables", "", "", "");
|
||||||
CAF_PDM_InitFieldNoDefault(&m_calculatedValues, "CalculatedValues", "Calculated Values", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&m_calculatedValues, "CalculatedValues", "Calculated Values", "", "", "");
|
||||||
|
|
||||||
|
CAF_PDM_InitFieldNoDefault(&m_timesteps, "TimeSteps", "Time Steps", "", "", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -104,6 +106,14 @@ const std::vector<double>& RimCalculation::values() const
|
|||||||
return m_calculatedValues();
|
return m_calculatedValues();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
const std::vector<time_t>& RimCalculation::timeSteps() const
|
||||||
|
{
|
||||||
|
return m_timesteps();
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@ -43,6 +43,7 @@ public:
|
|||||||
void deleteVariable(RimCalculationVariable* calcVariable);
|
void deleteVariable(RimCalculationVariable* calcVariable);
|
||||||
|
|
||||||
const std::vector<double>& values() const;
|
const std::vector<double>& values() const;
|
||||||
|
const std::vector<time_t>& timeSteps() const;
|
||||||
|
|
||||||
bool parseExpression();
|
bool parseExpression();
|
||||||
bool calculate();
|
bool calculate();
|
||||||
@ -63,4 +64,5 @@ private:
|
|||||||
caf::PdmChildArrayField<RimCalculationVariable*> m_variables;
|
caf::PdmChildArrayField<RimCalculationVariable*> m_variables;
|
||||||
|
|
||||||
caf::PdmField<std::vector<double>> m_calculatedValues;
|
caf::PdmField<std::vector<double>> m_calculatedValues;
|
||||||
|
caf::PdmField<std::vector<time_t>> m_timesteps;
|
||||||
};
|
};
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
#include "RimCalculationCollection.h"
|
#include "RimCalculationCollection.h"
|
||||||
|
|
||||||
#include "RimCalculation.h"
|
#include "RimCalculation.h"
|
||||||
|
#include "RimCalculatedSummaryCase.h"
|
||||||
|
|
||||||
#include "cafPdmUiGroup.h"
|
#include "cafPdmUiGroup.h"
|
||||||
#include "cafPdmUiTreeSelectionEditor.h"
|
#include "cafPdmUiTreeSelectionEditor.h"
|
||||||
@ -34,6 +35,9 @@ RimCalculationCollection::RimCalculationCollection()
|
|||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault(&m_calcuations, "Calculations", "Calculations", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&m_calcuations, "Calculations", "Calculations", "", "", "");
|
||||||
m_calcuations.uiCapability()->setUiEditorTypeName(caf::PdmUiTreeSelectionEditor::uiEditorTypeName());
|
m_calcuations.uiCapability()->setUiEditorTypeName(caf::PdmUiTreeSelectionEditor::uiEditorTypeName());
|
||||||
|
|
||||||
|
CAF_PDM_InitFieldNoDefault(&m_calcuationSummaryCase, "CalculationsSummaryCase", "Calculations Summary Case", "", "", "");
|
||||||
|
m_calcuationSummaryCase = new RimCalculatedSummaryCase;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -46,6 +50,8 @@ RimCalculation* RimCalculationCollection::addCalculation()
|
|||||||
|
|
||||||
m_calcuations.push_back(calculation);
|
m_calcuations.push_back(calculation);
|
||||||
|
|
||||||
|
m_calcuationSummaryCase()->buildMetaData();
|
||||||
|
|
||||||
return calculation;
|
return calculation;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,6 +61,9 @@ RimCalculation* RimCalculationCollection::addCalculation()
|
|||||||
void RimCalculationCollection::deleteCalculation(RimCalculation* calculation)
|
void RimCalculationCollection::deleteCalculation(RimCalculation* calculation)
|
||||||
{
|
{
|
||||||
m_calcuations.removeChildObject(calculation);
|
m_calcuations.removeChildObject(calculation);
|
||||||
|
|
||||||
|
m_calcuationSummaryCase()->buildMetaData();
|
||||||
|
|
||||||
delete calculation;
|
delete calculation;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -73,3 +82,11 @@ std::vector<RimCalculation*> RimCalculationCollection::calculations() const
|
|||||||
return calcs;
|
return calcs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RimCalculatedSummaryCase* RimCalculationCollection::calculationSummaryCase()
|
||||||
|
{
|
||||||
|
return m_calcuationSummaryCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -20,8 +20,10 @@
|
|||||||
|
|
||||||
#include "cafPdmObject.h"
|
#include "cafPdmObject.h"
|
||||||
#include "cafPdmChildArrayField.h"
|
#include "cafPdmChildArrayField.h"
|
||||||
|
#include "cafPdmChildField.h"
|
||||||
|
|
||||||
class RimCalculation;
|
class RimCalculation;
|
||||||
|
class RimCalculatedSummaryCase;
|
||||||
|
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
///
|
///
|
||||||
@ -38,6 +40,9 @@ public:
|
|||||||
void deleteCalculation(RimCalculation* calculation);
|
void deleteCalculation(RimCalculation* calculation);
|
||||||
std::vector<RimCalculation*> calculations() const;
|
std::vector<RimCalculation*> calculations() const;
|
||||||
|
|
||||||
|
RimCalculatedSummaryCase* calculationSummaryCase();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmChildArrayField<RimCalculation*> m_calcuations;
|
caf::PdmChildArrayField<RimCalculation*> m_calcuations;
|
||||||
|
caf::PdmChildField<RimCalculatedSummaryCase*> m_calcuationSummaryCase;
|
||||||
};
|
};
|
||||||
|
@ -26,6 +26,7 @@ ${CEE_CURRENT_LIST_DIR}RimObservedData.h
|
|||||||
${CEE_CURRENT_LIST_DIR}RimObservedDataCollection.h
|
${CEE_CURRENT_LIST_DIR}RimObservedDataCollection.h
|
||||||
${CEE_CURRENT_LIST_DIR}RimSummaryObservedDataFile.h
|
${CEE_CURRENT_LIST_DIR}RimSummaryObservedDataFile.h
|
||||||
${CEE_CURRENT_LIST_DIR}RimObservedEclipseUserData.h
|
${CEE_CURRENT_LIST_DIR}RimObservedEclipseUserData.h
|
||||||
|
${CEE_CURRENT_LIST_DIR}RimCalculatedSummaryCase.h
|
||||||
)
|
)
|
||||||
|
|
||||||
set (SOURCE_GROUP_SOURCE_FILES
|
set (SOURCE_GROUP_SOURCE_FILES
|
||||||
@ -50,6 +51,7 @@ ${CEE_CURRENT_LIST_DIR}RimObservedData.cpp
|
|||||||
${CEE_CURRENT_LIST_DIR}RimObservedDataCollection.cpp
|
${CEE_CURRENT_LIST_DIR}RimObservedDataCollection.cpp
|
||||||
${CEE_CURRENT_LIST_DIR}RimSummaryObservedDataFile.cpp
|
${CEE_CURRENT_LIST_DIR}RimSummaryObservedDataFile.cpp
|
||||||
${CEE_CURRENT_LIST_DIR}RimObservedEclipseUserData.cpp
|
${CEE_CURRENT_LIST_DIR}RimObservedEclipseUserData.cpp
|
||||||
|
${CEE_CURRENT_LIST_DIR}RimCalculatedSummaryCase.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
list(APPEND CODE_HEADER_FILES
|
list(APPEND CODE_HEADER_FILES
|
||||||
|
@ -0,0 +1,182 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
//
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include "RimCalculatedSummaryCase.h"
|
||||||
|
|
||||||
|
#include "RimCalculation.h"
|
||||||
|
#include "RimCalculationCollection.h"
|
||||||
|
|
||||||
|
CAF_PDM_SOURCE_INIT(RimCalculatedSummaryCase,"CalculatedSummaryCase");
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RimCalculatedSummaryCase::RimCalculatedSummaryCase()
|
||||||
|
{
|
||||||
|
CAF_PDM_InitObject("Calculated Summary Case",":/SummaryCase48x48.png","","");
|
||||||
|
|
||||||
|
m_calculatedCurveReader = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RimCalculatedSummaryCase::~RimCalculatedSummaryCase()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
QString RimCalculatedSummaryCase::caseName()
|
||||||
|
{
|
||||||
|
return "Calculated Summary Case";
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimCalculatedSummaryCase::createSummaryReaderInterface()
|
||||||
|
{
|
||||||
|
if (!m_calculatedCurveReader)
|
||||||
|
{
|
||||||
|
RimCalculationCollection* calculationCollection = nullptr;
|
||||||
|
this->firstAncestorOrThisOfTypeAsserted(calculationCollection);
|
||||||
|
|
||||||
|
m_calculatedCurveReader = new RifCalculatedSummaryCurveReader(calculationCollection);
|
||||||
|
|
||||||
|
m_calculatedCurveReader->buildMetaData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RifSummaryReaderInterface* RimCalculatedSummaryCase::summaryReader()
|
||||||
|
{
|
||||||
|
if (!m_calculatedCurveReader) createSummaryReaderInterface();
|
||||||
|
|
||||||
|
return m_calculatedCurveReader;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimCalculatedSummaryCase::updateFilePathsFromProjectPath(const QString& newProjectPath, const QString& oldProjectPath)
|
||||||
|
{
|
||||||
|
// Nothing to do here
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimCalculatedSummaryCase::buildMetaData()
|
||||||
|
{
|
||||||
|
if (!m_calculatedCurveReader) createSummaryReaderInterface();
|
||||||
|
|
||||||
|
m_calculatedCurveReader->buildMetaData();
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RimCalculatedSummaryCase::RifCalculatedSummaryCurveReader::RifCalculatedSummaryCurveReader(RimCalculationCollection* calculationCollection)
|
||||||
|
: m_calculationCollection(calculationCollection)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
const std::vector<time_t>& RimCalculatedSummaryCase::RifCalculatedSummaryCurveReader::timeSteps(const RifEclipseSummaryAddress& resultAddress) const
|
||||||
|
{
|
||||||
|
RimCalculation* calc = findCalculationByName(resultAddress);
|
||||||
|
if (calc)
|
||||||
|
{
|
||||||
|
return calc->timeSteps();
|
||||||
|
}
|
||||||
|
|
||||||
|
static std::vector<time_t> dummy;
|
||||||
|
|
||||||
|
return dummy;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
bool RimCalculatedSummaryCase::RifCalculatedSummaryCurveReader::values(const RifEclipseSummaryAddress& resultAddress, std::vector<double>* values) const
|
||||||
|
{
|
||||||
|
RimCalculation* calc = findCalculationByName(resultAddress);
|
||||||
|
if (calc)
|
||||||
|
{
|
||||||
|
*values = calc->values();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
std::string RimCalculatedSummaryCase::RifCalculatedSummaryCurveReader::unitName(const RifEclipseSummaryAddress& resultAddress) const
|
||||||
|
{
|
||||||
|
return "Calculated Curve Unit";
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimCalculatedSummaryCase::RifCalculatedSummaryCurveReader::buildMetaData()
|
||||||
|
{
|
||||||
|
m_allResultAddresses.clear();
|
||||||
|
|
||||||
|
for (RimCalculation* calc : m_calculationCollection->calculations())
|
||||||
|
{
|
||||||
|
m_allResultAddresses.push_back(RifEclipseSummaryAddress::calculatedCurveAddress(calc->description().toStdString()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RimCalculation* RimCalculatedSummaryCase::RifCalculatedSummaryCurveReader::findCalculationByName(const RifEclipseSummaryAddress& resultAddress) const
|
||||||
|
{
|
||||||
|
if (!m_calculationCollection) return false;
|
||||||
|
|
||||||
|
CVF_ASSERT(resultAddress.category() == RifEclipseSummaryAddress::SUMMARY_CALCULATED);
|
||||||
|
|
||||||
|
QString calculatedName = QString::fromStdString(resultAddress.quantityName());
|
||||||
|
|
||||||
|
for (RimCalculation* calc : m_calculationCollection->calculations())
|
||||||
|
{
|
||||||
|
if (calc->description() == calculatedName)
|
||||||
|
{
|
||||||
|
return calc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
@ -0,0 +1,70 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// 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 "RimSummaryCase.h"
|
||||||
|
#include "RifSummaryReaderInterface.h"
|
||||||
|
|
||||||
|
class RimCalculationCollection;
|
||||||
|
class RimCalculation;
|
||||||
|
|
||||||
|
|
||||||
|
//==================================================================================================
|
||||||
|
//
|
||||||
|
//==================================================================================================
|
||||||
|
class RimCalculatedSummaryCase : public RimSummaryCase
|
||||||
|
{
|
||||||
|
CAF_PDM_HEADER_INIT;
|
||||||
|
|
||||||
|
private:
|
||||||
|
//==================================================================================================
|
||||||
|
//
|
||||||
|
//==================================================================================================
|
||||||
|
class RifCalculatedSummaryCurveReader : public RifSummaryReaderInterface
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit RifCalculatedSummaryCurveReader(RimCalculationCollection* calculationCollection);
|
||||||
|
|
||||||
|
virtual const std::vector<time_t>& timeSteps(const RifEclipseSummaryAddress& resultAddress) const override;
|
||||||
|
virtual bool values(const RifEclipseSummaryAddress& resultAddress, std::vector<double>* values) const override;
|
||||||
|
virtual std::string unitName(const RifEclipseSummaryAddress& resultAddress) const override;
|
||||||
|
|
||||||
|
void buildMetaData();
|
||||||
|
|
||||||
|
private:
|
||||||
|
RimCalculation* findCalculationByName(const RifEclipseSummaryAddress& resultAddress) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
caf::PdmPointer<RimCalculationCollection> m_calculationCollection;
|
||||||
|
};
|
||||||
|
|
||||||
|
public:
|
||||||
|
RimCalculatedSummaryCase();
|
||||||
|
virtual ~RimCalculatedSummaryCase();
|
||||||
|
|
||||||
|
virtual QString caseName() override;
|
||||||
|
virtual void createSummaryReaderInterface() override;
|
||||||
|
virtual RifSummaryReaderInterface* summaryReader() override;
|
||||||
|
virtual void updateFilePathsFromProjectPath(const QString& newProjectPath, const QString& oldProjectPath) override;
|
||||||
|
|
||||||
|
void buildMetaData();
|
||||||
|
|
||||||
|
private:
|
||||||
|
RifCalculatedSummaryCurveReader* m_calculatedCurveReader;
|
||||||
|
};
|
@ -21,11 +21,12 @@
|
|||||||
#include "RiaApplication.h"
|
#include "RiaApplication.h"
|
||||||
#include "RiaSummaryCurveDefinition.h"
|
#include "RiaSummaryCurveDefinition.h"
|
||||||
|
|
||||||
#include "RiuSummaryCurveDefinitionKeywords.h"
|
|
||||||
|
|
||||||
#include "RifEclipseSummaryAddress.h"
|
#include "RifEclipseSummaryAddress.h"
|
||||||
#include "RifSummaryReaderInterface.h"
|
#include "RifSummaryReaderInterface.h"
|
||||||
|
|
||||||
|
#include "RimCalculation.h"
|
||||||
|
#include "RimCalculatedSummaryCase.h"
|
||||||
|
#include "RimCalculationCollection.h"
|
||||||
#include "RimObservedData.h"
|
#include "RimObservedData.h"
|
||||||
#include "RimObservedDataCollection.h"
|
#include "RimObservedDataCollection.h"
|
||||||
#include "RimOilField.h"
|
#include "RimOilField.h"
|
||||||
@ -34,6 +35,8 @@
|
|||||||
#include "RimSummaryCaseCollection.h"
|
#include "RimSummaryCaseCollection.h"
|
||||||
#include "RimSummaryCaseMainCollection.h"
|
#include "RimSummaryCaseMainCollection.h"
|
||||||
|
|
||||||
|
#include "RiuSummaryCurveDefinitionKeywords.h"
|
||||||
|
|
||||||
#include "cafPdmUiTreeSelectionEditor.h"
|
#include "cafPdmUiTreeSelectionEditor.h"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
@ -211,7 +214,7 @@ std::vector<RiaSummaryCurveDefinition> RiuSummaryCurveDefSelection::selectedCurv
|
|||||||
|
|
||||||
std::set<RifEclipseSummaryAddress> selectedAddressesFromUi = buildAddressListFromSelections();
|
std::set<RifEclipseSummaryAddress> selectedAddressesFromUi = buildAddressListFromSelections();
|
||||||
|
|
||||||
for (RimSummaryCase* currCase : m_selectedCases)
|
for (RimSummaryCase* currCase : summaryCases())
|
||||||
{
|
{
|
||||||
if (currCase && currCase->summaryReader())
|
if (currCase && currCase->summaryReader())
|
||||||
{
|
{
|
||||||
@ -259,7 +262,10 @@ void RiuSummaryCurveDefSelection::setSelectedCurveDefinitions(const std::vector<
|
|||||||
// Select case if not already selected
|
// Select case if not already selected
|
||||||
if (std::find(m_selectedCases.begin(), m_selectedCases.end(), summaryCase) == m_selectedCases.end())
|
if (std::find(m_selectedCases.begin(), m_selectedCases.end(), summaryCase) == m_selectedCases.end())
|
||||||
{
|
{
|
||||||
m_selectedCases.push_back(summaryCase);
|
if (summaryCase != calculatedSummaryCase())
|
||||||
|
{
|
||||||
|
m_selectedCases.push_back(summaryCase);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isObservedDataCase = isObservedData(summaryCase);
|
bool isObservedDataCase = isObservedData(summaryCase);
|
||||||
@ -293,15 +299,13 @@ std::set<RifEclipseSummaryAddress> RiuSummaryCurveDefSelection::findPossibleSumm
|
|||||||
|
|
||||||
if (m_currentSummaryCategory == RifEclipseSummaryAddress::SUMMARY_CALCULATED)
|
if (m_currentSummaryCategory == RifEclipseSummaryAddress::SUMMARY_CALCULATED)
|
||||||
{
|
{
|
||||||
// TODO
|
RimSummaryCase* calcSumCase = calculatedSummaryCase();
|
||||||
// Wire up list of calculated curves here
|
|
||||||
/*
|
|
||||||
RifEclipseSummaryAddress adr = RifEclipseSummaryAddress::calculatedCurveAddress("a My Test");
|
|
||||||
addressSet.insert(adr);
|
|
||||||
|
|
||||||
RifEclipseSummaryAddress adr2 = RifEclipseSummaryAddress::calculatedCurveAddress("b My Test2");
|
const std::vector<RifEclipseSummaryAddress> allAddresses = calcSumCase->summaryReader()->allResultAddresses();
|
||||||
addressSet.insert(adr2);
|
for (const auto& adr : allAddresses)
|
||||||
*/
|
{
|
||||||
|
addressSet.insert(adr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return addressSet;
|
return addressSet;
|
||||||
@ -582,7 +586,7 @@ void RiuSummaryCurveDefSelection::defineUiOrdering(QString uiConfigName, caf::Pd
|
|||||||
std::set<RifEclipseSummaryAddress> RiuSummaryCurveDefSelection::findPossibleSummaryAddressesFromSelectedCases(const SummaryIdentifierAndField *identifierAndField)
|
std::set<RifEclipseSummaryAddress> RiuSummaryCurveDefSelection::findPossibleSummaryAddressesFromSelectedCases(const SummaryIdentifierAndField *identifierAndField)
|
||||||
{
|
{
|
||||||
std::vector<RimSummaryCase*> cases;
|
std::vector<RimSummaryCase*> cases;
|
||||||
for (const auto& sumCase: m_selectedCases)
|
for (const auto& sumCase : m_selectedCases())
|
||||||
{
|
{
|
||||||
if(isObservedData(sumCase)) continue;
|
if(isObservedData(sumCase)) continue;
|
||||||
cases.push_back(sumCase);
|
cases.push_back(sumCase);
|
||||||
@ -596,7 +600,7 @@ std::set<RifEclipseSummaryAddress> RiuSummaryCurveDefSelection::findPossibleSumm
|
|||||||
std::set<RifEclipseSummaryAddress> RiuSummaryCurveDefSelection::findPossibleSummaryAddressesFromSelectedObservedData(const SummaryIdentifierAndField *identifierAndField)
|
std::set<RifEclipseSummaryAddress> RiuSummaryCurveDefSelection::findPossibleSummaryAddressesFromSelectedObservedData(const SummaryIdentifierAndField *identifierAndField)
|
||||||
{
|
{
|
||||||
std::vector<RimSummaryCase*> obsData;
|
std::vector<RimSummaryCase*> obsData;
|
||||||
for (const auto& sumCase : m_selectedCases)
|
for (const auto& sumCase : m_selectedCases())
|
||||||
{
|
{
|
||||||
if (isObservedData(sumCase))
|
if (isObservedData(sumCase))
|
||||||
{
|
{
|
||||||
@ -831,3 +835,31 @@ bool RiuSummaryCurveDefSelection::isObservedData(RimSummaryCase *sumCase) const
|
|||||||
{
|
{
|
||||||
return dynamic_cast<RimObservedData*>(sumCase) != nullptr;
|
return dynamic_cast<RimObservedData*>(sumCase) != nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
std::vector<RimSummaryCase*> RiuSummaryCurveDefSelection::summaryCases() const
|
||||||
|
{
|
||||||
|
std::vector<RimSummaryCase*> cases;
|
||||||
|
|
||||||
|
for (RimSummaryCase* currCase : m_selectedCases)
|
||||||
|
{
|
||||||
|
cases.push_back(currCase);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Always add the summary case for calculated curves as this case is not displayed in UI
|
||||||
|
cases.push_back(RiuSummaryCurveDefSelection::calculatedSummaryCase());
|
||||||
|
|
||||||
|
return cases;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RimSummaryCase* RiuSummaryCurveDefSelection::calculatedSummaryCase()
|
||||||
|
{
|
||||||
|
RimCalculationCollection* calcColl = RiaApplication::instance()->project()->calculationCollection();
|
||||||
|
|
||||||
|
return calcColl->calculationSummaryCase();
|
||||||
|
}
|
||||||
|
@ -106,6 +106,9 @@ private:
|
|||||||
void resetAllFields();
|
void resetAllFields();
|
||||||
bool isObservedData(RimSummaryCase *sumCase) const;
|
bool isObservedData(RimSummaryCase *sumCase) const;
|
||||||
|
|
||||||
|
std::vector<RimSummaryCase*> summaryCases() const;
|
||||||
|
static RimSummaryCase* calculatedSummaryCase();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmPtrArrayField<RimSummaryCase*> m_selectedCases;
|
caf::PdmPtrArrayField<RimSummaryCase*> m_selectedCases;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user