Parallel load balancing: cannot use weights in field decomposition

This commit is contained in:
Hrvoje Jasak 2018-10-24 17:06:01 +01:00
parent b60b67ffb6
commit 324b129060

View file

@ -61,7 +61,10 @@ processorVolPatchFieldDecomposer
addressing_(addressingSlice.size()), addressing_(addressingSlice.size()),
weights_(addressingSlice.size()) weights_(addressingSlice.size())
{ {
const scalarField& weights = mesh.weights().internalField(); // Cannot use weights due to parallel comms in load balancing
// Use 0.5 instead, as this is not precise mapping
// HJ, 21/Oct/2018
const labelList& own = mesh.faceOwner(); const labelList& own = mesh.faceOwner();
const labelList& neighb = mesh.faceNeighbour(); const labelList& neighb = mesh.faceNeighbour();
@ -75,14 +78,12 @@ processorVolPatchFieldDecomposer
// This is a regular face. it has been an internal face // This is a regular face. it has been an internal face
// of the original mesh and now it has become a face // of the original mesh and now it has become a face
// on the parallel boundary // on the parallel boundary
// Use 0.5 weights
addressing_[i].setSize(2); addressing_[i].setSize(2);
weights_[i].setSize(2); weights_[i].setSize(2, 0.5);
addressing_[i][0] = own[ai]; addressing_[i][0] = own[ai];
addressing_[i][1] = neighb[ai]; addressing_[i][1] = neighb[ai];
weights_[i][0] = weights[ai];
weights_[i][1] = 1.0 - weights[ai];
} }
else else
{ {
@ -155,8 +156,8 @@ fvFieldDecomposer::fvFieldDecomposer
static_cast<processorSurfacePatchFieldDecomposer*>(NULL) static_cast<processorSurfacePatchFieldDecomposer*>(NULL)
) )
{ {
// HR 25.06.18: Weights may be required for some mappings and might hang in parallel. // HR 25.06.18: Weights cannot be used for mappings
completeMesh_.weights(); // HJ, 19/Oct/2018
forAll (boundaryAddressing_, patchi) forAll (boundaryAddressing_, patchi)
{ {