mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
[bugfix] fix ownerMask for parallel FIP code.
This commit is contained in:
parent
e6acf888cc
commit
2eca5d71e6
@ -148,7 +148,8 @@ namespace Opm {
|
|||||||
FIP_PV = 5, //< Pore volume
|
FIP_PV = 5, //< Pore volume
|
||||||
FIP_WEIGHTED_PRESSURE = 6
|
FIP_WEIGHTED_PRESSURE = 6
|
||||||
};
|
};
|
||||||
std::array<std::vector<double>, 7> fip;
|
static const int fipValues = FIP_WEIGHTED_PRESSURE + 1 ;
|
||||||
|
std::array<std::vector<double>, fipValues> fip;
|
||||||
};
|
};
|
||||||
|
|
||||||
// --------- Public methods ---------
|
// --------- Public methods ---------
|
||||||
@ -1025,7 +1026,7 @@ namespace Opm {
|
|||||||
const auto& pv = geo_.poreVolume();
|
const auto& pv = geo_.poreVolume();
|
||||||
const int maxnp = Opm::BlackoilPhases::MaxNumPhases;
|
const int maxnp = Opm::BlackoilPhases::MaxNumPhases;
|
||||||
|
|
||||||
for (int i = 0; i<7; i++) {
|
for (int i = 0; i<FIPData::fipValues; i++) {
|
||||||
fip_.fip[i].resize(nc,0.0);
|
fip_.fip[i].resize(nc,0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1049,7 +1050,7 @@ namespace Opm {
|
|||||||
|
|
||||||
// For a parallel run this is just a local maximum and needs to be updated later
|
// For a parallel run this is just a local maximum and needs to be updated later
|
||||||
int dims = *std::max_element(fipnum.begin(), fipnum.end());
|
int dims = *std::max_element(fipnum.begin(), fipnum.end());
|
||||||
std::vector<std::vector<double>> values(dims, std::vector<double>(7,0.0));
|
std::vector<std::vector<double>> values(dims, std::vector<double>(FIPData::fipValues,0.0));
|
||||||
|
|
||||||
std::vector<double> hcpv(dims, 0.0);
|
std::vector<double> hcpv(dims, 0.0);
|
||||||
std::vector<double> pres(dims, 0.0);
|
std::vector<double> pres(dims, 0.0);
|
||||||
@ -1117,11 +1118,12 @@ namespace Opm {
|
|||||||
// mask[c] is 1 if we need to compute something in parallel
|
// mask[c] is 1 if we need to compute something in parallel
|
||||||
const auto & pinfo =
|
const auto & pinfo =
|
||||||
boost::any_cast<const ParallelISTLInformation&>(istlSolver().parallelInformation());
|
boost::any_cast<const ParallelISTLInformation&>(istlSolver().parallelInformation());
|
||||||
const auto& mask = pinfo.getOwnerMask();
|
const auto& mask = pinfo.updateOwnerMask( fipnum );
|
||||||
|
|
||||||
auto comm = pinfo.communicator();
|
auto comm = pinfo.communicator();
|
||||||
// Compute the global dims value and resize values accordingly.
|
// Compute the global dims value and resize values accordingly.
|
||||||
dims = comm.max(dims);
|
dims = comm.max(dims);
|
||||||
values.resize(dims, std::vector<double>(7,0.0));
|
values.resize(dims, std::vector<double>(FIPData::fipValues,0.0));
|
||||||
|
|
||||||
//Accumulate phases for each region
|
//Accumulate phases for each region
|
||||||
for (int phase = 0; phase < maxnp; ++phase) {
|
for (int phase = 0; phase < maxnp; ++phase) {
|
||||||
|
Loading…
Reference in New Issue
Block a user