Change the type of the argument possibleFutureConnections from a pointer to a const reference

This commit is contained in:
Lisa Julia Nebel
2024-08-08 09:10:36 +02:00
parent 9a97a8d658
commit f6a06f2639
5 changed files with 22 additions and 24 deletions

View File

@@ -953,10 +953,10 @@ private:
? param.num_local_domains_
: num_cells / default_cells_per_domain;
auto possibleFutureConnectionSet = this->model_.simulator().vanguard().schedule().getPossibleFutureConnections();
const auto& possibleFutureConnectionSet = this->model_.simulator().vanguard().schedule().getPossibleFutureConnections();
return ::Opm::partitionCells(param.local_domain_partition_method_,
num_domains,
grid.leafGridView(), wells, &possibleFutureConnectionSet, zoltan_ctrl);
grid.leafGridView(), wells, possibleFutureConnectionSet, zoltan_ctrl);
}
std::vector<int> reconstitutePartitionVector() const

View File

@@ -216,7 +216,7 @@ doLoadBalance_(const Dune::EdgeWeightMethod edgeWeightsMethod,
#if HAVE_OPENCL || HAVE_ROCSPARSE || HAVE_CUDA
if (partitionJacobiBlocks) {
this->cell_part_ = this->grid_->
zoltanPartitionWithoutScatter(&wells, &possibleFutureConnections, faceTrans.data(),
zoltanPartitionWithoutScatter(&wells, possibleFutureConnections, faceTrans.data(),
numJacobiBlocks,
imbalanceTol);
}
@@ -350,13 +350,13 @@ distributeGrid(const Dune::EdgeWeightMethod edgeWeights
: std::vector<int>{};
//For this case, simple partitioning is selected automatically
parallelWells =
std::get<1>(this->grid_->loadBalance(handle, parts, &wells, &possibleFutureConnections, ownersFirst,
std::get<1>(this->grid_->loadBalance(handle, parts, &wells, possibleFutureConnections, ownersFirst,
addCornerCells, overlapLayers));
}
else {
parallelWells =
std::get<1>(this->grid_->loadBalance(handle, edgeWeightsMethod,
&wells, &possibleFutureConnections,
&wells, possibleFutureConnections,
serialPartitioning,
faceTrans.data(), ownersFirst,
addCornerCells, overlapLayers,

View File

@@ -108,7 +108,7 @@ public:
template <class GridView, class Element>
void buildLocalGraph(const GridView& grid_view,
const std::vector<Opm::Well>& wells,
const std::unordered_map<std::string, std::set<int>>* possibleFutureConnections,
const std::unordered_map<std::string, std::set<int>>& possibleFutureConnections,
const Opm::ZoltanPartitioningControl<Element>& zoltan_ctrl);
/// Partition rank's interior cells into non-overlapping domains using
@@ -181,7 +181,7 @@ private:
template <typename Comm>
void connectWells(const Comm comm,
const std::vector<Opm::Well>& wells,
const std::unordered_map<std::string, std::set<int>>* possibleFutureConnections,
const std::unordered_map<std::string, std::set<int>>& possibleFutureConnections,
const std::unordered_map<int, int>& g2l);
};
@@ -198,7 +198,7 @@ ZoltanPartitioner::ZoltanPartitioner(const GridView&
template <class GridView, class Element>
void ZoltanPartitioner::buildLocalGraph(const GridView& grid_view,
const std::vector<Opm::Well>& wells,
const std::unordered_map<std::string, std::set<int>>* possibleFutureConnections,
const std::unordered_map<std::string, std::set<int>>& possibleFutureConnections,
const Opm::ZoltanPartitioningControl<Element>& zoltan_ctrl)
{
this->connectWells(grid_view.comm(), wells, possibleFutureConnections, this->connectElements(grid_view, zoltan_ctrl));
@@ -287,7 +287,7 @@ ZoltanPartitioner::connectElements(const GridView&
template <typename Comm>
void ZoltanPartitioner::connectWells(const Comm comm,
const std::vector<Opm::Well>& wells,
const std::unordered_map<std::string, std::set<int>>* possibleFutureConnections,
const std::unordered_map<std::string, std::set<int>>& possibleFutureConnections,
const std::unordered_map<int, int>& g2l)
{
auto distributedWells = 0;
@@ -305,17 +305,15 @@ void ZoltanPartitioner::connectWells(const Comm
cellIx.push_back(locPos->second);
}
if (possibleFutureConnections) {
const auto possibleFutureConnectionSetIt = possibleFutureConnections->find(well.name());
if (possibleFutureConnectionSetIt != possibleFutureConnections->end()) {
for (auto& global_index : possibleFutureConnectionSetIt->second) {
auto locPos = g2l.find(global_index);
if (locPos == g2l.end()) {
++otherProc;
continue;
}
cellIx.push_back(locPos->second);
const auto possibleFutureConnectionSetIt = possibleFutureConnections.find(well.name());
if (possibleFutureConnectionSetIt != possibleFutureConnections.end()) {
for (auto& global_index : possibleFutureConnectionSetIt->second) {
auto locPos = g2l.find(global_index);
if (locPos == g2l.end()) {
++otherProc;
continue;
}
cellIx.push_back(locPos->second);
}
}
@@ -358,7 +356,7 @@ std::pair<std::vector<int>, int>
partitionCellsZoltan(const int num_domains,
const GridView& grid_view,
const std::vector<Opm::Well>& wells,
const std::unordered_map<std::string, std::set<int>>* possibleFutureConnections,
const std::unordered_map<std::string, std::set<int>>& possibleFutureConnections,
const Opm::ZoltanPartitioningControl<Element>& zoltan_ctrl)
{
if (num_domains <= 1) { // No partitioning => every cell in domain zero.
@@ -593,7 +591,7 @@ Opm::partitionCells(const std::string& method,
const int num_local_domains,
const GridView& grid_view,
[[maybe_unused]] const std::vector<Well>& wells,
[[maybe_unused]] const std::unordered_map<std::string, std::set<int>>* possibleFutureConnections,
[[maybe_unused]] const std::unordered_map<std::string, std::set<int>>& possibleFutureConnections,
[[maybe_unused]] const ZoltanPartitioningControl<Element>& zoltan_ctrl)
{
if (method == "zoltan") {
@@ -691,7 +689,7 @@ Opm::partitionCellsSimple(const int num_cells, const int num_domains)
const std::remove_cv_t<std::remove_reference_t< \
decltype(std::declval<Grid>().leafGridView())>>&, \
const std::vector<Opm::Well>&, \
const std::unordered_map<std::string, std::set<int>>*, \
const std::unordered_map<std::string, std::set<int>>&, \
const Opm::ZoltanPartitioningControl< \
typename std::remove_cv_t<std::remove_reference_t< \
decltype(std::declval<Grid>().leafGridView())>>::template Codim<0>::Entity>&)

View File

@@ -93,7 +93,7 @@ partitionCells(const std::string& method,
const int num_local_domains,
const GridView& grid_view,
const std::vector<Well>& wells,
const std::unordered_map<std::string, std::set<int>>* possibleFutureConnections,
const std::unordered_map<std::string, std::set<int>>& possibleFutureConnections,
const ZoltanPartitioningControl<Element>& zoltan_ctrl);
/// Read a partitioning from file, assumed to contain one number per cell, its partition number.

View File

@@ -62,7 +62,7 @@ namespace detail
cart[ cartMapper.cartesianIndex( i ) ] = i;
Dune::cpgrid::WellConnections well_indices;
well_indices.init(wells, &possibleFutureConnections, cpgdim, cart);
well_indices.init(wells, possibleFutureConnections, cpgdim, cart);
for (auto& well : well_indices)
{