///////////////////////////////////////////////////////////////////////////////// // // 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. // ///////////////////////////////////////////////////////////////////////////////// #include "RimCalculatedSummaryCurveReader.h" #include "RimSummaryCalculation.h" #include "RimSummaryCalculationCollection.h" //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RifCalculatedSummaryCurveReader::RifCalculatedSummaryCurveReader( RimSummaryCalculationCollection* calculationCollection ) : m_calculationCollection( calculationCollection ) { } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- const std::vector& RifCalculatedSummaryCurveReader::timeSteps( const RifEclipseSummaryAddress& resultAddress ) const { RimSummaryCalculation* calc = findCalculationByName( resultAddress ); if ( calc ) { return calc->timeSteps(); } static std::vector dummy; return dummy; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- bool RifCalculatedSummaryCurveReader::values( const RifEclipseSummaryAddress& resultAddress, std::vector* values ) const { RimSummaryCalculation* calc = findCalculationByName( resultAddress ); if ( calc ) { *values = calc->values(); return true; } return false; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- std::string RifCalculatedSummaryCurveReader::unitName( const RifEclipseSummaryAddress& resultAddress ) const { RimSummaryCalculation* calculation = findCalculationByName( resultAddress ); if ( calculation != nullptr && !calculation->unitName().isEmpty() ) { return calculation->unitName().toStdString(); } return ""; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RifCalculatedSummaryCurveReader::buildMetaData() { m_allResultAddresses.clear(); for ( RimUserDefinedCalculation* calc : m_calculationCollection->calculations() ) { m_allResultAddresses.insert( RifEclipseSummaryAddress::calculatedAddress( calc->description().toStdString(), calc->id() ) ); } } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RimSummaryCalculation* RifCalculatedSummaryCurveReader::findCalculationByName( const RifEclipseSummaryAddress& resultAddress ) const { if ( m_calculationCollection && resultAddress.category() == RifEclipseSummaryAddress::SUMMARY_CALCULATED ) { return dynamic_cast( m_calculationCollection->findCalculationById( resultAddress.id() ) ); } return nullptr; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RiaDefines::EclipseUnitSystem RifCalculatedSummaryCurveReader::unitSystem() const { return RiaDefines::EclipseUnitSystem::UNITS_UNKNOWN; }