/* Copyright 2019 Equinor ASA. This file is part of the Open Porous Media project (OPM). OPM 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. OPM 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 for more details. You should have received a copy of the GNU General Public License along with OPM. If not, see . */ #ifndef RFT_CONFIG_HPP #define RFT_CONFIG_HPP #include #include #include #include #include namespace Opm { class TimeMap; class RFTConfig { public: explicit RFTConfig(const TimeMap& time_map); bool rft(const std::string& well, std::size_t report_step) const; bool plt(const std::string& well, std::size_t report_step) const; bool getWellOpenRFT(const std::string& well_name, std::size_t report_step) const; void setWellOpenRFT(std::size_t report_step); void setWellOpenRFT(const std::string& well_name); bool active(std::size_t report_step) const; std::size_t firstRFTOutput() const; void updateRFT(const std::string& well, std::size_t report_step, RFTConnections::RFTEnum value); void updatePLT(const std::string& well, std::size_t report_step, PLTConnections::PLTEnum value); void addWellOpen(const std::string& well, std::size_t report_step); private: const TimeMap& tm; std::pair well_open_rft_time; std::unordered_set well_open_rft_name; std::unordered_map well_open; std::unordered_map>> rft_config; std::unordered_map>> plt_config; }; } #endif