GEOS
WellGeneratorABC.hpp
1 /*
2  * ------------------------------------------------------------------------------------------------------------
3  * SPDX-License-Identifier: LGPL-2.1-only
4  *
5  * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC
6  * Copyright (c) 2018-2024 Total, S.A
7  * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University
8  * Copyright (c) 2023-2024 Chevron
9  * Copyright (c) 2019- GEOS/GEOSX Contributors
10  * All rights reserved
11  *
12  * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
13  * ------------------------------------------------------------------------------------------------------------
14  */
15 
16 /*
17  * @file WellGeneratorABC.hpp
18  *
19  */
20 
21 #ifndef GEOS_MESH_GENERATORS_WELLGENERATORABC_HPP_
22 #define GEOS_MESH_GENERATORS_WELLGENERATORABC_HPP_
23 
24 #include "dataRepository/Group.hpp"
25 #include "codingUtilities/Utilities.hpp"
26 #include "common/DataTypes.hpp"
27 
28 
29 namespace geos
30 {
31 
38 {
39 public:
40 
46  WellGeneratorABC( const string & name,
47  Group * const parent )
48  :
49  Group( name, parent )
50  { }
51 
55  virtual void generateWellGeometry( ) = 0;
56 
61 
62  // getters for element data
63 
68  virtual globalIndex numElements() const = 0;
69 
74  virtual const array2d< globalIndex > & getSegmentToPolyNodeMap() const = 0;
75 
80  virtual globalIndex numNodesPerElement() const = 0;
81 
86  virtual const array2d< real64 > & getPolyNodeCoord() const = 0;
87 
91  virtual real64 getMinSegmentLength() const = 0;
92 
96  virtual real64 getMinElemLength() const = 0;
97 
101  virtual const string_array & getPerforationList() const = 0;
102 
108 
114 
120 
126 
132 
137  virtual real64 getElementRadius() const = 0;
138 
139  // getters for node data
140 
145  virtual globalIndex numNodes() const = 0;
146 
152 
153 
154 
155  // getters for perforation data
160  virtual globalIndex numPerforations() const = 0;
161 
167 
173 
179 
185 
189  virtual int getPhysicalDimensionsNumber() const = 0;
190 
195  virtual const string getWellRegionName() const = 0;
196 
201  virtual const string getWellControlsName() const = 0;
203 };
204 }
205 #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:180
Array< T, 2, PERMUTATION > array2d
Alias for 2D array.
Definition: DataTypes.hpp:192
GEOS_GLOBALINDEX_TYPE globalIndex
Global index type (for indexing objects across MPI partitions).
Definition: DataTypes.hpp:88
array1d< string > string_array
A 1-dimensional array of geos::string types.
Definition: DataTypes.hpp:392
double real64
64-bit floating point type.
Definition: DataTypes.hpp:99
ArrayView< T, 2, USD > arrayView2d
Alias for 2D array view.
Definition: DataTypes.hpp:196