///////////////////////////////////////////////////////////////////////////////// // // 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 "RiaDefines.h" #include "RiaRftPltCurveDefinition.h" #include "RifEclipseRftAddress.h" #include "RimWellLogLasFile.h" #include #include class RimEclipseCase; class RimEclipseResultCase; class RimObservedFmuRftData; class RimSummaryEnsemble; class RimWellLogCurve; class RimWellLogChannel; class RimWellLogPlot; class RimWellPath; class RimPressureDepthData; class RiuWellRftPlot; class RigEclipseCaseData; class RigEclipseResultAddress; class RifReaderRftInterface; namespace RimWellPlotTools { enum class FlowType { FLOW_TYPE_PHASE_SPLIT, FLOW_TYPE_TOTAL }; enum class FlowPhase { FLOW_PHASE_NONE, FLOW_PHASE_OIL, FLOW_PHASE_GAS, FLOW_PHASE_WATER, FLOW_PHASE_TOTAL }; bool isOilFlowChannel( const QString& channelName ); bool isGasFlowChannel( const QString& channelName ); bool isWaterFlowChannel( const QString& channelName ); bool isTotalFlowChannel( const QString& channelName ); FlowPhase flowPhaseFromChannelName( const QString& channelName ); std::vector wellLogFilesContainingFlow( const QString& wellName ); RimWellPath* wellPathByWellPathNameOrSimWellName( const QString& wellPathNameOrSimwellName ); std::vector wellPathsContainingFlow(); void addTimeStepsToMap( std::map>& destMap, const std::map>& timeStepsToAdd ); std::vector wellLogFilesContainingPressure( const QString& wellPathNameOrSimWellName ); RimWellLogChannel* getPressureChannelFromWellFile( const RimWellLogFile* wellLogFile ); RimWellPath* wellPathFromWellLogFile( const RimWellLogFile* wellLogFile ); std::map> timeStepsMapFromGridCase( RimEclipseCase* gridCase ); RiaRftPltCurveDefinition curveDefFromCurve( const RimWellLogCurve* curve ); bool hasFlowData( const RimWellLog* wellLog ); bool hasAssociatedWellPath( const QString& wellName ); std::vector gridCasesForWell( const QString& simWellName ); std::vector rftCasesForWell( const QString& simWellName ); std::vector rftEnsemblesForWell( const QString& simWellName ); std::vector rftEnsembles(); std::vector observedFmuRftDataForWell( const QString& simWellName ); std::vector observedFmuRftData(); QString simWellName( const QString& wellPathNameOrSimWellName ); std::map> calculateRelevantTimeStepsFromCases( const QString& wellPathNameOrSimWellName, const std::vector& selSources, const std::set& interestingRFTResults ); void calculateValueOptionsForTimeSteps( const QString& wellPathNameOrSimWellName, const std::vector& selSources, const std::set& interestingRFTResults, QList& options ); std::set curveDefsFromTimesteps( const QString& wellPathNameOrSimWellName, const std::vector& selectedTimeStepVector, bool firstReportTimeStepIsValid, const std::vector& selectedSourcesExpanded, const std::set& interestingRFTResults ); QString flowPlotAxisTitle( RimWellLogLasFile::WellFlowCondition condition, RiaDefines::EclipseUnitSystem unitSystem ); QString flowUnitText( RimWellLogLasFile::WellFlowCondition condition, RiaDefines::EclipseUnitSystem unitSystem ); QString flowVolumePlotAxisTitle( RimWellLogLasFile::WellFlowCondition condition, RiaDefines::EclipseUnitSystem unitSystem ); QString flowVolumeUnitText( RimWellLogLasFile::WellFlowCondition condition, RiaDefines::EclipseUnitSystem unitSystem ); QString curveUnitText( RimWellLogLasFile::WellFlowCondition condition, RiaDefines::EclipseUnitSystem unitSystem, FlowPhase flowPhase ); bool hasFlowData( const RimWellPath* wellPath ); std::vector pressureDepthData(); std::vector pressureDepthDataForWell( const QString& simWellName ); }; // namespace RimWellPlotTools