GEOSX
Perforation.hpp
1 /*
2  * ------------------------------------------------------------------------------------------------------------
3  * SPDX-License-Identifier: LGPL-2.1-only
4  *
5  * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC
6  * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University
7  * Copyright (c) 2018-2020 Total, S.A
8  * Copyright (c) 2019- GEOSX Contributors
9  * All rights reserved
10  *
11  * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
12  * ------------------------------------------------------------------------------------------------------------
13  */
14 
15 /*
16  * @file Perforation.hpp
17  */
18 
19 #ifndef GEOSX_MESHUTILITIES_PERFORATION_HPP
20 #define GEOSX_MESHUTILITIES_PERFORATION_HPP
21 
22 #include "dataRepository/Group.hpp"
23 
24 namespace geosx
25 {
26 
27 namespace dataRepository
28 {
29 namespace keys
30 {
31 static constexpr auto perforation = "Perforation";
32 }
33 }
34 
35 
42 {
43 public:
44 
48 
55  explicit Perforation( string const & name, dataRepository::Group * const parent );
56 
60  ~Perforation() override;
61 
65  Perforation() = delete;
66 
70  Perforation( Perforation const & ) = delete;
71 
75  Perforation( Perforation && ) = delete;
76 
81  Perforation & operator=( Perforation const & ) = delete;
82 
87  Perforation & operator=( Perforation && ) = delete;
88 
90 
94 
100  real64 const & GetDistanceFromWellHead() const { return m_distanceFromHead; }
101 
102 
107  real64 GetWellTransmissibility() const { return m_wellTransmissibility; }
108 
110 
116  {
118  static constexpr auto distanceFromHeadString = "distanceFromHead";
120  static constexpr auto wellTransmissibilityString = "transmissibility";
122  dataRepository::ViewKey distanceFromHead = { distanceFromHeadString };
124  dataRepository::ViewKey wellTransmissibility = { wellTransmissibilityString };
125  }
127  viewKeysPerforation;
128 
129 protected:
130 
131  void PostProcessInput() override;
132 
133 private:
134 
136  real64 m_distanceFromHead;
137 
139  real64 m_wellTransmissibility;
140 
141 };
142 
143 } //namespace geosx
144 
145 #endif //GEOSX_MESHUTILITIES_PERFORATION_HPP
real64 const & GetDistanceFromWellHead() const
Get the linear distance between the well head and the perforation.
double real64
64-bit floating point type.
Definition: DataTypes.hpp:136
Group::wrapperMap::KeyIndex ViewKey
Type alias for KeyIndexT type used for wrapper lookups.
Definition: Group.hpp:1545
real64 GetWellTransmissibility() const
Get the well Peaceman index at the perforation.
Struct to serve as a container for variable strings and keys.