OpenFOAM logo
Open Source CFD Toolkit

commSchedule.H File Reference


Detailed Description

View commSchedule.H
License
This file is part of OpenFOAM.

OpenFOAM is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or (at your
option) any later version.

OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License
along with OpenFOAM; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Description
Given the processor topology works out a non-blocking communication
schedule. Instead of doing all sends first and having a lot of buffering
this works out how to have each processor do a sequence of sends and
receives such that there can never be the case that two processors are
waiting for each other to send something.

*this[procI] is for processor procI a list with for every iteration
the neighbour it has to communicate with. It does not prespecify which
half should start sending or receiving. You might want to group the two
close together or separate them in time as long as one is sending and the
other is receiving.


A typical use with matched send and receives is something like:

const labelList& mySchedule = operator[](Pstream::myProcNo()];

forAll(mySchedule, iterI)
{
    label nb = mySchedule[iterI];

    if (nb < Pstream::myProcNo())
    {
        // Send to neighbour
        ..
        // Receive from neighbour
        ..
    }
    else
    {
        // Receive from neighbour
        ..
        // Send to neighbour
        ..
    }
}



Source files

Definition in file commSchedule.H.

Go to the source code of this file.

Namespaces

namespace  Foam

Classes

class  commSchedule

For further information go to www.openfoam.org