opm-common
Toggle main menu visibility
Loading...
Searching...
No Matches
aquifer.hpp
1
/*
2
Copyright (c) 2021 Equinor ASA
3
Copyright (c) 2019 Equinor ASA
4
5
This file is part of the Open Porous Media project (OPM).
6
7
OPM is free software: you can redistribute it and/or modify
8
it under the terms of the GNU General Public License as published by
9
the Free Software Foundation, either version 3 of the License, or
10
(at your option) any later version.
11
12
OPM is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
GNU General Public License for more details.
16
17
You should have received a copy of the GNU General Public License
18
along with OPM. If not, see <http://www.gnu.org/licenses/>.
19
*/
20
21
#ifndef OPM_OUTPUT_ECLIPSE_VECTOR_AQUIFER_HPP
22
#define OPM_OUTPUT_ECLIPSE_VECTOR_AQUIFER_HPP
23
24
#include <vector>
25
26
namespace
Opm
{
namespace
RestartIO {
namespace
Helpers {
namespace
VectorItems {
27
28
namespace
IAnalyticAquifer {
29
enum
index : std::vector<int>::size_type {
30
NumAquiferConn = 0,
// Number of active aquifer connections for this aquifer
31
WatPropTable = 1,
// PVT number (ACUCT(10) or AQUFETP(7))
32
33
CTInfluenceFunction = 9,
// AQUCT(11)
34
TypeRelated1 = 10,
// =0 for FETP, =1 for CT, =2 for FLUX
35
36
Unknown_1 = 11,
// Unknown item. =1 in all cases seen thus far.
37
};
38
39
namespace
Value {
40
enum
ModelType :
int
{
41
Fetkovich = 0,
42
CarterTracy = 1,
43
ConstantFlux = 2,
44
};
45
}
// Value
46
}
// IAnalyticAquifer
47
48
namespace
IAnalyticAquiferConn {
49
enum
index : std::vector<int>::size_type {
50
Index_I = 0,
// One-based I index of connecting cell
51
Index_J = 1,
// One-based J index of connecting cell
52
Index_K = 2,
// One-based K index of connecting cell
53
ActiveIndex = 3,
// One-based columnar active index of connecting cell
54
FaceDirection = 4,
// Direction of connecting face
55
};
56
57
namespace
Value {
58
enum
FaceDirection {
59
IMinus = 1, IPlus = 2, JMinus = 3, JPlus = 4, KMinus = 5, KPlus = 6,
60
};
61
}
// Value
62
}
// IAnalyticAquiferConn
63
64
namespace
INumericAquifer {
65
enum
index : std::vector<int>::size_type {
66
AquiferID = 0,
// ID of numeric aquifer
67
Cell_I = 1,
// I coordinate of aquifer cell
68
Cell_J = 2,
// J coordinate of aquifer cell
69
Cell_K = 3,
// K coordinate of aquifer cell
70
PVTTableID = 4,
// PVT Table ID of numeric aquifer
71
SatFuncID = 5,
// Saturation function ID of numeric aquifer
72
};
73
}
// INumericAquifer
74
75
namespace
RNumericAquifer {
76
enum
index : std::vector<double>::size_type {
77
Area = 0,
// Aquifer inflow area, AQUNUM(5)
78
Length = 1,
// Aquifer length, AQUNUM(6)
79
Porosity = 2,
// Aquifer porosity, AQUNUM(7)
80
Permeability = 3,
// Aquifer permeability, AQUNUM(8)
81
Depth = 4,
// Aquifer depth, AQUNUM(9)
82
Pressure = 5,
// Aquifer pressure, AQUNUM(10)
83
84
Unknown_1 = 6,
// Unknown item, = 1.0
85
Unknown_2 = 7,
// Unknown item, = 1.0
86
Unknown_3 = 8,
// Unknown item, = 1.0
87
88
PoreVolume = 9,
// Total aquifer pore-volume (= Area * Length * Porosity)
89
90
FlowRate = 10,
// Aquifer inflow rate (ANQR:N)
91
ProdVolume = 11,
// Total liquid volume produced from aquifer (AQNT:N)
92
DynPressure = 12,
// Dynamic aquifer pressure (ANQP:N)
93
};
94
}
// RNumericAquifer
95
96
namespace
SAnalyticAquifer {
97
enum
index : std::vector<float>::size_type {
98
Compressibility = 0,
// Total aquifer compressibility (AQUCT(6), AQUFETP(5))
99
100
ConstFluxValue = 0,
// Constant flux aquifer's flux value (AQUFLUX(2))
101
102
FetInitVol = 1,
// Initial aquifer volume (AQUFETP(4))
103
FetProdIndex = 2,
// Aquifer productivity index (AQUFETP(6))
104
FetTimeConstant = 3,
// Fetkovich Aquifer time constant (Compressibility * InitVol / ProdIndex)
105
106
CTRadius = 1,
// CT aquifer external radius (AQUCT(7))
107
CTPermeability = 2,
// CT aquifer permeability (AQUCT(4))
108
CTPorosity = 3,
// CT aquifer porosity (AQUCT(5))
109
110
InitPressure = 4,
// Initial aquifer pressure (AQUCT(3), AQUFETP(3))
111
DatumDepth = 5,
// Aquifer datum depth (AQUCT(2), AQUFETP(2))
112
113
CTThickness = 6,
// CT aquifer thickness (AQUCT(8))
114
CTAngle = 7,
// CT aquifer angle of influence (AQUCT(9) / 360.0)
115
CTWatMassDensity = 8,
// Water density at reservoir conditions
116
CTWatViscosity = 9,
// Water viscosity at reservoir conditions
117
};
118
}
// SAnalyticAquifer
119
120
namespace
SAnalyticAquiferConn {
121
enum
index : std::vector<float>::size_type {
122
InfluxFraction = 0,
// Connection's fraction of total aquifer influx coefficient
123
FaceAreaToInfluxCoeff = 1,
// Connection's effective face area divided by aquifer's total influx coefficient
124
};
125
}
// SAnalyticAquiferConn
126
127
namespace
XAnalyticAquifer {
128
enum
index : std::vector<double>::size_type {
129
FlowRate = 0,
// Aquifer rate (AAQR:N)
130
Pressure = 1,
// Dynamic aquifer pressure (AAQP:N)
131
ProdVolume = 2,
// Liquid volume produced from aquifer (into reservoir, AAQT:N)
132
TotalInfluxCoeff = 3,
// Total aquifer influx coefficient across all aquifer connections
133
134
CTRecipTimeConst = 4,
// Reciprocal time constant for CT aquifer
135
CTInfluxConstant = 5,
// Influx constant "beta" for CT aquifer
136
137
CTDimensionLessTime = 8,
// Dimensionless time for CT aquifer (AAQTD:N)
138
CTDimensionLessPressure = 9,
// Dimensionless pressure for CT aquifer (AAQPD:N)
139
};
140
}
// XAnalyticAquifer
141
142
}}}}
// Opm::RestartIO::Helpers::VectorItems
143
144
#endif
// OPM_OUTPUT_ECLIPSE_VECTOR_AQUIFER_HPP
Opm
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition
Exceptions.hpp:30
opm
output
eclipse
VectorItems
aquifer.hpp
Generated by
1.17.0