GEOSX
LineBlockABC.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) 2020- GEOSX Contributors
9  * All rights reserved
10  *
11  * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
12  * ------------------------------------------------------------------------------------------------------------
13  */
14 
15 #ifndef GEOSX_WELLBLOCKABC_HPP
16 #define GEOSX_WELLBLOCKABC_HPP
17 
18 #include "dataRepository/Group.hpp"
19 #include "common/DataTypes.hpp"
20 
21 #include <vector>
22 
23 namespace geos
24 {
25 
33 {
34 public:
35 
39  struct NodeLocation
40  {
41  static constexpr integer TOP = 0;
42  static constexpr integer BOTTOM = 1;
43  };
44 
50  LineBlockABC( string const & name,
51  Group * const parent )
52  :
53  Group( name, parent )
54  { }
55 
60 
61  // getters for element data
62 
67  virtual globalIndex numElements() const = 0;
68 
74 
80 
86 
92 
98 
103  virtual real64 getElementRadius() const = 0;
104 
105  // getters for node data
106 
111  virtual globalIndex numNodes() const = 0;
112 
118 
119 
120 
121  // getters for perforation data
122 
127  virtual globalIndex numPerforations() const = 0;
128 
134 
140 
146 
152 
157  virtual string const & getWellControlsName() const = 0;
158 
163  virtual string const & getWellGeneratorName() const = 0;
164 };
165 
166 }
167 
168 #endif //GEOSX_WELLBLOCKABC_HPP
virtual arrayView1d< real64 const > getPerfTransmissibility() const =0
Get the well transmissibility at the perforations.
virtual globalIndex numElements() const =0
Get the global number of well elements.
virtual arrayView1d< real64 const > getPerfSkinFactor() const =0
Get the well skin factor at the perforations.
virtual globalIndex numNodes() const =0
Get the global number of well nodes.
virtual arrayView2d< globalIndex const > getElemToNodesMap() const =0
Get the global indices of the well nodes nodes connected to each element.
virtual arrayView1d< globalIndex const > getNextElemIndex() const =0
Get the global indices mapping an element to the next.
virtual arrayView1d< arrayView1d< globalIndex const > const > getPrevElemIndices() const =0
Get the global indices mapping an element to the previous ones.
virtual arrayView1d< globalIndex const > getPerfElemIndex() const =0
Get the global indices of the well elements connected to each perforation.
virtual arrayView2d< real64 const > getElemCoords() const =0
Get the physical location of the centers of well elements.
virtual string const & getWellGeneratorName() const =0
Get the well generator name.
virtual arrayView1d< real64 const > getElemVolume() const =0
Get the volume of the well elements.
LineBlockABC(string const &name, Group *const parent)
Constructor.
virtual arrayView2d< real64 const > getNodeCoords() const =0
Get the physical location of the centers of well elements.
virtual arrayView2d< real64 const > getPerfCoords() const =0
Get the locations of the perforations.
virtual string const & getWellControlsName() const =0
Get the well controls name.
virtual real64 getElementRadius() const =0
Get the radius in the well.
virtual globalIndex numPerforations() const =0
Get the global number of perforations on this well.
ArrayView< T, 1 > arrayView1d
Alias for 1D array view.
Definition: DataTypes.hpp:220
double real64
64-bit floating point type.
Definition: DataTypes.hpp:139
std::int32_t integer
Signed integer type.
Definition: DataTypes.hpp:122
GEOSX_GLOBALINDEX_TYPE globalIndex
Global index type (for indexing objects across MPI partitions).
Definition: DataTypes.hpp:128
ArrayView< T, 2, USD > arrayView2d
Alias for 2D array view.
Definition: DataTypes.hpp:236
Struct to define the top and bottom node of a segment.
static constexpr integer TOP
static constexpr integer BOTTOM