///////////////////////////////////////////////////////////////////////////////// // // 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 "RigNncConnection.h" #include #include #include #include class RimEclipseCase; class RigMainGrid; //================================================================================================== /// //================================================================================================== class RigNumberOfFloodedPoreVolumesCalculator { public: explicit RigNumberOfFloodedPoreVolumesCalculator( RimEclipseCase* caseToApply, const std::vector& tracerNames ); // Used to "steal" the data from this one using swap std::vector>& numberOfFloodedPorevolumes(); private: void calculate( RigMainGrid* mainGrid, RimEclipseCase* caseToApply, std::vector daysSinceSimulationStart, const std::vector* porvResults, const std::vector* scwrResults, std::vector*> flowrateIatAllTimeSteps, std::vector*> flowrateJatAllTimeSteps, std::vector*> flowrateKatAllTimeSteps, const RigConnectionContainer& connections, std::vector*> flowrateNNCatAllTimeSteps, std::vector> summedTracersAtAllTimesteps ); void distributeNNCflow( const RigConnectionContainer& connections, RimEclipseCase* caseToApply, const std::vector& summedTracerValues, const std::vector* flowrateNNC, std::vector& flowrateIntoCell ); void distributeNeighbourCellFlow( RigMainGrid* mainGrid, RimEclipseCase* caseToApply, const std::vector& summedTracerValues, const std::vector* flrWatResultI, const std::vector* flrWatResultJ, const std::vector* flrWatResultK, std::vector& totalFlowrateIntoCell ); private: std::vector> m_cumWinflowPVAllTimeSteps; };