26 #ifndef GRAPH_OF_GRID_WRAPPERS_HEADER 27 #define GRAPH_OF_GRID_WRAPPERS_HEADER 29 #include <opm/grid/utility/OpmLog.hpp> 31 #include <opm/grid/GraphOfGrid.hpp> 32 #include <opm/grid/common/WellConnections.hpp> 33 #include <opm/grid/common/ZoltanGraphFunctions.hpp> 44 int getGraphOfGridNumVertices(
void* pGraph,
int *err);
53 void getGraphOfGridVerticesList(
void* pGraph,
54 [[maybe_unused]]
int dimGlobalID,
55 [[maybe_unused]]
int dimLocalID,
57 [[maybe_unused]] ZOLTAN_ID_PTR lIDs,
66 void getGraphOfGridNumEdges(
void *pGraph,
67 [[maybe_unused]]
int dimGlobalID,
68 [[maybe_unused]]
int dimLocalID,
71 [[maybe_unused]] ZOLTAN_ID_PTR lIDs,
82 void getGraphOfGridEdgeList(
void *pGraph,
83 [[maybe_unused]]
int dimGlobalID,
84 [[maybe_unused]]
int dimLocalID,
87 [[maybe_unused]] ZOLTAN_ID_PTR lIDs,
89 ZOLTAN_ID_PTR nborGIDs,
96 template<
typename Zoltan_Struct>
97 void setGraphOfGridZoltanGraphFunctions(Zoltan_Struct *zz,
98 GraphOfGrid<Dune::CpGrid>& gog,
112 const std::unordered_map<std::string, std::set<int>>& wells,
113 bool checkWellIntersections=
true);
123 bool checkWellIntersections=
true);
131 std::vector<int>& gIDtoRank,
132 const int& root = -1);
139 void extendAndSortImportList(std::vector<std::tuple<int,int,char,int>>& importList,
140 const std::vector<int>& extraCells);
149 std::vector<std::vector<int>>
150 extendRootExportList(
const GraphOfGrid<Dune::CpGrid>& gog,
151 std::vector<std::tuple<int,int,char>>& exportList,
153 const std::vector<int>& gIDtoRank);
172 std::vector<int> communicateExportedCells(
const std::vector<std::vector<int>>& exportedCells,
173 const Dune::cpgrid::CpGridDataTraits::Communication& cc,
185 void extendAndSortExportAndImportLists(
const GraphOfGrid<Dune::CpGrid>& gog,
186 const Dune::cpgrid::CpGridDataTraits::Communication& cc,
188 std::vector<std::tuple<int, int, char>>& exportList,
189 std::vector<std::tuple<int, int, char, int>>& importList,
190 const std::vector<int>& gIDtoRank = {});
198 std::vector<int>
getWellRanks(
const std::vector<int>& gIDtoRank,
202 std::vector<std::pair<std::string, bool>>
215 wellsOnThisRank(
const std::vector<Dune::cpgrid::OpmWellType>& wells,
216 const std::vector<int>& wellRanks,
217 const Dune::cpgrid::CpGridDataTraits::Communication& cc,
240 std::tuple<std::vector<int>,
241 std::vector<std::pair<std::string, bool>>,
242 std::vector<std::tuple<int,int,char> >,
243 std::vector<std::tuple<int,int,char,int> > >
244 makeImportAndExportLists(
const GraphOfGrid<Dune::CpGrid>& gog,
245 const Dune::Communication<MPI_Comm>& cc,
246 const std::vector<Dune::cpgrid::OpmWellType> * wells,
251 [[maybe_unused]]
const Id* exportLocalGids,
252 const Id* exportGlobalGids,
253 const int* exportToPart,
254 const Id* importGlobalGids,
261 std::tuple<std::vector<int>, std::vector<std::pair<std::string, bool>>,
262 std::vector<std::tuple<int,int,char> >,
263 std::vector<std::tuple<int,int,char,int> >,
265 zoltanPartitioningWithGraphOfGrid(
const Dune::CpGrid& grid,
266 const std::vector<Dune::cpgrid::OpmWellType> * wells,
267 const std::unordered_map<std::string, std::set<int>>& possibleFutureConnections,
268 const double* transmissibilities,
269 const Dune::cpgrid::CpGridDataTraits::Communication& cc,
272 const double zoltanImbalanceTol,
273 bool allowDistributedWells,
274 const std::map<std::string,std::string>& params,
284 std::vector<std::vector<int> >
285 makeExportListsFromGIDtoRank(
const std::vector<int>& gIDtoRank,
int ccsize);
291 std::tuple<std::vector<int>, std::vector<std::pair<std::string, bool>>,
292 std::vector<std::tuple<int,int,char> >,
293 std::vector<std::tuple<int,int,char,int> >,
295 zoltanSerialPartitioningWithGraphOfGrid(
const Dune::CpGrid& grid,
296 const std::vector<Dune::cpgrid::OpmWellType> * wells,
297 const std::unordered_map<std::string, std::set<int>>& possibleFutureConnections,
298 const double* transmissibilities,
299 const Dune::cpgrid::CpGridDataTraits::Communication& cc,
302 const double zoltanImbalanceTol,
303 bool allowDistributedWells,
304 const std::map<std::string,std::string>& params);
309 #endif // GRAPH_OF_GRID_WRAPPERS_HEADER [ provides Dune::Grid ]
Definition: CpGrid.hpp:201
Holds the implementation of the CpGrid as a pimple.
Definition: CellQuadrature.cpp:71
void extendGIDtoRank(const GraphOfGrid< Dune::CpGrid > &gog, std::vector< int > &gIDtoRank, const int &root)
Correct gIDtoRank's data about well cells.
Definition: GraphOfGridWrappers.cpp:193
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:157
std::vector< int > getWellRanks(const std::vector< int > &gIDtoRank, const Dune::cpgrid::WellConnections &wellConnections)
Find to which ranks wells were assigned.
Definition: GraphOfGridWrappers.cpp:377
void addWellConnections(GraphOfGrid< Dune::CpGrid > &gog, const Dune::cpgrid::WellConnections &wells, bool checkWellIntersections)
Add WellConnections to the GraphOfGrid.
Definition: GraphOfGridWrappers.cpp:183
A class calculating and representing all connections of wells.
Definition: WellConnections.hpp:50
EdgeWeightMethod
enum for choosing Methods for weighting graph-edges correspoding to cell interfaces in Zoltan's or Me...
Definition: GridEnums.hpp:34