///////////////////////////////////////////////////////////////////////////////// // // 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 #include #include class RimEclipseCase; class RigMainGrid; class RigConnection; //================================================================================================== /// //================================================================================================== 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 std::vector connections, std::vector* > flowrateNNCatAllTimeSteps, std::vector > summedTracersAtAllTimesteps); void distributeNNCflow(std::vector connections, RimEclipseCase* caseToApply, std::vector summedTracerValues, const std::vector* flowrateNNC, std::vector &flowrateIntoCell); void distributeNeighbourCellFlow(RigMainGrid* mainGrid, RimEclipseCase* caseToApply, std::vector summedTracerValues, const std::vector* flrWatResultI, const std::vector* flrWatResultJ, const std::vector* flrWatResultK, std::vector &totalFlowrateIntoCell); private: std::vector> m_cumWinflowPVAllTimeSteps; };