GEOSX
WellGeneratorABC.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 WellGeneratorABC.hpp
17  *
18  */
19 
20 #ifndef GEOS_MESH_GENERATORS_WELLGENERATORABC_HPP_
21 #define GEOS_MESH_GENERATORS_WELLGENERATORABC_HPP_
22 
23 #include "dataRepository/Group.hpp"
24 #include "codingUtilities/Utilities.hpp"
25 #include "common/DataTypes.hpp"
26 
27 
28 namespace geos
29 {
30 
37 {
38 public:
39 
45  WellGeneratorABC( const string & name,
46  Group * const parent )
47  :
48  Group( name, parent )
49  { }
50 
54  virtual void generateWellGeometry( ) = 0;
55 
60 
61  // getters for element data
62 
67  virtual globalIndex numElements() const = 0;
68 
73  virtual const array2d< globalIndex > & getSegmentToPolyNodeMap() const = 0;
74 
79  virtual globalIndex numNodesPerElement() const = 0;
80 
85  virtual const array2d< real64 > & getPolyNodeCoord() const = 0;
86 
90  virtual real64 getMinSegmentLength() const = 0;
91 
95  virtual real64 getMinElemLength() const = 0;
96 
100  virtual const string_array & getPerforationList() const = 0;
101 
107 
113 
119 
125 
131 
136  virtual real64 getElementRadius() const = 0;
137 
138  // getters for node data
139 
144  virtual globalIndex numNodes() const = 0;
145 
151 
152 
153 
154  // getters for perforation data
159  virtual globalIndex numPerforations() const = 0;
160 
166 
172 
178 
184 
188  virtual int getPhysicalDimensionsNumber() const = 0;
189 
194  virtual const string getWellRegionName() const = 0;
195 
200  virtual const string getWellControlsName() const = 0;
202 };
203 }
204 #endif /* GEOS_MESH_GENERATORS_WELLGENERATORABC_HPP_ */
virtual globalIndex numPerforations() const =0
Get the global number of perforations on this well.
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 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 globalIndex numNodesPerElement() const =0
Get the number of nodes per well element.
virtual void generateWellGeometry()=0
Main function of the class that generates the well geometry.
virtual const string getWellControlsName() const =0
virtual arrayView1d< real64 const > getPerfSkinFactor() const =0
Get the skin factor at a perforation.
virtual globalIndex numNodes() const =0
Get the global number of well nodes.
virtual const string getWellRegionName() const =0
virtual arrayView2d< real64 const > getElemCoords() const =0
Get the physical location of the centers of well elements.
virtual const string_array & getPerforationList() const =0
virtual globalIndex numElements() const =0
Get the global number of well elements.
virtual real64 getMinSegmentLength() const =0
virtual arrayView1d< globalIndex const > getNextElemIndex() const =0
Get the global indices mapping an element to the next.
virtual real64 getMinElemLength() const =0
virtual const array2d< real64 > & getPolyNodeCoord() const =0
Get the Coordinates of the polyline nodes.
virtual real64 getElementRadius() const =0
Get the radius in the well.
virtual arrayView2d< globalIndex const > getElemToNodesMap() const =0
Get the global indices of the well nodes nodes connected to each element.
virtual const array2d< globalIndex > & getSegmentToPolyNodeMap() const =0
Getter to the Segment to PolyNode mapping.
virtual int getPhysicalDimensionsNumber() const =0
virtual arrayView1d< real64 const > getPerfTransmissibility() const =0
Get the well transmissibility at the perforations.
WellGeneratorABC(const string &name, Group *const parent)
Constructor.
virtual arrayView1d< real64 const > getElemVolume() const =0
Get the volume of the well elements.
ArrayView< T, 1 > arrayView1d
Alias for 1D array view.
Definition: DataTypes.hpp:220
Array< T, 2, PERMUTATION > array2d
Alias for 2D array.
Definition: DataTypes.hpp:232
array1d< string > string_array
A 1-dimensional array of geos::string types.
Definition: DataTypes.hpp:432
double real64
64-bit floating point type.
Definition: DataTypes.hpp:139
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