GEOS
StencilDataCollection.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 SRC_CORECOMPONENTS_PHYSICSSOLVERS_FLUIDFLOW_CELLTOCELLDATACOLLECTOR_HPP_
21 #define SRC_CORECOMPONENTS_PHYSICSSOLVERS_FLUIDFLOW_CELLTOCELLDATACOLLECTOR_HPP_
22 
25 
26 namespace geos
27 {
28 
37 {
38 public:
39 
45  StencilDataCollection( const string & name,
46  dataRepository::Group * const parent );
47 
49  static string catalogName() { return "CellToCellDataCollection"; }
50 
58  virtual bool execute( real64 const time_n,
59  real64 const dt,
60  integer const cycleNumber,
61  integer const eventCounter,
62  real64 const eventProgress,
63  DomainPartition & domain ) override;
64 
68  {
69  static constexpr char const * solverNameString() { return "flowSolverName"; }
70  static constexpr char const * meshNameString() { return "meshBody"; }
71  static constexpr char const * cellAGlobalIdString() { return "cellAGlobalId"; }
72  static constexpr char const * cellBGlobalIdString() { return "cellBGlobalId"; }
73  static constexpr char const * transmissibilityABString() { return "transmissibilityAB"; }
74  static constexpr char const * transmissibilityBAString() { return "transmissibilityBA"; }
75  };
76 
77  class Kernel;
78 
83  {
84  real64 m_transmissibility[2];
85  localIndex m_regionId[2];
86  localIndex m_subRegionId[2];
87  localIndex m_elementId[2];
88  };
89 
90 private:
91 
92  using Base = TaskBase;
94 
98  struct ConnectionData
99  {
100  real64 m_transmissibility[2];
101  globalIndex m_globalId[2];
102 
103 
109  static ConnectionData fromKernel( KernelConnectionData const & kernelData,
110  LocalToGlobalMap const & localToGlobalMap );
111 
118  bool operator<( ConnectionData const & other ) const
119  {
120  return m_globalId[0] != other.m_globalId[0] ?
121  m_globalId[0] < other.m_globalId[0] :
122  m_globalId[1] < other.m_globalId[1];
123  }
124  };
125 
126  array1d< globalIndex > m_cellAGlobalId;
127  array1d< globalIndex > m_cellBGlobalId;
128  array1d< real64 > m_transmissibilityAB;
129  array1d< real64 > m_transmissibilityBA;
130 
132  string m_meshName;
134  string m_solverName;
135 
137  FlowSolverBase const * m_solver = nullptr;
139  MeshLevel const * m_meshLevel = nullptr;
141  FluxApproximationBase const * m_discretization = nullptr;
142 
143 
144 
145  void postInputInitialization() override;
146 
152  void initializePostInitialConditionsPostSubGroups() override;
153 
161  template< typename STENCILWRAPPER_T >
162  array1d< KernelConnectionData > gatherConnectionData( STENCILWRAPPER_T const & stencilWrapper ) const;
163 
170  void storeConnectionData( string_view stencilName,
171  arrayView1d< KernelConnectionData > const & kernelData );
172 
173  void logStoredConnections( string_view stencilName );
174 };
175 
176 
177 } /* namespace geos */
178 
179 #endif /* SRC_CORECOMPONENTS_PHYSICSSOLVERS_FLUIDFLOW_CELLTOCELLDATACOLLECTOR_HPP_ */
Partition of the decomposed physical domain. It also manages the connexion information to its neighbo...
array1d< array1d< VIEWTYPE > > ElementViewAccessor
The ElementViewAccessor at the ElementRegionManager level is an array of array of VIEWTYPE.
StencilDataCollection(const string &name, dataRepository::Group *const parent)
Constructor for the statistics class.
static string catalogName()
Accessor for the catalog name.
TaskBase(string const &name, Group *const parent)
Constructor.
virtual bool execute(real64 const time_n, real64 const dt, integer const cycleNumber, integer const eventCounter, real64 const eventProgress, DomainPartition &domain) override
Main extension point of executable targets.
bool operator<(InputFlags const left, InputFlags const right)
Comparison operator for InputFlags enumeration.
Definition: InputFlags.hpp:163
GEOS_GLOBALINDEX_TYPE globalIndex
Global index type (for indexing objects across MPI partitions).
Definition: DataTypes.hpp:88
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
std::string_view string_view
String type.
Definition: DataTypes.hpp:94
Element-element connection data extracted from the kernel.