///////////////////////////////////////////////////////////////////////////////// // // Copyright (C) 2024- Equinor 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 "RigEclipseResultCalculator.h" class RigCaseCellResultsData; class RigEclipseResultAddress; //================================================================================================== /// //================================================================================================== class RigPorvSoilSgasResultCalculator : public RigEclipseResultCalculator { public: RigPorvSoilSgasResultCalculator( RigCaseCellResultsData& resultsData ); ~RigPorvSoilSgasResultCalculator() override; bool isMatching( const RigEclipseResultAddress& resVarAddr ) const override; void calculate( const RigEclipseResultAddress& resVarAddr, size_t timeStepIndex ) override; private: void calculateProduct( const RigEclipseResultAddress& in1Addr, const RigEclipseResultAddress& in2Addr, const RigEclipseResultAddress& outAddr ); void calculateSum( const RigEclipseResultAddress& in1Addr, const RigEclipseResultAddress& in2Addr, const RigEclipseResultAddress& outAddr ); void calculate( const RigEclipseResultAddress& in1Addr, const RigEclipseResultAddress& in2Addr, const RigEclipseResultAddress& outAddr, std::function operation ); };