opm-common
Toggle main menu visibility
Loading...
Searching...
No Matches
Co2StoreConfig.hpp
1
/*
2
Copyright 2024 Norce.
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
#ifndef OPM_PARSER_CO2STORECONFIG_HPP
20
#define OPM_PARSER_CO2STORECONFIG_HPP
21
22
#include <cstddef>
23
#include <vector>
24
#include <string>
25
#include <map>
26
27
#include <opm/input/eclipse/EclipseState/Tables/EzrokhiTable.hpp>
28
29
namespace
Opm
{
30
31
class
Deck
;
32
33
class
Co2StoreConfig {
34
public
:
35
36
enum class
SaltMixingType {
37
NONE,
// Pure water
38
MICHAELIDES,
// MICHAELIDES 1971 (default)
39
};
40
41
enum class
LiquidMixingType {
42
NONE,
// Pure water
43
IDEAL,
// Ideal mixing
44
DUANSUN,
// Add heat of dissolution for CO2 according to Fig. 6 in Duan and Sun 2003. (kJ/kg) (default)
45
};
46
47
enum class
GasMixingType {
48
NONE,
// Pure co2 (default)
49
IDEAL,
// Ideal mixing
50
};
51
52
Co2StoreConfig();
53
54
explicit
Co2StoreConfig(
const
Deck
& deck);
55
56
const
std::vector<EzrokhiTable>& getDenaqaTables()
const
;
57
const
std::vector<EzrokhiTable>& getViscaqaTables()
const
;
58
59
double
salinity
()
const
;
60
int
actco2s()
const
;
61
62
template
<
class
Serializer>
63
void
serializeOp(
Serializer
& serializer)
64
{
65
serializer(brine_type);
66
serializer(liquid_type);
67
serializer(gas_type);
68
serializer(cnames);
69
serializer(denaqa_tables);
70
serializer(viscaqa_tables);
71
serializer(salt);
72
serializer(activityModel);
73
}
74
bool
operator==(
const
Co2StoreConfig& other)
const
;
75
76
SaltMixingType brine_type;
77
LiquidMixingType liquid_type;
78
GasMixingType gas_type;
79
80
private
:
81
82
SaltMixingType string2enumSalt(
const
std::string& input)
const
;
83
LiquidMixingType string2enumLiquid(
const
std::string& input)
const
;
84
GasMixingType string2enumGas(
const
std::string& input)
const
;
85
86
std::map<std::string, int> cnames;
87
std::vector<EzrokhiTable> denaqa_tables;
88
std::vector<EzrokhiTable> viscaqa_tables;
89
double
salt {0.0};
90
static
constexpr
double
MmNaCl = 58.44e-3;
91
static
constexpr
double
MmH2O = 18e-3;
92
int
activityModel {3};
93
};
94
}
95
96
#endif
// OPM_PARSER_CO2STORECONFIG_HPP
Opm::Deck
Definition
Deck.hpp:46
Opm::Serializer
Class for (de-)serializing.
Definition
Serializer.hpp:94
Opm
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition
Exceptions.hpp:30
Opm::salinity
Scalar Brine< Scalar, H2O >::salinity
Default value for the salinity of the brine (dimensionless).
Definition
Brine.hpp:391
opm
input
eclipse
EclipseState
Co2StoreConfig.hpp
Generated by
1.17.0