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 dRsDt = 25,
49
50 Netbalthpc = 50, // Network balancing THP convergence limit (NETBALAN(4))
51 Netbalint = 51, // Network balancing interval (NETBALAN(1))
52 Netbalnpre = 53, // Network balancing nodal pressure
53 // convergence limit (NETBALAN(2))
54
55 Netbaltarerr = 63, // Target largest branch network balancing
56 // error at end of timestep (NETBALAN(6))
57
58 Netbalmaxerr = 64, // Maximum permitted network balancing error
59 // at end of timestep (NETBALAN(7))
60
61 Netbalstepsz = 66, // Minimum stepsize for steps limited by
62 // network balancing errors (NETBALAN(8))
63
64 TrgDPR = 82,
65 TfDiff = 83,
66 DdpLim = 84,
67 DdsLim = 85,
68 GRpar_a = 87, // Guiderate parameter A
69 GRpar_b = 88, // Guiderate parameter B
70 GRpar_c = 89, // Guiderate parameter C
71 GRpar_d = 90, // Guiderate parameter D
72 GRpar_e = 91, // Guiderate parameter E
73 GRpar_f = 92, // Guiderate parameter F
74 LOminInt = 93, // LIFTOP - Minimum interval between gas lift optimizations
75 LOincrsz = 95, // LIFTOPT - Increment size for lift gas injection rate
76 LOminEcGrad = 96, // LIFTOPT - Minimum economic gradient
77 GRpar_int = 97, // Guiderate parameter delay interval
78 ThrUPT = 99,
79 XxxDPR = 100,
80 TrgFIP = 101,
81 TrgSFT = 102,
82 GRpar_damp = 144, // Guiderate parameter damping factor
83 WsegRedFac = 145, // WSEGITER parameter (item 3) Reduction factor (F_R)
84 WsegIncFac = 146, // WSEGITER parameter (item 4) Increas factor (F_I)
85 UdqPar_2 = 212, // UDQPARAM item number 2 (Permitted range (+/-) of user-defined quantities)
86 UdqPar_3 = 213, // UDQPARAM item number 3 (Value given to undefined elements when outputting data)
87 UdqPar_4 = 214, // UDQPARAM item number 4 (fractional equality tolerance used in ==, <= etc. functions)
88 };
89
90 namespace DoubHeadValue {
91 // Default if no active network (BRANPROP/NODEPROP)
92 constexpr auto NetBalNodPressDefault = 0.0; // Barsa
93
94 // Default => Use TSMINZ from TUNING
95 constexpr auto NetBalMinTSDefault = 0.0;
96
97 // Default => Let Simulator choose TSINIT
98 constexpr auto TSINITNoValue = 1.00000011;
99 inline bool TSINITHasNoValue(const double value) {
100 return std::abs(value - TSINITNoValue) < 1.0e-7;
101 }
102 }
103
104}}}} // Opm::RestartIO::Helpers::VectorItems
105
106#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