26#ifndef GRAPH_OF_GRID_WRAPPERS_HEADER
27#define GRAPH_OF_GRID_WRAPPERS_HEADER
29#include <opm/common/OpmLog/OpmLog.hpp>
30#include <opm/grid/GraphOfGrid.hpp>
31#include <opm/grid/common/WellConnections.hpp>
32#include <opm/grid/common/ZoltanGraphFunctions.hpp>
46int getGraphOfGridNumVertices(
void* pGraph,
int *err);
52void getGraphOfGridVerticesList(
void* pGraph,
53 [[maybe_unused]]
int dimGlobalID,
54 [[maybe_unused]]
int dimLocalID,
56 [[maybe_unused]] ZOLTAN_ID_PTR lIDs,
65void getGraphOfGridNumEdges(
void *pGraph,
66 [[maybe_unused]]
int dimGlobalID,
67 [[maybe_unused]]
int dimLocalID,
70 [[maybe_unused]] ZOLTAN_ID_PTR lIDs,
81void getGraphOfGridEdgeList(
void *pGraph,
82 [[maybe_unused]]
int dimGlobalID,
83 [[maybe_unused]]
int dimLocalID,
86 [[maybe_unused]] ZOLTAN_ID_PTR lIDs,
88 ZOLTAN_ID_PTR nborGIDs,
95template<
typename Zoltan_Struct>
96void setGraphOfGridZoltanGraphFunctions(Zoltan_Struct *zz,
97 GraphOfGrid<Dune::CpGrid>& gog,
111 const std::unordered_map<std::string, std::set<int>>& wells,
112 bool checkWellIntersections=
true);
122 bool checkWellIntersections=
true);
130 std::vector<int>& gIDtoRank,
131 const int& root = -1);
138void extendAndSortImportList(std::vector<std::tuple<int,int,char,int>>& importList,
139 const std::vector<int>& extraCells);
148std::vector<std::vector<int>>
149extendRootExportList(
const GraphOfGrid<Dune::CpGrid>& gog,
150 std::vector<std::tuple<int,int,char>>& exportList,
152 const std::vector<int>& gIDtoRank);
171std::vector<int> communicateExportedCells(
const std::vector<std::vector<int>>& exportedCells,
172 const Dune::cpgrid::CpGridDataTraits::Communication& cc,
184void extendAndSortExportAndImportLists(
const GraphOfGrid<Dune::CpGrid>& gog,
185 const Dune::cpgrid::CpGridDataTraits::Communication& cc,
187 std::vector<std::tuple<int, int, char>>& exportList,
188 std::vector<std::tuple<int, int, char, int>>& importList,
189 const std::vector<int>& gIDtoRank = {});
197std::vector<int>
getWellRanks(
const std::vector<int>& gIDtoRank,
213std::vector<std::pair<std::string, bool>>
214wellsOnThisRank(
const std::vector<Dune::cpgrid::OpmWellType>& wells,
215 const std::vector<int>& wellRanks,
216 const Dune::cpgrid::CpGridDataTraits::Communication& cc,
239std::tuple<std::vector<int>,
240 std::vector<std::pair<std::string, bool>>,
241 std::vector<std::tuple<int,int,char> >,
242 std::vector<std::tuple<int,int,char,int> > >
243makeImportAndExportLists(
const GraphOfGrid<Dune::CpGrid>& gog,
244 const Dune::Communication<MPI_Comm>& cc,
245 const std::vector<Dune::cpgrid::OpmWellType> * wells,
250 [[maybe_unused]]
const Id* exportLocalGids,
251 const Id* exportGlobalGids,
252 const int* exportToPart,
253 const Id* importGlobalGids,
260std::tuple<std::vector<int>, std::vector<std::pair<std::string, bool>>,
261 std::vector<std::tuple<int,int,char> >,
262 std::vector<std::tuple<int,int,char,int> >,
264zoltanPartitioningWithGraphOfGrid(
const Dune::CpGrid& grid,
265 const std::vector<Dune::cpgrid::OpmWellType> * wells,
266 const std::unordered_map<std::string, std::set<int>>& possibleFutureConnections,
267 const double* transmissibilities,
268 const Dune::cpgrid::CpGridDataTraits::Communication& cc,
271 const double zoltanImbalanceTol,
272 const std::map<std::string,std::string>& params,
282std::vector<std::vector<int> >
283makeExportListsFromGIDtoRank(
const std::vector<int>& gIDtoRank,
int ccsize);
289std::tuple<std::vector<int>, std::vector<std::pair<std::string, bool>>,
290 std::vector<std::tuple<int,int,char> >,
291 std::vector<std::tuple<int,int,char,int> >,
293zoltanSerialPartitioningWithGraphOfGrid(
const Dune::CpGrid& grid,
294 const std::vector<Dune::cpgrid::OpmWellType> * wells,
295 const std::unordered_map<std::string, std::set<int>>& possibleFutureConnections,
296 const double* transmissibilities,
297 const Dune::cpgrid::CpGridDataTraits::Communication& cc,
300 const double zoltanImbalanceTol,
301 const std::map<std::string,std::string>& params);
[ provides Dune::Grid ]
Definition CpGrid.hpp:198
A class calculating and representing all connections of wells.
Definition WellConnections.hpp:51
EdgeWeightMethod
enum for choosing Methods for weighting graph-edges correspoding to cell interfaces in Zoltan's or Me...
Definition GridEnums.hpp:34
Holds the implementation of the CpGrid as a pimple.
Definition CellQuadrature.cpp:68
std::vector< int > getWellRanks(const std::vector< int > &gIDtoRank, const Dune::cpgrid::WellConnections &wellConnections)
Find to which ranks wells were assigned.
Definition GraphOfGridWrappers.cpp:376
void addWellConnections(GraphOfGrid< Dune::CpGrid > &gog, const Dune::cpgrid::WellConnections &wells, bool checkWellIntersections)
Add WellConnections to the GraphOfGrid.
Definition GraphOfGridWrappers.cpp:182
void addFutureConnectionWells(GraphOfGrid< Dune::CpGrid > &gog, const std::unordered_map< std::string, std::set< int > > &wells, bool checkWellIntersections)
Adds well to the GraphOfGrid.
Definition GraphOfGridWrappers.cpp:156
void extendGIDtoRank(const GraphOfGrid< Dune::CpGrid > &gog, std::vector< int > &gIDtoRank, const int &root)
Correct gIDtoRank's data about well cells.
Definition GraphOfGridWrappers.cpp:192