My Project
Loading...
Searching...
No Matches
doubhead.hpp
1/*
2 Copyright (c) 2018 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 OPM_OUTPUT_ECLIPSE_VECTOR_DOUBHEAD_HPP
21#define OPM_OUTPUT_ECLIPSE_VECTOR_DOUBHEAD_HPP
22
23#include <vector>
24#include <cmath>
25
26namespace Opm { namespace RestartIO { namespace Helpers { namespace VectorItems {
27
28 // This is a subset of the items in src/opm/output/eclipse/DoubHEAD.cpp .
29 // Promote items from that list to this in order to make them public.
30 enum doubhead : std::vector<double>::size_type {
31 TsInit = 1, // Maximum Length of Next Timestep
32 TsMaxz = 2, // Maximum Length of Timestep After Next
33 TsMinz = 3, // Minumum Length of All Timesteps
34 TsMchp = 4,
35 TsFMax = 5,
36 TsFMin = 6,
37 TsFcnv = 7,
38 TrgTTE = 8,
39 TrgCNV = 9,
40 TrgMBE = 10,
41 TrgLCV = 11,
42 XxxTTE = 16,
43 XxxCNV = 17,
44 XxxMBE = 18,
45 XxxLCV = 19,
46 XxxWFL = 20,
47
48 Netbalthpc = 50, // Network balancing THP convergence limit (NETBALAN(4))
49 Netbalint = 51, // Network balancing interval (NETBALAN(1))
50 Netbalnpre = 53, // Network balancing nodal pressure
51 // convergence limit (NETBALAN(2))
52
53 Netbaltarerr = 63, // Target largest branch network balancing
54 // error at end of timestep (NETBALAN(6))
55
56 Netbalmaxerr = 64, // Maximum permitted network balancing error
57 // at end of timestep (NETBALAN(7))
58
59 Netbalstepsz = 66, // Minimum stepsize for steps limited by
60 // network balancing errors (NETBALAN(8))
61
62 TrgDPR = 82,
63 TfDiff = 83,
64 DdpLim = 84,
65 DdsLim = 85,
66 GRpar_a = 87, // Guiderate parameter A
67 GRpar_b = 88, // Guiderate parameter B
68 GRpar_c = 89, // Guiderate parameter C
69 GRpar_d = 90, // Guiderate parameter D
70 GRpar_e = 91, // Guiderate parameter E
71 GRpar_f = 92, // Guiderate parameter F
72 LOminInt = 93, // LIFTOP - Minimum interval between gas lift optimizations
73 LOincrsz = 95, // LIFTOPT - Increment size for lift gas injection rate
74 LOminEcGrad = 96, // LIFTOPT - Minimum economic gradient
75 GRpar_int = 97, // Guiderate parameter delay interval
76 ThrUPT = 99,
77 XxxDPR = 100,
78 TrgFIP = 101,
79 TrgSFT = 102,
80 GRpar_damp = 144, // Guiderate parameter damping factor
81 WsegRedFac = 145, // WSEGITER parameter (item 3) Reduction factor (F_R)
82 WsegIncFac = 146, // WSEGITER parameter (item 4) Increas factor (F_I)
83 UdqPar_2 = 212, // UDQPARAM item number 2 (Permitted range (+/-) of user-defined quantities)
84 UdqPar_3 = 213, // UDQPARAM item number 3 (Value given to undefined elements when outputting data)
85 UdqPar_4 = 214, // UDQPARAM item number 4 (fractional equality tolerance used in ==, <= etc. functions)
86 };
87
88 namespace DoubHeadValue {
89 // Default if no active network (BRANPROP/NODEPROP)
90 constexpr auto NetBalNodPressDefault = 0.0; // Barsa
91
92 // Default => Use TSMINZ from TUNING
93 constexpr auto NetBalMinTSDefault = 0.0;
94
95 // Default => Let Simulator choose TSINIT
96 constexpr auto TSINITNoValue = 1.00000011;
97 inline bool TSINITHasNoValue(const double value) {
98 return std::abs(value - TSINITNoValue) < 1.0e-7;
99 }
100 }
101
102}}}} // Opm::RestartIO::Helpers::VectorItems
103
104#endif // OPM_OUTPUT_ECLIPSE_VECTOR_DOUBHEAD_HPP
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition Exceptions.hpp:30