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 TotalEnergies
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 GEOS_MESH_PERFORATION_HPP
20 #define GEOS_MESH_PERFORATION_HPP
21 
22 #include "dataRepository/Group.hpp"
23 
24 namespace geos
25 {
26 
33 {
34 public:
39 
45  explicit Perforation( string const & name, dataRepository::Group * const parent );
46 
50  ~Perforation() override;
51 
55  Perforation() = delete;
56 
60  Perforation( Perforation const & ) = delete;
61 
65  Perforation( Perforation && ) = delete;
66 
71  Perforation & operator=( Perforation const & ) = delete;
72 
77  Perforation & operator=( Perforation && ) = delete;
78 
80 
85 
90  real64 const & getDistanceFromWellHead() const { return m_distanceFromHead; }
91 
96  real64 getWellTransmissibility() const { return m_wellTransmissibility; }
97 
102  real64 getWellSkinFactor() const { return m_wellSkinFactor; }
103 
105 
111  {
113  static constexpr char const *distanceFromHeadString() { return "distanceFromHead"; }
115  static constexpr char const *wellTransmissibilityString() { return "transmissibility"; }
117  static constexpr char const *wellSkinFactorString() { return "skinFactor"; }
124  }
127 
128 protected:
129  void postProcessInput() override;
130 
131 private:
133  real64 m_distanceFromHead;
134 
136  real64 m_wellTransmissibility;
137 
139  real64 m_wellSkinFactor;
140 };
141 
142 } // namespace geos
143 
144 #endif // GEOS_MESH_PERFORATION_HPP
Perforation(Perforation &&)=delete
Deleted move constructor.
Perforation(Perforation const &)=delete
Deleted copy constructor.
struct geos::Perforation::viewKeyStruct viewKeysPerforation
ViewKey struct for the Perforation class.
Perforation & operator=(Perforation const &)=delete
Deleted assignment operator.
Perforation(string const &name, dataRepository::Group *const parent)
Constructor for Perforation Objects.
real64 const & getDistanceFromWellHead() const
Get the linear distance between the well head and the perforation.
Definition: Perforation.hpp:90
void postProcessInput() override
Perforation & operator=(Perforation &&)=delete
Deleted move operator.
~Perforation() override
Default destructor.
Perforation()=delete
Deleted default constructor.
real64 getWellTransmissibility() const
Get the well Peaceman index at the perforation.
Definition: Perforation.hpp:96
real64 getWellSkinFactor() const
Get the well skin factor at the perforation.
Group::wrapperMap::KeyIndex ViewKey
Type alias for KeyIndexT type used for wrapper lookups.
Definition: Group.hpp:1625
double real64
64-bit floating point type.
Definition: DataTypes.hpp:139
Struct to serve as a container for variable strings and keys.
static constexpr char const * wellSkinFactorString()
dataRepository::ViewKey wellSkinFactor
ViewKey for the well transmissibility at this perforation.
dataRepository::ViewKey wellTransmissibility
ViewKey for the well transmissibility at this perforation.
static constexpr char const * wellTransmissibilityString()
static constexpr char const * distanceFromHeadString()
dataRepository::ViewKey distanceFromHead
ViewKey for the linear distance from well head.