Merge pull request #3088 from joakim-hove/use-active-index

Use active index
This commit is contained in:
Markus Blatt 2021-03-01 09:22:25 +01:00 committed by GitHub
commit 0644fba01b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 9 deletions

View File

@ -2669,11 +2669,10 @@ private:
referencePorosity_[/*timeIdx=*/0].resize(numDof);
const auto& fp = eclState.fieldProps();
const std::vector<double> porvData = fp.porv(true);
const std::vector<double> porvData = fp.porv(false);
const std::vector<int> actnumData = fp.actnum();
for (size_t dofIdx = 0; dofIdx < numDof; ++ dofIdx) {
unsigned cartElemIdx = vanguard.cartesianIndex(dofIdx);
Scalar poreVolume = porvData[cartElemIdx];
Scalar poreVolume = porvData[dofIdx];
// we define the porosity as the accumulated pore volume divided by the
// geometric volume of the element. Note that -- in pathetic cases -- it can

View File

@ -49,14 +49,23 @@ void ParallelFieldPropsManager::reset_actnum(const std::vector<int>& actnum)
std::vector<double> ParallelFieldPropsManager::porv(bool global) const
{
std::vector<double> result;
std::vector<double> global_porv;
if (m_comm.rank() == 0)
result = m_manager.porv(global);
size_t size = result.size();
global_porv = m_manager.porv(true);
size_t size = global_porv.size();
m_comm.broadcast(&size, 1, 0);
result.resize(size);
m_comm.broadcast(result.data(), size, 0);
return result;
global_porv.resize(size);
m_comm.broadcast(global_porv.data(), size, 0);
if (global)
return global_porv;
std::vector<double> local_porv(this->m_activeSize());
for (int i = 0; i < m_activeSize(); ++i)
{
local_porv[i] = global_porv[this->m_local2Global(i)];
}
return local_porv;
}