Skip to content
Snippets Groups Projects
Commit 79d4641b authored by mattijs's avatar mattijs
Browse files

cleanup; introduced UIndirectList

parent f0d30885
No related branches found
No related tags found
No related merge requests found
...@@ -52,24 +52,13 @@ void Foam::mapDistribute::distribute ...@@ -52,24 +52,13 @@ void Foam::mapDistribute::distribute
if (domain != Pstream::myProcNo() && map.size()) if (domain != Pstream::myProcNo() && map.size())
{ {
List<T> subField(map.size());
forAll(map, i)
{
subField[i] = field[map[i]];
}
OPstream toNbr(Pstream::blocking, domain); OPstream toNbr(Pstream::blocking, domain);
toNbr << subField; toNbr << UIndirectList<T>(field, map);
} }
} }
// Subset myself // Subset myself
const labelList& mySubMap = subMap[Pstream::myProcNo()]; UIndirectList<T> subField(field, subMap[Pstream::myProcNo()]);
List<T> subField(mySubMap.size());
forAll(mySubMap, i)
{
subField[i] = field[mySubMap[i]];
}
// Receive sub field from myself (subField) // Receive sub field from myself (subField)
const labelList& map = constructMap[Pstream::myProcNo()]; const labelList& map = constructMap[Pstream::myProcNo()];
...@@ -126,13 +115,7 @@ void Foam::mapDistribute::distribute ...@@ -126,13 +115,7 @@ void Foam::mapDistribute::distribute
List<T> newField(constructSize); List<T> newField(constructSize);
// Subset myself // Subset myself
const labelList& mySubMap = subMap[Pstream::myProcNo()]; UIndirectList<T> subField(field, subMap[Pstream::myProcNo()]);
List<T> subField(mySubMap.size());
forAll(mySubMap, i)
{
subField[i] = field[mySubMap[i]];
}
// Receive sub field from myself (subField) // Receive sub field from myself (subField)
const labelList& map = constructMap[Pstream::myProcNo()]; const labelList& map = constructMap[Pstream::myProcNo()];
...@@ -152,16 +135,8 @@ void Foam::mapDistribute::distribute ...@@ -152,16 +135,8 @@ void Foam::mapDistribute::distribute
if (Pstream::myProcNo() == sendProc) if (Pstream::myProcNo() == sendProc)
{ {
// I am sender. Send to recvProc. // I am sender. Send to recvProc.
const labelList& map = subMap[recvProc];
List<T> subField(map.size());
forAll(map, i)
{
subField[i] = field[map[i]];
}
OPstream toNbr(Pstream::scheduled, recvProc); OPstream toNbr(Pstream::scheduled, recvProc);
toNbr << subField; toNbr << UIndirectList<T>(field, subMap[recvProc]);
} }
else else
{ {
...@@ -374,24 +349,13 @@ void Foam::mapDistribute::distribute ...@@ -374,24 +349,13 @@ void Foam::mapDistribute::distribute
if (domain != Pstream::myProcNo() && map.size()) if (domain != Pstream::myProcNo() && map.size())
{ {
List<T> subField(map.size());
forAll(map, i)
{
subField[i] = field[map[i]];
}
OPstream toNbr(Pstream::blocking, domain); OPstream toNbr(Pstream::blocking, domain);
toNbr << subField; toNbr << UIndirectList<T>(field, map);
} }
} }
// Subset myself // Subset myself
const labelList& mySubMap = subMap[Pstream::myProcNo()]; UIndirectList<T> subField(field, subMap[Pstream::myProcNo()]);
List<T> subField(mySubMap.size());
forAll(mySubMap, i)
{
subField[i] = field[mySubMap[i]];
}
// Receive sub field from myself (subField) // Receive sub field from myself (subField)
const labelList& map = constructMap[Pstream::myProcNo()]; const labelList& map = constructMap[Pstream::myProcNo()];
...@@ -449,13 +413,7 @@ void Foam::mapDistribute::distribute ...@@ -449,13 +413,7 @@ void Foam::mapDistribute::distribute
List<T> newField(constructSize, nullValue); List<T> newField(constructSize, nullValue);
// Subset myself // Subset myself
const labelList& mySubMap = subMap[Pstream::myProcNo()]; UIndirectList<T> subField(field, subMap[Pstream::myProcNo()]);
List<T> subField(mySubMap.size());
forAll(mySubMap, i)
{
subField[i] = field[mySubMap[i]];
}
// Receive sub field from myself (subField) // Receive sub field from myself (subField)
const labelList& map = constructMap[Pstream::myProcNo()]; const labelList& map = constructMap[Pstream::myProcNo()];
...@@ -475,16 +433,8 @@ void Foam::mapDistribute::distribute ...@@ -475,16 +433,8 @@ void Foam::mapDistribute::distribute
if (Pstream::myProcNo() == sendProc) if (Pstream::myProcNo() == sendProc)
{ {
// I am sender. Send to recvProc. // I am sender. Send to recvProc.
const labelList& map = subMap[recvProc];
List<T> subField(map.size());
forAll(map, i)
{
subField[i] = field[map[i]];
}
OPstream toNbr(Pstream::scheduled, recvProc); OPstream toNbr(Pstream::scheduled, recvProc);
toNbr << subField; toNbr << UIndirectList<T>(field, subMap[recvProc]);
} }
else else
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment