FoamConfig.hpp
Go to the documentation of this file.
1/*
2 Copyright 2019 SINTEF Digital, Mathematics and Cybernetics.
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 OPM_FOAMCONFIG_HPP
21#define OPM_FOAMCONFIG_HPP
22
24
25#include <cstddef>
26#include <vector>
27
28namespace Opm
29{
30
31class Deck;
32class DeckRecord;
33
36{
37public:
39 FoamData(const DeckRecord& FOAMFSC_record, const DeckRecord& FOAMROCK_record);
40 explicit FoamData(const DeckRecord& FOAMROCK_record);
41
43
45 double exponent() const;
47
48 bool allowDesorption() const;
49 double rockDensity() const;
50
51 bool operator==(const FoamData& data) const;
52
53 template<class Serializer>
54 void serializeOp(Serializer& serializer)
55 {
56 serializer(reference_surfactant_concentration_);
57 serializer(exponent_);
58 serializer(minimum_surfactant_concentration_);
59 serializer(allow_desorption_);
60 serializer(rock_density_);
61 }
62
63private:
64 double reference_surfactant_concentration_;
65 double exponent_;
66 double minimum_surfactant_concentration_;
67 bool allow_desorption_;
68 double rock_density_;
69};
70
73{
74public:
75 enum class MobilityModel {
76 TAB,
77 FUNC
78 };
79
80 FoamConfig() = default;
81 explicit FoamConfig(const Deck&);
82
84
85 const FoamData& getRecord(std::size_t index) const;
86
89
90 std::size_t size() const;
91 bool empty() const;
92
93 using const_iterator = std::vector<FoamData>::const_iterator;
96
97 bool operator==(const FoamConfig& data) const;
98
99 template<class Serializer>
100 void serializeOp(Serializer& serializer)
101 {
102 serializer.vector(data_);
103 serializer(transport_phase_);
104 serializer(mobility_model_);
105 }
106
107private:
108 std::vector<FoamData> data_;
109 Phase transport_phase_ = Phase::GAS;
110 MobilityModel mobility_model_ = MobilityModel::TAB;
111};
112
113} // end namespace Opm
114
115#endif // OPM_FOAMCONFIG_HPP
int index
Definition: cJSON.h:168
Definition: Deck.hpp:115
Definition: DeckRecord.hpp:32
Foam behaviour data for all SATNUM regions.
Definition: FoamConfig.hpp:73
const_iterator end() const
bool operator==(const FoamConfig &data) const
Opm::Phase getTransportPhase() const
FoamConfig()=default
static FoamConfig serializeObject()
FoamConfig(const Deck &)
std::size_t size() const
bool empty() const
const FoamData & getRecord(std::size_t index) const
MobilityModel getMobilityModel() const
const_iterator begin() const
void serializeOp(Serializer &serializer)
Definition: FoamConfig.hpp:100
MobilityModel
Definition: FoamConfig.hpp:75
std::vector< FoamData >::const_iterator const_iterator
Definition: FoamConfig.hpp:93
Foam behaviour data for a single SATNUM region.
Definition: FoamConfig.hpp:36
bool allowDesorption() const
double minimumSurfactantConcentration() const
double exponent() const
FoamData(const DeckRecord &FOAMFSC_record, const DeckRecord &FOAMROCK_record)
bool operator==(const FoamData &data) const
double referenceSurfactantConcentration() const
FoamData(const DeckRecord &FOAMROCK_record)
double rockDensity() const
void serializeOp(Serializer &serializer)
Definition: FoamConfig.hpp:54
static FoamData serializeObject()
Definition: Serializer.hpp:38
Definition: A.hpp:4
Phase
Definition: Runspec.hpp:34
static std::string data()
Definition: exprtk.hpp:40022