///////////////////////////////////////////////////////////////////////////////// // // 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 // for more details. // ///////////////////////////////////////////////////////////////////////////////// #pragma once #include "RifEclipseSummaryAddress.h" #include #include #include #include class RimSummaryCurveCollection; class QString; //================================================================================================== // //================================================================================================== class RiaSummaryCurveAnalyzer { public: RiaSummaryCurveAnalyzer(); void appendAddresses( const std::set& allAddresses ); void appendAddresses( const std::vector& allAddresses ); void clear(); std::set quantities() const; std::set quantityNamesWithHistory() const; std::set quantityNamesNoHistory() const; std::string quantityNameForTitle() const; std::set wellNames() const; std::set wellGroupNames() const; std::set regionNumbers() const; std::set wellCompletions( const std::string& wellName ) const; std::set wellSegmentNumbers( const std::string& wellName ) const; std::set blocks() const; std::set aquifers() const; std::set categories() const; std::vector identifierTexts( RifEclipseSummaryAddress::SummaryVarCategory category, const std::string& secondaryIdentifier ) const; static std::vector addressesForCategory( const std::set& addresses, RifEclipseSummaryAddress::SummaryVarCategory category ); static std::string correspondingHistorySummaryCurveName( const std::string& curveName ); private: void assignCategoryToQuantities() const; void computeQuantityNamesWithHistory() const; void analyzeSingleAddress( const RifEclipseSummaryAddress& address ); private: std::set m_quantities; mutable std::set m_quantitiesWithMatchingHistory; mutable std::set m_quantitiesNoMatchingHistory; std::set m_wellNames; std::set m_wellGroupNames; std::set m_regionNumbers; std::set> m_wellCompletions; std::set> m_wellSegmentNumbers; std::set m_blocks; std::set m_aquifers; std::set m_categories; };