Merge pull request #2290 from akva2/noecl_flush_fluidsystem

Avoid deck usage on non-root processes setting up FluidSystem
This commit is contained in:
Bård Skaflestad
2020-01-21 10:47:44 +01:00
committed by GitHub
2 changed files with 65 additions and 31 deletions

View File

@@ -2475,8 +2475,32 @@ private:
const auto& simulator = this->simulator();
const auto& deck = simulator.vanguard().deck();
const auto& eclState = simulator.vanguard().eclState();
const auto& comm = simulator.gridView().comm();
FluidSystem::initFromDeck(deck, eclState);
if (comm.rank() == 0)
FluidSystem::initFromDeck(deck, eclState);
#if HAVE_MPI
if (comm.size() > 1) {
if (comm.rank() == 0) {
EclMpiSerializer ser(comm);
size_t size = FluidSystem::packSize(ser);
std::vector<char> buffer(size);
int position = 0;
FluidSystem::pack(buffer, position, ser);
comm.broadcast(&position, 1, 0);
comm.broadcast(buffer.data(), position, 0);
} else {
int size;
comm.broadcast(&size, 1, 0);
std::vector<char> buffer(size);
comm.broadcast(buffer.data(), size, 0);
int position = 0;
EclMpiSerializer ser(comm);
FluidSystem::unpack(buffer, position, ser);
}
}
#endif
}
void readInitialCondition_()