mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Merge pull request #5258 from bska/prune-inactive-pavg-conns
Allow for Sparse Source-Location Subsets
This commit is contained in:
commit
84052fcefc
@ -350,14 +350,13 @@ initializeWellPerfData()
|
|||||||
hasFirstConnection = true;
|
hasFirstConnection = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto pd = PerforationData{};
|
auto& pd = well_perf_data_[well_index].emplace_back();
|
||||||
|
|
||||||
pd.cell_index = active_index;
|
pd.cell_index = active_index;
|
||||||
pd.connection_transmissibility_factor = connection.CF();
|
pd.connection_transmissibility_factor = connection.CF();
|
||||||
pd.satnum_id = connection.satTableId();
|
pd.satnum_id = connection.satTableId();
|
||||||
pd.ecl_index = connection_index;
|
pd.ecl_index = connection_index;
|
||||||
|
|
||||||
well_perf_data_[well_index].push_back(pd);
|
|
||||||
|
|
||||||
parallelWellInfo.pushBackEclIndex(connection_index_above,
|
parallelWellInfo.pushBackEclIndex(connection_index_above,
|
||||||
connection_index);
|
connection_index);
|
||||||
}
|
}
|
||||||
|
@ -148,7 +148,19 @@ void Opm::ParallelPAvgDynamicSourceData::defineCommunication()
|
|||||||
|
|
||||||
// 4) Build translation mapping from source term element indices to
|
// 4) Build translation mapping from source term element indices to
|
||||||
// storage indices.
|
// storage indices.
|
||||||
this->storageIndex_.resize(allIndices.size());
|
//
|
||||||
|
// Note that if the source terms aren't all active--e.g., if a well
|
||||||
|
// is connected in deactivated cells--then allIndices is not a
|
||||||
|
// permutation of 0..allIndices.size()-1 and the maximum source
|
||||||
|
// location may exceed size()-1. Resize the storageIndex_ according
|
||||||
|
// to the largest source location ID.
|
||||||
|
if (auto maxIxPos = std::max_element(allIndices.begin(), allIndices.end());
|
||||||
|
maxIxPos != allIndices.end())
|
||||||
|
{
|
||||||
|
// +1 for zero-based indices.
|
||||||
|
this->storageIndex_.resize(*maxIxPos + 1);
|
||||||
|
}
|
||||||
|
|
||||||
auto storageIx = std::vector<double>::size_type{0};
|
auto storageIx = std::vector<double>::size_type{0};
|
||||||
for (const auto& elemIndex : allIndices) {
|
for (const auto& elemIndex : allIndices) {
|
||||||
this->storageIndex_[elemIndex] = storageIx++;
|
this->storageIndex_[elemIndex] = storageIx++;
|
||||||
|
@ -28,12 +28,12 @@ namespace Opm
|
|||||||
/// Static data associated with a well perforation.
|
/// Static data associated with a well perforation.
|
||||||
struct PerforationData
|
struct PerforationData
|
||||||
{
|
{
|
||||||
int cell_index;
|
int cell_index{};
|
||||||
double connection_transmissibility_factor;
|
double connection_transmissibility_factor{};
|
||||||
double connection_d_factor;
|
double connection_d_factor{};
|
||||||
int satnum_id;
|
int satnum_id{};
|
||||||
/// \brief The original index of the perforation in ECL Schedule
|
/// \brief The original index of the perforation in ECL Schedule
|
||||||
std::size_t ecl_index;
|
std::size_t ecl_index{};
|
||||||
};
|
};
|
||||||
|
|
||||||
struct PerforationRates
|
struct PerforationRates
|
||||||
|
Loading…
Reference in New Issue
Block a user