My Project
Loading...
Searching...
No Matches
FromWSEG.hpp
1/*
2 Copyright 2020 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
21#ifndef FROM_WSEG_HPP
22#define FROM_WSEG_HPP
23
24#include <opm/input/eclipse/Deck/DeckKeyword.hpp>
25
26#include <map>
27#include <string>
28#include <vector>
29
30namespace Opm {
31
32template<class ICD>
33std::map<std::string, std::vector<std::pair<int, ICD> > >
34fromWSEG(const DeckKeyword& wseg) {
35 std::map<std::string, std::vector<std::pair<int, ICD> > > res;
36
37 for (const DeckRecord &record : wseg) {
38 const std::string well_name = record.getItem("WELL").getTrimmedString(0);
39
40 const int start_segment = record.getItem("SEGMENT1").get<int>(0);
41 const int end_segment = record.getItem("SEGMENT2").get<int>(0);
42
43 if (start_segment < 2 || end_segment < 2 || end_segment < start_segment) {
44 const std::string message = "Segment numbers " + std::to_string(start_segment) + " and "
45 + std::to_string(end_segment) + " specified in WSEGSICD for well " +
46 well_name
47 + " are illegal ";
48 throw std::invalid_argument(message);
49 }
50
51 const ICD spiral_icd(record);
52 for (int seg = start_segment; seg <= end_segment; seg++) {
53 res[well_name].push_back(std::make_pair(seg, spiral_icd));
54 }
55 }
56 return res;
57}
58
59}
60
61#endif
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition Exceptions.hpp:30