GConSale.hpp
Go to the documentation of this file.
1/*
2 Copyright 2019 Equinor ASA.
3
4 This file is part of the Open Porous Media project (OPM).
5
6 OPM is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
10
11 OPM is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with OPM. If not, see <http://www.gnu.org/licenses/>.
18*/
19
20#ifndef GCONSALE_H
21#define GCONSALE_H
22
23#include <map>
24#include <string>
25
29
30namespace Opm {
31
32 class GConSale {
33 public:
34
35 enum class MaxProcedure {
36 NONE, CON, CON_P, WELL, PLUG, RATE, MAXR, END
37 };
38
46
47 bool operator==(const GCONSALEGroup& data) const {
48 return sales_target == data.sales_target &&
49 max_sales_rate == data.max_sales_rate &&
50 min_sales_rate == data.min_sales_rate &&
51 max_proc == data.max_proc &&
52 udq_undefined == data.udq_undefined &&
53 unit_system == data.unit_system;
54 }
55
56 template<class Serializer>
57 void serializeOp(Serializer& serializer)
58 {
59 sales_target.serializeOp(serializer);
60 max_sales_rate.serializeOp(serializer);
61 min_sales_rate.serializeOp(serializer);
62 serializer(max_proc);
63 serializer(udq_undefined);
64 unit_system.serializeOp(serializer);
65 }
66 };
67
73 };
74
76
77 bool has(const std::string& name) const;
78 const GCONSALEGroup& get(const std::string& name) const;
79 const GCONSALEGroupProp get(const std::string& name, const SummaryState& st) const;
80 static MaxProcedure stringToProcedure(const std::string& procedure);
81 void add(const std::string& name, const UDAValue& sales_target, const UDAValue& max_rate, const UDAValue& min_rate, const std::string& procedure, double udq_undefined_arg, const UnitSystem& unit_system);
82 size_t size() const;
83
84 bool operator==(const GConSale& data) const;
85
86 template<class Serializer>
87 void serializeOp(Serializer& serializer)
88 {
89 serializer.map(groups);
90 }
91
92 private:
93 std::map<std::string, GCONSALEGroup> groups;
94 };
95
96}
97
98
99#endif
const char *const name
Definition: cJSON.h:258
const char *const string
Definition: cJSON.h:170
Definition: GConSale.hpp:32
void add(const std::string &name, const UDAValue &sales_target, const UDAValue &max_rate, const UDAValue &min_rate, const std::string &procedure, double udq_undefined_arg, const UnitSystem &unit_system)
bool operator==(const GConSale &data) const
const GCONSALEGroupProp get(const std::string &name, const SummaryState &st) const
MaxProcedure
Definition: GConSale.hpp:35
static GConSale serializeObject()
static MaxProcedure stringToProcedure(const std::string &procedure)
void serializeOp(Serializer &serializer)
Definition: GConSale.hpp:87
bool has(const std::string &name) const
const GCONSALEGroup & get(const std::string &name) const
size_t size() const
Definition: Serializer.hpp:38
Definition: SummaryState.hpp:65
Definition: UDAValue.hpp:32
void serializeOp(Serializer &serializer)
Definition: UDAValue.hpp:72
Definition: UnitSystem.hpp:32
void serializeOp(Serializer &serializer)
Definition: UnitSystem.hpp:121
Definition: A.hpp:4
static std::string data()
Definition: exprtk.hpp:40022
Definition: GConSale.hpp:39
UnitSystem unit_system
Definition: GConSale.hpp:45
UDAValue sales_target
Definition: GConSale.hpp:40
UDAValue min_sales_rate
Definition: GConSale.hpp:42
bool operator==(const GCONSALEGroup &data) const
Definition: GConSale.hpp:47
void serializeOp(Serializer &serializer)
Definition: GConSale.hpp:57
UDAValue max_sales_rate
Definition: GConSale.hpp:41
MaxProcedure max_proc
Definition: GConSale.hpp:43
double udq_undefined
Definition: GConSale.hpp:44
Definition: GConSale.hpp:68
double max_sales_rate
Definition: GConSale.hpp:70
MaxProcedure max_proc
Definition: GConSale.hpp:72
double sales_target
Definition: GConSale.hpp:69
double min_sales_rate
Definition: GConSale.hpp:71