/* Copyright (c) 2018 Statoil 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 OPM_AGGREGATE_UDQ_DATA_HPP #define OPM_AGGREGATE_UDQ_DATA_HPP #include #include #include #include #include #include namespace Opm { class Schedule; class UDQInput; class UDQActive; class UDQState; } // Opm namespace Opm { namespace RestartIO { namespace Helpers { class igphData { public: const std::vector ig_phase(const Opm::Schedule& sched, const std::size_t simStep, const std::vector& inteHead); }; class AggregateUDQData { public: explicit AggregateUDQData(const std::vector& udqDims); void captureDeclaredUDQData(const Opm::Schedule& sched, const std::size_t simStep, const Opm::UDQState& udqState, const std::vector& inteHead); const std::vector& getIUDQ() const { return this->iUDQ_.data(); } const std::vector& getIUAD() const { return this->iUAD_.data(); } const std::vector>& getZUDN() const { return this->zUDN_.data(); } const std::vector>& getZUDL() const { return this->zUDL_.data(); } const std::vector& getIGPH() const { return this->iGPH_.data(); } const std::vector& getIUAP() const { return this->iUAP_.data(); } const std::vector& getDUDW() const { return this->dUDW_.data(); } const std::vector& getDUDG() const { return this->dUDG_.data(); } const std::vector& getDUDF() const { return this->dUDF_.data(); } private: /// Aggregate 'IUDQ' array (Integer) for all UDQ data (3 integers pr UDQ) WindowedArray iUDQ_; /// Aggregate 'IUAD' array (Integer) for all UDQ data (5 integers pr UDQ that is used for various well and group controls) WindowedArray iUAD_; /// Aggregate 'ZUDN' array (Character) for all UDQ data. (2 * 8 chars pr UDQ -> UNIT keyword) WindowedArray> zUDN_; /// Aggregate 'ZUDL' array (Character) for all UDQ data. (16 * 8 chars pr UDQ DEFINE "Data for operation - Msth Expression) WindowedArray> zUDL_; /// Aggregate 'IGPH' array (Integer) for all UDQ data (3 - zeroes - as of current understanding) WindowedArray iGPH_; /// Aggregate 'IUAP' array (ICharArrayNullTermnteger) for all UDQ data (1 integer pr UDQ constraint used) WindowedArray iUAP_; /// Aggregate 'DUDW' array (Double Precision) for all UDQ data. (Dimension = max no wells * noOfUDQ's) WindowedArray dUDW_; /// Aggregate 'DUDG' array (Double Precision) for all UDQ data. (Dimension = (max no groups + 1) * noOfUDQ's) WindowedArray dUDG_; /// Aggregate 'DUDF' array (Double Precision) for all UDQ data. (Dimension = Number of FU - UDQ's, with value equal to the actual constraint) WindowedArray dUDF_; }; }}} // Opm::RestartIO::Helpers #endif //OPM_AGGREGATE_WELL_DATA_HPP