From bd8abba77999ca7e19a1aeab6cb246f008f5477e Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Tue, 17 Oct 2017 14:34:02 +0200 Subject: [PATCH] #2022 Curve Calculator : Add enum Calculated --- .../RicSummaryCurveCreator.cpp | 10 ++++ .../RifEclipseSummaryAddress.cpp | 12 +++++ .../FileInterface/RifEclipseSummaryAddress.h | 4 +- .../Summary/RimSummaryCurve.cpp | 1 + .../RiuSummaryCurveDefSelection.cpp | 49 ++++++++++++++++--- .../RiuSummaryCurveDefSelection.h | 1 + 6 files changed, 68 insertions(+), 9 deletions(-) diff --git a/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreator.cpp b/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreator.cpp index 97f9a91179..d80bed3c50 100644 --- a/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreator.cpp +++ b/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreator.cpp @@ -118,8 +118,12 @@ RicSummaryCurveCreator::RicSummaryCurveCreator() : m_identifierFieldsMap( { new SummaryIdentifierAndField(RifEclipseSummaryAddress::INPUT_LGR_NAME) }, { new SummaryIdentifierAndField(RifEclipseSummaryAddress::INPUT_CELL_IJK) }, { new SummaryIdentifierAndField(RifEclipseSummaryAddress::INPUT_VECTOR_NAME) } + } }, + { RifEclipseSummaryAddress::SUMMARY_CALCULATED, { + { new SummaryIdentifierAndField(RifEclipseSummaryAddress::INPUT_VECTOR_NAME) } } } }) + { CAF_PDM_InitFieldNoDefault(&m_selectedCases, "SummaryCases", "Cases", "", "", ""); @@ -170,6 +174,8 @@ RicSummaryCurveCreator::RicSummaryCurveCreator() : m_identifierFieldsMap( CAF_PDM_InitFieldNoDefault(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_BLOCK_LGR][1]->pdmField(), "BlockLgrIjk", "Cell IJK", "", "", ""); CAF_PDM_InitFieldNoDefault(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_BLOCK_LGR][2]->pdmField(), "BlockLgrVectors", "Block Vectors", "", "", ""); + CAF_PDM_InitFieldNoDefault(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_CALCULATED][0]->pdmField(), "CalculatedVectors", "Calculated Vectors", "", "", ""); + CAF_PDM_InitFieldNoDefault(&m_targetPlot, "TargetPlot", "Target Plot", "", "", ""); CAF_PDM_InitField(&m_useAutoAppearanceAssignment, "UseAutoAppearanceAssignment", true, "Auto", "", "", ""); @@ -599,6 +605,10 @@ void RicSummaryCurveCreator::defineUiOrdering(QString uiConfigName, caf::PdmUiOr summaryiesField = m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_BLOCK_LGR][2]->pdmField(); } + else if (sumCategory == RifEclipseSummaryAddress::SUMMARY_CALCULATED) + { + summaryiesField = m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_CALCULATED][0]->pdmField(); + } CAF_ASSERT(summaryiesField); caf::PdmUiGroup* summariesGroup = uiOrdering.addNewGroupWithKeyword("Summaries", RiuSummaryCurveDefinitionKeywords::summaries()); diff --git a/ApplicationCode/FileInterface/RifEclipseSummaryAddress.cpp b/ApplicationCode/FileInterface/RifEclipseSummaryAddress.cpp index b9d8362599..a3c28370f3 100644 --- a/ApplicationCode/FileInterface/RifEclipseSummaryAddress.cpp +++ b/ApplicationCode/FileInterface/RifEclipseSummaryAddress.cpp @@ -103,6 +103,18 @@ RifEclipseSummaryAddress RifEclipseSummaryAddress::fieldVarAddress(const std::st return fieldAddr; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RifEclipseSummaryAddress RifEclipseSummaryAddress::calculatedCurveAddress(const std::string& curveName) +{ + RifEclipseSummaryAddress fieldAddr; + fieldAddr.m_variableCategory = SUMMARY_CALCULATED; + fieldAddr.m_quantityName = curveName; + + return fieldAddr; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/FileInterface/RifEclipseSummaryAddress.h b/ApplicationCode/FileInterface/RifEclipseSummaryAddress.h index fe92655892..e2f23663ff 100644 --- a/ApplicationCode/FileInterface/RifEclipseSummaryAddress.h +++ b/ApplicationCode/FileInterface/RifEclipseSummaryAddress.h @@ -45,7 +45,8 @@ public: SUMMARY_WELL_COMPLETION_LGR, SUMMARY_WELL_SEGMENT, SUMMARY_BLOCK, - SUMMARY_BLOCK_LGR, + SUMMARY_BLOCK_LGR, + SUMMARY_CALCULATED }; enum SummaryIdentifierType @@ -104,6 +105,7 @@ public: // Static specialized creation methods static RifEclipseSummaryAddress fieldVarAddress(const std::string& fieldVarName); + static RifEclipseSummaryAddress calculatedCurveAddress(const std::string& curveName); // Access methods diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurve.cpp b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurve.cpp index a189fec525..725367a0f6 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurve.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurve.cpp @@ -140,6 +140,7 @@ void caf::AppEnum::setUp() addItem(RifEclipseSummaryAddress::SUMMARY_WELL_SEGMENT, "SUMMARY_SEGMENT", "Segment"); addItem(RifEclipseSummaryAddress::SUMMARY_BLOCK, "SUMMARY_BLOCK", "Block"); addItem(RifEclipseSummaryAddress::SUMMARY_BLOCK_LGR, "SUMMARY_BLOCK_LGR", "Lgr-Block"); + addItem(RifEclipseSummaryAddress::SUMMARY_CALCULATED, "SUMMARY_CALCULATED", "Calculated"); setDefault(RifEclipseSummaryAddress::SUMMARY_FIELD); } diff --git a/ApplicationCode/UserInterface/RiuSummaryCurveDefSelection.cpp b/ApplicationCode/UserInterface/RiuSummaryCurveDefSelection.cpp index 1ef119252f..52f481428c 100644 --- a/ApplicationCode/UserInterface/RiuSummaryCurveDefSelection.cpp +++ b/ApplicationCode/UserInterface/RiuSummaryCurveDefSelection.cpp @@ -104,6 +104,9 @@ RiuSummaryCurveDefSelection::RiuSummaryCurveDefSelection() : m_identifierFieldsM { new SummaryIdentifierAndField(RifEclipseSummaryAddress::INPUT_LGR_NAME) }, { new SummaryIdentifierAndField(RifEclipseSummaryAddress::INPUT_CELL_IJK) }, { new SummaryIdentifierAndField(RifEclipseSummaryAddress::INPUT_VECTOR_NAME) } + } }, + { RifEclipseSummaryAddress::SUMMARY_CALCULATED, { + { new SummaryIdentifierAndField(RifEclipseSummaryAddress::INPUT_VECTOR_NAME) } } } }) { @@ -156,6 +159,7 @@ RiuSummaryCurveDefSelection::RiuSummaryCurveDefSelection() : m_identifierFieldsM CAF_PDM_InitFieldNoDefault(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_BLOCK_LGR][1]->pdmField(), "BlockLgrIjk", "Cell IJK", "", "", ""); CAF_PDM_InitFieldNoDefault(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_BLOCK_LGR][2]->pdmField(), "BlockLgrVectors", "Block Vectors", "", "", ""); + CAF_PDM_InitFieldNoDefault(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_CALCULATED][0]->pdmField(), "CalculatedVectors", "Calculated vectors", "", "", ""); for (const auto& itemTypes : m_identifierFieldsMap) { @@ -280,6 +284,29 @@ void RiuSummaryCurveDefSelection::setSelectedCurveDefinitions(const std::vector< } } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +std::set RiuSummaryCurveDefSelection::findPossibleSummaryAddressesFromCalculated() +{ + std::set addressSet; + + if (m_currentSummaryCategory == RifEclipseSummaryAddress::SUMMARY_CALCULATED) + { + // TODO + // Wire up list of calculated curves here +/* + RifEclipseSummaryAddress adr = RifEclipseSummaryAddress::calculatedCurveAddress("a My Test"); + addressSet.insert(adr); + + RifEclipseSummaryAddress adr2 = RifEclipseSummaryAddress::calculatedCurveAddress("b My Test2"); + addressSet.insert(adr2); +*/ + } + + return addressSet; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -355,13 +382,17 @@ QList RiuSummaryCurveDefSelection::calculateValueOptions auto identifierAndField = lookupIdentifierAndFieldFromFieldHandle(fieldNeedingOptions); if (identifierAndField != nullptr) { - enum {SUM_CASES, OBS_DATA}; - std::set addrUnion[2]; + enum {SUM_CASES, OBS_DATA, CALCULATED_CURVES}; + + const size_t itemCount = CALCULATED_CURVES + 1; + + std::set addrUnion[itemCount]; addrUnion[SUM_CASES] = findPossibleSummaryAddressesFromSelectedCases(identifierAndField); addrUnion[OBS_DATA] = findPossibleSummaryAddressesFromSelectedObservedData(identifierAndField); + addrUnion[CALCULATED_CURVES] = findPossibleSummaryAddressesFromCalculated(); - std::set itemNames[2]; - for (int i = 0; i < 2; i++) + std::set itemNames[itemCount]; + for (int i = 0; i < itemCount; i++) { for (const auto& address : addrUnion[i]) { @@ -381,7 +412,7 @@ QList RiuSummaryCurveDefSelection::calculateValueOptions } auto pdmField = identifierAndField->pdmField(); - for(int i = 0; i < 2; i++) + for(int i = 0; i < itemCount; i++) { // Create headers only for vector fields when observed data is selected bool hasObservedData = itemNames[OBS_DATA].size() > 0; @@ -400,8 +431,6 @@ QList RiuSummaryCurveDefSelection::calculateValueOptions optionItem.setLevel(1); options.push_back(optionItem); } - - if (itemNames[OBS_DATA].size() == 0) break; } } } @@ -535,6 +564,10 @@ void RiuSummaryCurveDefSelection::defineUiOrdering(QString uiConfigName, caf::Pd summaryiesField = m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_BLOCK_LGR][2]->pdmField(); } + else if (sumCategory == RifEclipseSummaryAddress::SUMMARY_CALCULATED) + { + summaryiesField = m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_CALCULATED][0]->pdmField(); + } CAF_ASSERT(summaryiesField); caf::PdmUiGroup* summariesGroup = uiOrdering.addNewGroupWithKeyword("Summaries", RiuSummaryCurveDefinitionKeywords::summaries()); @@ -714,7 +747,7 @@ std::set RiuSummaryCurveDefSelection::buildAddressList for (const auto& category : m_selectedSummaryCategories()) { if (category == RifEclipseSummaryAddress::SummaryVarCategory::SUMMARY_INVALID) continue; - + const auto& identifierAndFieldList = m_identifierFieldsMap.at(category); std::vector> selectionStack; buildAddressListForCategoryRecursively(category, identifierAndFieldList.begin(), selectionStack, addressSet); diff --git a/ApplicationCode/UserInterface/RiuSummaryCurveDefSelection.h b/ApplicationCode/UserInterface/RiuSummaryCurveDefSelection.h index 47b0383d3b..abb974d440 100644 --- a/ApplicationCode/UserInterface/RiuSummaryCurveDefSelection.h +++ b/ApplicationCode/UserInterface/RiuSummaryCurveDefSelection.h @@ -89,6 +89,7 @@ private: const SummaryIdentifierAndField *identifierAndField); std::set findPossibleSummaryAddressesFromSelectedCases(const SummaryIdentifierAndField *identifierAndField); std::set findPossibleSummaryAddressesFromSelectedObservedData(const SummaryIdentifierAndField *identifierAndField); + std::set findPossibleSummaryAddressesFromCalculated(); std::vector buildControllingFieldList(const SummaryIdentifierAndField *identifierAndField) const; SummaryIdentifierAndField* lookupIdentifierAndFieldFromFieldHandle(const caf::PdmFieldHandle* pdmFieldHandle) const;