Compsegs.hpp
Go to the documentation of this file.
1/*
2 Copyright 2015 SINTEF ICT, Applied Mathematics.
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 COMPSEGS_HPP_
22#define COMPSEGS_HPP_
23
24#include <memory>
25#include <string>
26
30
31namespace Opm {
32
33 class WellConnections;
34 class DeckKeyword;
35 class WellSegments;
36 class EclipseGrid;
37
38 struct Compsegs {
39 int m_i;
40 int m_j;
41 int m_k;
42 // the branch number on the main stem is always 1.
43 // lateral branches should be numbered bigger than 1.
44 // a suboridnate branch must have a higher branch number than parent branch.
49
51 // we do not handle thermal length for the moment
52 // double m_thermal_length;
54 std::size_t m_seqIndex;
55
56 Compsegs(int i_in, int j_in, int k_in, int branch_number_in, double distance_start_in, double distance_end_in,
57 Connection::Direction dir_in, double center_depth_in, int segment_number_in, std::size_t seqIndex_in);
58
60
61 static std::vector< Compsegs > compsegsFromCOMPSEGSKeyword(const DeckKeyword& compsegsKeyword, const EclipseGrid& grid,
62 const ParseContext& parseContext, ErrorGuard& errors);
63
64 // get the segment number information and depth information based on the information from WellSegments
65 static void processCOMPSEGS(std::vector< Compsegs >& compsegs, const WellSegments& segment_set);
66
67 // update the segment related information for Connections
68 static void updateConnectionsWithSegment(const std::vector< Compsegs >& compsegs,
69 const EclipseGrid& grid,
70 WellConnections& connection_set);
71
72 };
73}
74
75
76
77#endif /* COMPSEGS_HPP_ */
Direction
Definition: parser/eclipse/EclipseState/Schedule/Well/connection.hpp:57
Definition: DeckKeyword.hpp:38
Definition: EclipseGrid.hpp:54
Definition: ErrorGuard.hpp:29
Definition: ParseContext.hpp:84
Definition: WellConnections.hpp:31
Definition: WellSegments.hpp:37
Definition: A.hpp:4
Definition: Compsegs.hpp:38
std::size_t m_seqIndex
Definition: Compsegs.hpp:54
Compsegs(int i_in, int j_in, int k_in, int branch_number_in, double distance_start_in, double distance_end_in, Connection::Direction dir_in, double center_depth_in, int segment_number_in, std::size_t seqIndex_in)
int m_j
Definition: Compsegs.hpp:40
static void processCOMPSEGS(std::vector< Compsegs > &compsegs, const WellSegments &segment_set)
double m_distance_start
Definition: Compsegs.hpp:46
int m_i
Definition: Compsegs.hpp:39
Connection::Direction m_dir
Definition: Compsegs.hpp:48
int m_k
Definition: Compsegs.hpp:41
int segment_number
Definition: Compsegs.hpp:53
double m_distance_end
Definition: Compsegs.hpp:47
static std::vector< Compsegs > compsegsFromCOMPSEGSKeyword(const DeckKeyword &compsegsKeyword, const EclipseGrid &grid, const ParseContext &parseContext, ErrorGuard &errors)
static void updateConnectionsWithSegment(const std::vector< Compsegs > &compsegs, const EclipseGrid &grid, WellConnections &connection_set)
double center_depth
Definition: Compsegs.hpp:50
int m_branch_number
Definition: Compsegs.hpp:45
void calculateCenterDepthWithSegments(const WellSegments &segment_set)