diff --git a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeTemplates.C b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeTemplates.C index 08e12b876e..330f48be00 100644 --- a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeTemplates.C +++ b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeTemplates.C @@ -52,24 +52,13 @@ void Foam::mapDistribute::distribute if (domain != Pstream::myProcNo() && map.size()) { - List subField(map.size()); - forAll(map, i) - { - subField[i] = field[map[i]]; - } OPstream toNbr(Pstream::blocking, domain); - toNbr << subField; + toNbr << UIndirectList(field, map); } } // Subset myself - const labelList& mySubMap = subMap[Pstream::myProcNo()]; - - List subField(mySubMap.size()); - forAll(mySubMap, i) - { - subField[i] = field[mySubMap[i]]; - } + UIndirectList subField(field, subMap[Pstream::myProcNo()]); // Receive sub field from myself (subField) const labelList& map = constructMap[Pstream::myProcNo()]; @@ -126,13 +115,7 @@ void Foam::mapDistribute::distribute List newField(constructSize); // Subset myself - const labelList& mySubMap = subMap[Pstream::myProcNo()]; - - List subField(mySubMap.size()); - forAll(mySubMap, i) - { - subField[i] = field[mySubMap[i]]; - } + UIndirectList subField(field, subMap[Pstream::myProcNo()]); // Receive sub field from myself (subField) const labelList& map = constructMap[Pstream::myProcNo()]; @@ -152,16 +135,8 @@ void Foam::mapDistribute::distribute if (Pstream::myProcNo() == sendProc) { // I am sender. Send to recvProc. - const labelList& map = subMap[recvProc]; - - List subField(map.size()); - forAll(map, i) - { - subField[i] = field[map[i]]; - } - OPstream toNbr(Pstream::scheduled, recvProc); - toNbr << subField; + toNbr << UIndirectList(field, subMap[recvProc]); } else { @@ -374,24 +349,13 @@ void Foam::mapDistribute::distribute if (domain != Pstream::myProcNo() && map.size()) { - List subField(map.size()); - forAll(map, i) - { - subField[i] = field[map[i]]; - } OPstream toNbr(Pstream::blocking, domain); - toNbr << subField; + toNbr << UIndirectList(field, map); } } // Subset myself - const labelList& mySubMap = subMap[Pstream::myProcNo()]; - - List subField(mySubMap.size()); - forAll(mySubMap, i) - { - subField[i] = field[mySubMap[i]]; - } + UIndirectList subField(field, subMap[Pstream::myProcNo()]); // Receive sub field from myself (subField) const labelList& map = constructMap[Pstream::myProcNo()]; @@ -449,13 +413,7 @@ void Foam::mapDistribute::distribute List newField(constructSize, nullValue); // Subset myself - const labelList& mySubMap = subMap[Pstream::myProcNo()]; - - List subField(mySubMap.size()); - forAll(mySubMap, i) - { - subField[i] = field[mySubMap[i]]; - } + UIndirectList subField(field, subMap[Pstream::myProcNo()]); // Receive sub field from myself (subField) const labelList& map = constructMap[Pstream::myProcNo()]; @@ -475,16 +433,8 @@ void Foam::mapDistribute::distribute if (Pstream::myProcNo() == sendProc) { // I am sender. Send to recvProc. - const labelList& map = subMap[recvProc]; - - List subField(map.size()); - forAll(map, i) - { - subField[i] = field[map[i]]; - } - OPstream toNbr(Pstream::scheduled, recvProc); - toNbr << subField; + toNbr << UIndirectList(field, subMap[recvProc]); } else {