opm-common
Toggle main menu visibility
Loading...
Searching...
No Matches
Aquifetp.hpp
1
/*
2
Copyright (C) 2017 TNO
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_AQUIFERFETP_HPP
21
#define OPM_AQUIFERFETP_HPP
22
23
/*
24
The Aquiferfetp which stands for AquiferFetkovich is a data container object meant to hold the data for the fetkovich aquifer model.
25
This includes the logic for parsing as well as the associated tables. It is meant to be used by opm-grid and opm-simulators in order to
26
implement the Fetkovich analytical aquifer model in OPM Flow.
27
*/
28
29
#include <cstddef>
30
#include <optional>
31
#include <vector>
32
33
namespace
Opm
{
34
class
Deck
;
35
class
DeckRecord
;
36
class
TableManager
;
37
}
38
39
namespace
Opm
{
namespace
RestartIO {
40
class
RstAquifer
;
41
}}
// Opm::RestartIO
42
43
namespace
Opm
{
44
45
class
Aquifetp {
46
public
:
47
48
struct
AQUFETP_data
49
{
50
friend
class
Aquifetp;
51
52
AQUFETP_data() =
default
;
53
AQUFETP_data(
const
DeckRecord
& record,
const
TableManager
& tables);
54
AQUFETP_data(
const
int
aquiferID_,
55
const
int
pvttableID_,
56
const
double
J_,
57
const
double
C_t_,
58
const
double
V0_,
59
const
double
d0_,
60
const
double
p0_,
61
const
double
t0_);
62
63
int
aquiferID{};
64
int
pvttableID{};
65
66
double
prod_index{};
67
double
total_compr{};
68
double
initial_watvolume{};
69
double
datum_depth{};
70
71
std::optional<double> initial_pressure{};
72
std::optional<double> initial_temperature{};
73
74
static
AQUFETP_data serializationTestObject();
75
76
double
timeConstant()
const
{
return
this->time_constant_; }
77
double
waterDensity()
const
{
return
this->water_density_; }
78
double
waterViscosity()
const
{
return
this->water_viscosity_; }
79
80
bool
operator==(
const
AQUFETP_data& other)
const
;
81
82
void
finishInitialisation(
const
TableManager
& tables);
83
84
template
<
class
Serializer>
85
void
serializeOp(
Serializer
& serializer)
86
{
87
serializer(this->aquiferID);
88
serializer(this->pvttableID);
89
serializer(this->prod_index);
90
serializer(this->total_compr);
91
serializer(this->initial_watvolume);
92
serializer(this->datum_depth);
93
serializer(this->initial_pressure);
94
serializer(this->initial_temperature);
95
serializer(this->time_constant_);
96
serializer(this->water_density_);
97
serializer(this->water_viscosity_);
98
}
99
100
private
:
101
double
time_constant_{};
102
double
water_density_{};
103
double
water_viscosity_{};
104
};
105
106
Aquifetp() =
default
;
107
Aquifetp(
const
TableManager
& tables,
const
Deck
& deck);
108
explicit
Aquifetp(
const
std::vector<Aquifetp::AQUFETP_data>& data);
109
110
void
loadFromRestart(
const
RestartIO::RstAquifer
& rst,
111
const
TableManager
& tables);
112
113
static
Aquifetp serializationTestObject();
114
115
const
std::vector<Aquifetp::AQUFETP_data>& data()
const
;
116
117
std::size_t size()
const
;
118
std::vector<Aquifetp::AQUFETP_data>::const_iterator begin()
const
;
119
std::vector<Aquifetp::AQUFETP_data>::const_iterator end()
const
;
120
bool
operator==(
const
Aquifetp& other)
const
;
121
122
bool
hasAquifer(
const
int
aquID)
const
;
123
124
template
<
class
Serializer>
125
void
serializeOp(
Serializer
& serializer)
126
{
127
serializer(m_aqufetp);
128
}
129
130
private
:
131
std::vector<Aquifetp::AQUFETP_data> m_aqufetp;
132
};
133
}
134
135
136
#endif
Opm::DeckRecord
Definition
DeckRecord.hpp:32
Opm::Deck
Definition
Deck.hpp:46
Opm::RestartIO::RstAquifer
Definition
aquifer.hpp:45
Opm::Serializer
Class for (de-)serializing.
Definition
Serializer.hpp:94
Opm::TableManager
Definition
TableManager.hpp:66
Opm
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition
Exceptions.hpp:30
opm
input
eclipse
EclipseState
Aquifer
Aquifetp.hpp
Generated by
1.17.0