GEOS
InternalWellboreGenerator.hpp
Go to the documentation of this file.
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 TotalEnergies
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 
20 #ifndef GEOS_MESHUTILITIES_INTERNALWELLBOREGENERATOR_HPP
21 #define GEOS_MESHUTILITIES_INTERNALWELLBOREGENERATOR_HPP
22 
24 #include "dataRepository/Group.hpp"
26 
27 namespace geos
28 {
29 
35 {
36 public:
37 
43  InternalWellboreGenerator( string const & name, Group * const parent );
44 
45  ~InternalWellboreGenerator() override = default;
46 
51  static string catalogName() { return "InternalWellbore"; }
52 
53 protected:
54 
55  void reduceNumNodesForPeriodicBoundary( SpatialPartition & partition,
56  integer ( &numNodes )[3] ) override final;
57 
58  void setNodeGlobalIndicesOnPeriodicBoundary( SpatialPartition & partition,
59  int ( & index )[3] ) override final;
60 
61  void setConnectivityForPeriodicBoundaries( int ( & globalIJK )[3],
62  integer const ( &numNodesInDir )[3],
63  int const ( &firstElemIndexInPartition )[3],
64  localIndex ( &nodeOfBox )[8] ) override final;
65 
67  std::map< string, SortedArray< localIndex > > & nodeSets ) override final;
68 
69  inline bool isCartesian() const override final
70  {
71  return false;
72  }
73 
75  struct viewKeyStruct : public InternalMeshGenerator::viewKeyStruct
76  {
77  constexpr static char const * radiusString() { return "radius"; }
78  constexpr static char const * thetaString() { return "theta"; }
79  constexpr static char const * rOutString() { return "rOut"; }
80  constexpr static char const * rElemsString() { return "nr"; }
81  constexpr static char const * tElemsString() { return "nt"; }
82  constexpr static char const * rBiasString() { return "rBias"; }
83  constexpr static char const * trajectoryString() { return "trajectory"; }
84  constexpr static char const * cartesianOuterBoundaryString() { return "useCartesianOuterBoundary"; }
85  constexpr static char const * cartesianMappingInnerRadiusString() { return "cartesianMappingInnerRadius"; }
86  constexpr static char const * autoSpaceRadialElemsString() { return "autoSpaceRadialElems"; }
87  constexpr static char const * hardRadialCoordsString() { return "hardRadialCoords"; }
88 
89  };
91 
92  void postInputInitialization() override final;
93 
94 private:
95 
97  array2d< real64 > m_trajectory;
98 
100  int m_cartesianOuterBoundary;
101 
102  real64 m_cartesianMappingInnerRadius;
103 
105  bool m_isFullAnnulus;
106 
108  array1d< real64 > m_autoSpaceRadialElems;
109 
111  array1d< real64 > & m_radialCoords;
112 
113 };
114 
115 } /* namespace geos */
116 
117 #endif /* GEOS_MESHUTILITIES_INTERNALWELLBOREGENERATOR_HPP */
The InternalMeshGenerator class is a class handling GEOSX generated meshes.
The InternalWellboreGenerator class is a class generating internal wellbore mesh.
void postInputInitialization() override final
bool isCartesian() const override final
void setNodeGlobalIndicesOnPeriodicBoundary(SpatialPartition &partition, int(&index)[3]) override final
Alter the directional indices for when the ending index should be set to the beginning of the index a...
InternalWellboreGenerator(string const &name, Group *const parent)
Main constructor for InternalWellboreGenerator.
void reduceNumNodesForPeriodicBoundary(SpatialPartition &partition, integer(&numNodes)[3]) override final
Reduce the number of nodes in a block coordinate direction for.
static string catalogName()
Return the name of the InternalWellboreGenerator in object Catalog.
void coordinateTransformation(arrayView2d< real64, nodes::REFERENCE_POSITION_USD > X, std::map< string, SortedArray< localIndex > > &nodeSets) override final
Performs a coordinate transformation of all nodes.
void setConnectivityForPeriodicBoundaries(int(&globalIJK)[3], integer const (&numNodesInDir)[3], int const (&firstElemIndexInPartition)[3], localIndex(&nodeOfBox)[8]) override final
Alter connectivity to adhere to a specific periodic type boundary.
Array< T, 2, PERMUTATION > array2d
Alias for 2D array.
Definition: DataTypes.hpp:192
double real64
64-bit floating point type.
Definition: DataTypes.hpp:99
GEOS_LOCALINDEX_TYPE localIndex
Local index type (for indexing objects within an MPI partition).
Definition: DataTypes.hpp:85
std::int32_t integer
Signed integer type.
Definition: DataTypes.hpp:82
mapBase< TKEY, TVAL, std::integral_constant< bool, true > > map
Ordered map type.
Definition: DataTypes.hpp:369
LvArray::SortedArray< T, localIndex, LvArray::ChaiBuffer > SortedArray
A sorted array of local indices.
Definition: DataTypes.hpp:267
ArrayView< T, 2, USD > arrayView2d
Alias for 2D array view.
Definition: DataTypes.hpp:196
Array< T, 1 > array1d
Alias for 1D array.
Definition: DataTypes.hpp:176
Structure to hold scoped key names.
Definition: Group.hpp:1442