cleanup; introduced UIndirectList

This commit is contained in:
mattijs
2009-04-14 12:30:49 +01:00
parent f0d3088592
commit 79d4641b37

View File

@ -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
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
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
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
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
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
{ {