Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Friends | List of all members
mapDistributeBase Class Reference

Class containing processor-to-processor mapping information. More...

Inheritance diagram for mapDistributeBase:
Inheritance graph
[legend]
Collaboration diagram for mapDistributeBase:
Collaboration graph
[legend]

Public Member Functions

 ClassName ("mapDistributeBase")
 
 mapDistributeBase (const label comm=UPstream::worldComm)
 
 mapDistributeBase (const mapDistributeBase &map)
 
 mapDistributeBase (mapDistributeBase &&map)
 
 mapDistributeBase (const label constructSize, labelListList &&subMap, labelListList &&constructMap, const bool subHasFlip=false, const bool constructHasFlip=false, const label comm=UPstream::worldComm)
 
 mapDistributeBase (const labelUList &sendProcs, const labelUList &recvProcs, const label comm=UPstream::worldComm)
 
 mapDistributeBase (const globalIndex &, labelList &elements, List< Map< label >> &compactMap, const int tag=Pstream::msgType(), const label comm=UPstream::worldComm)
 
 mapDistributeBase (const globalIndex &, labelListList &cellCells, List< Map< label >> &compactMap, const int tag=Pstream::msgType(), const label comm=UPstream::worldComm)
 
 mapDistributeBase (labelListList &&subMap, const bool subHasFlip=false, const bool constructHasFlip=false, const label comm=UPstream::worldComm)
 
 mapDistributeBase (Istream &is)
 
label constructSize () const
 
label & constructSize ()
 
const labelListListsubMap () const
 
labelListListsubMap ()
 
const labelListListconstructMap () const
 
labelListListconstructMap ()
 
bool subHasFlip () const
 
boolsubHasFlip ()
 
bool constructHasFlip () const
 
boolconstructHasFlip ()
 
label comm () const
 
const List< labelPair > & schedule () const
 
void transfer (mapDistributeBase &rhs)
 
void compact (const boolList &elemIsUsed, const int tag=UPstream::msgType())
 
void compact (const boolList &elemIsUsed, const label localSize, labelList &oldToNewSub, labelList &oldToNewConstruct, const int tag=UPstream::msgType())
 
template<class T >
void distribute (List< T > &fld, const int tag=UPstream::msgType()) const
 
template<class T , class negateOp >
void distribute (List< T > &fld, const negateOp &negOp, const int tag=UPstream::msgType()) const
 
template<class T >
void distribute (DynamicList< T > &fld, const int tag=UPstream::msgType()) const
 
template<class T >
void reverseDistribute (const label constructSize, List< T > &, const int tag=UPstream::msgType()) const
 
template<class T >
void reverseDistribute (const label constructSize, const T &nullValue, List< T > &fld, const int tag=UPstream::msgType()) const
 
template<class T >
void send (PstreamBuffers &, const List< T > &) const
 
template<class T >
void receive (PstreamBuffers &, List< T > &) const
 
void printLayout (Ostream &os) const
 
void updateMesh (const mapPolyMesh &)
 
void operator= (const mapDistributeBase &rhs)
 
void operator= (mapDistributeBase &&rhs)
 

Static Public Member Functions

static List< labelPairschedule (const labelListList &subMap, const labelListList &constructMap, const int tag, const label comm=UPstream::worldComm)
 
static label renumber (const globalIndex &, const List< Map< label >> &compactMap, const label globalElement)
 
template<class T , class negateOp >
static void distribute (const Pstream::commsTypes commsType, const List< labelPair > &schedule, const label constructSize, const labelListList &subMap, const bool subHasFlip, const labelListList &constructMap, const bool constructHasFlip, List< T > &, const negateOp &negOp, const int tag=UPstream::msgType(), const label comm=UPstream::worldComm)
 
template<class T , class CombineOp , class negateOp >
static void distribute (const Pstream::commsTypes commsType, const List< labelPair > &schedule, const label constructSize, const labelListList &subMap, const bool subHasFlip, const labelListList &constructMap, const bool constructHasFlip, List< T > &, const T &nullValue, const CombineOp &cop, const negateOp &negOp, const int tag=UPstream::msgType(), const label comm=UPstream::worldComm)
 

Protected Member Functions

void calcCompactAddressing (const globalIndex &globalNumbering, const labelUList &elements, List< Map< label >> &compactMap) const
 
void calcCompactAddressing (const globalIndex &globalNumbering, const labelListList &elements, List< Map< label >> &compactMap) const
 
void exchangeAddressing (const int tag, const globalIndex &globalNumbering, labelList &elements, List< Map< label >> &compactMap, labelList &compactStart)
 
void exchangeAddressing (const int tag, const globalIndex &globalNumbering, labelListList &elements, List< Map< label >> &compactMap, labelList &compactStart)
 

Static Protected Member Functions

static void checkReceivedSize (const label proci, const label expectedSize, const label receivedSize)
 
template<class T , class CombineOp , class negateOp >
static void flipAndCombine (const labelUList &map, const bool hasFlip, const UList< T > &rhs, const CombineOp &cop, const negateOp &negOp, List< T > &lhs)
 
template<class T , class negateOp >
static T accessAndFlip (const UList< T > &fld, const label index, const bool hasFlip, const negateOp &negOp)
 

Protected Attributes

label constructSize_
 
labelListList subMap_
 
labelListList constructMap_
 
bool subHasFlip_
 
bool constructHasFlip_
 
label comm_
 
autoPtr< List< labelPair > > schedulePtr_
 

Friends

Istreamoperator>> (Istream &, mapDistributeBase &)
 
Ostreamoperator<< (Ostream &, const mapDistributeBase &)
 

Detailed Description

Class containing processor-to-processor mapping information.

We store mapping from the bits-to-send to the complete starting list (subXXXMap) and from the received bits to their location in the new list (constructXXXMap).

Note: Schedule is a list of processor pairs (one send, one receive. One of them will be myself) which forms a scheduled (i.e. non-buffered) exchange. See distribute on how to use it. Note2: number of items sent on one processor have to equal the number of items received on the other processor.

To aid constructing these maps there are the constructors from global numbering, either with or without transforms.

Constructors using compact numbering: layout is

It rewrites the input global indices into indices into the constructed data.

When constructing from components optionally a 'flip' on the maps can be specified. This will interpret the map values as index+flip, similar to e.g. faceProcAddressing. The flip will only be applied to fieldTypes (scalar, vector, .. triad)

Source files

Definition at line 99 of file mapDistributeBase.H.

Constructor & Destructor Documentation

◆ mapDistributeBase() [1/9]

mapDistributeBase ( const label  comm = UPstream::worldComm)

Definition at line 559 of file mapDistributeBase.C.

◆ mapDistributeBase() [2/9]

Definition at line 570 of file mapDistributeBase.C.

◆ mapDistributeBase() [3/9]

Definition at line 582 of file mapDistributeBase.C.

References mapDistributeBase::transfer().

Here is the call graph for this function:

◆ mapDistributeBase() [4/9]

mapDistributeBase ( const label  constructSize,
labelListList &&  subMap,
labelListList &&  constructMap,
const bool  subHasFlip = false,
const bool  constructHasFlip = false,
const label  comm = UPstream::worldComm 
)

Definition at line 591 of file mapDistributeBase.C.

◆ mapDistributeBase() [5/9]

mapDistributeBase ( const labelUList sendProcs,
const labelUList recvProcs,
const label  comm = UPstream::worldComm 
)

Definition at line 611 of file mapDistributeBase.C.

References Foam::abort(), Foam::FatalError, FatalErrorInFunction, forAll, UPstream::myProcNo(), UPstream::nProcs(), List::setSize(), UList::size(), and Foam::Zero.

Here is the call graph for this function:

◆ mapDistributeBase() [6/9]

mapDistributeBase ( const globalIndex globalNumbering,
labelList elements,
List< Map< label >> &  compactMap,
const int  tag = Pstream::msgType(),
const label  comm = UPstream::worldComm 
)

Definition at line 690 of file mapDistributeBase.C.

References Foam::expressions::patchExpr::debug, and Foam::Pout.

◆ mapDistributeBase() [7/9]

mapDistributeBase ( const globalIndex globalNumbering,
labelListList cellCells,
List< Map< label >> &  compactMap,
const int  tag = Pstream::msgType(),
const label  comm = UPstream::worldComm 
)

Definition at line 751 of file mapDistributeBase.C.

References Foam::expressions::patchExpr::debug, and Foam::Pout.

◆ mapDistributeBase() [8/9]

mapDistributeBase ( labelListList &&  subMap,
const bool  subHasFlip = false,
const bool  constructHasFlip = false,
const label  comm = UPstream::worldComm 
)
explicit

Definition at line 812 of file mapDistributeBase.C.

References Pstream::exchangeSizes(), forAll, UPstream::myProcNo(), UPstream::nProcs(), List::setSize(), and List::transfer().

Here is the call graph for this function:

◆ mapDistributeBase() [9/9]

Definition at line 868 of file mapDistributeBase.C.

Member Function Documentation

◆ checkReceivedSize()

void checkReceivedSize ( const label  proci,
const label  expectedSize,
const label  receivedSize 
)
staticprotected

Definition at line 197 of file mapDistributeBase.C.

References Foam::abort(), Foam::FatalError, and FatalErrorInFunction.

Here is the call graph for this function:

◆ calcCompactAddressing() [1/2]

void calcCompactAddressing ( const globalIndex globalNumbering,
const labelUList elements,
List< Map< label >> &  compactMap 
) const
protected

Definition at line 292 of file mapDistributeBase.C.

References forAll, globalIndex::isLocal(), UPstream::myProcNo(), UPstream::nProcs(), globalIndex::toLocal(), globalIndex::whichProcID(), and Foam::Zero.

Here is the call graph for this function:

◆ calcCompactAddressing() [2/2]

void calcCompactAddressing ( const globalIndex globalNumbering,
const labelListList elements,
List< Map< label >> &  compactMap 
) const
protected

Definition at line 340 of file mapDistributeBase.C.

References forAll, globalIndex::isLocal(), UPstream::myProcNo(), UPstream::nProcs(), globalIndex::toLocal(), globalIndex::whichProcID(), and Foam::Zero.

Here is the call graph for this function:

◆ exchangeAddressing() [1/2]

void exchangeAddressing ( const int  tag,
const globalIndex globalNumbering,
labelList elements,
List< Map< label >> &  compactMap,
labelList compactStart 
)
protected

Definition at line 394 of file mapDistributeBase.C.

References forAll, forAllIters, Foam::identity(), globalIndex::localSize(), UPstream::myProcNo(), UPstream::nProcs(), Foam::renumber(), and List::setSize().

Here is the call graph for this function:

◆ exchangeAddressing() [2/2]

void exchangeAddressing ( const int  tag,
const globalIndex globalNumbering,
labelListList elements,
List< Map< label >> &  compactMap,
labelList compactStart 
)
protected

Definition at line 475 of file mapDistributeBase.C.

References forAll, forAllIters, Foam::identity(), globalIndex::localSize(), UPstream::myProcNo(), UPstream::nProcs(), Foam::renumber(), and List::setSize().

Here is the call graph for this function:

◆ flipAndCombine()

void flipAndCombine ( const labelUList map,
const bool  hasFlip,
const UList< T > &  rhs,
const CombineOp &  cop,
const negateOp &  negOp,
List< T > &  lhs 
)
staticprotected

Definition at line 31 of file mapDistributeBaseTemplates.C.

References Foam::exit(), Foam::FatalError, FatalErrorInFunction, forAll, and UList::size().

Here is the call graph for this function:

◆ accessAndFlip()

T accessAndFlip ( const UList< T > &  fld,
const label  index,
const bool  hasFlip,
const negateOp &  negOp 
)
staticprotected

Definition at line 76 of file mapDistributeBaseTemplates.C.

References Foam::exit(), Foam::FatalError, FatalErrorInFunction, fld, and T.

Referenced by mapDistributeBase::send().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ClassName()

ClassName ( "mapDistributeBase"  )

◆ constructSize() [1/2]

label constructSize ( ) const
inline

◆ constructSize() [2/2]

label& constructSize ( )
inline

Definition at line 279 of file mapDistributeBase.H.

References mapDistributeBase::constructSize_.

◆ subMap() [1/2]

const labelListList& subMap ( ) const
inline

◆ subMap() [2/2]

labelListList& subMap ( )
inline

Definition at line 291 of file mapDistributeBase.H.

References mapDistributeBase::subMap_.

◆ constructMap() [1/2]

const labelListList& constructMap ( ) const
inline

◆ constructMap() [2/2]

labelListList& constructMap ( )
inline

Definition at line 303 of file mapDistributeBase.H.

References mapDistributeBase::constructMap_.

◆ subHasFlip() [1/2]

bool subHasFlip ( ) const
inline

Definition at line 309 of file mapDistributeBase.H.

References mapDistributeBase::subHasFlip_.

Referenced by distributedTriSurfaceMesh::findNearest(), and distributedTriSurfaceMesh::getVolumeType().

Here is the caller graph for this function:

◆ subHasFlip() [2/2]

bool& subHasFlip ( )
inline

Definition at line 315 of file mapDistributeBase.H.

References mapDistributeBase::subHasFlip_.

◆ constructHasFlip() [1/2]

bool constructHasFlip ( ) const
inline

Definition at line 321 of file mapDistributeBase.H.

References mapDistributeBase::constructHasFlip_.

Referenced by distributedTriSurfaceMesh::findNearest(), and distributedTriSurfaceMesh::getVolumeType().

Here is the caller graph for this function:

◆ constructHasFlip() [2/2]

bool& constructHasFlip ( )
inline

Definition at line 327 of file mapDistributeBase.H.

References mapDistributeBase::constructHasFlip_.

◆ comm()

label comm ( ) const
inline

Definition at line 332 of file mapDistributeBase.H.

References mapDistributeBase::comm_.

Referenced by distributedTriSurfaceMesh::findNearest(), and distributedTriSurfaceMesh::getVolumeType().

Here is the caller graph for this function:

◆ schedule() [1/2]

Foam::List< Foam::labelPair > schedule ( const labelListList subMap,
const labelListList constructMap,
const int  tag,
const label  comm = UPstream::worldComm 
)
static

Definition at line 39 of file mapDistributeBase.C.

References forAll, HashSet::insert(), and List::setSize().

Referenced by streamLineBase::writeToFile().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ schedule() [2/2]

const Foam::List< Foam::labelPair > & schedule ( ) const

◆ transfer()

void transfer ( mapDistributeBase rhs)

◆ renumber()

Foam::label renumber ( const globalIndex globalNumbering,
const List< Map< label >> &  compactMap,
const label  globalElement 
)
static

Definition at line 899 of file mapDistributeBase.C.

References globalIndex::isLocal(), globalIndex::toLocal(), and globalIndex::whichProcID().

Here is the call graph for this function:

◆ compact() [1/2]

void compact ( const boolList elemIsUsed,
const int  tag = UPstream::msgType() 
)

◆ compact() [2/2]

void compact ( const boolList elemIsUsed,
const label  localSize,
labelList oldToNewSub,
labelList oldToNewConstruct,
const int  tag = UPstream::msgType() 
)

◆ distribute() [1/5]

void distribute ( const Pstream::commsTypes  commsType,
const List< labelPair > &  schedule,
const label  constructSize,
const labelListList subMap,
const bool  subHasFlip,
const labelListList constructMap,
const bool  constructHasFlip,
List< T > &  field,
const negateOp &  negOp,
const int  tag = UPstream::msgType(),
const label  comm = UPstream::worldComm 
)
static

◆ distribute() [2/5]

void distribute ( const Pstream::commsTypes  commsType,
const List< labelPair > &  schedule,
const label  constructSize,
const labelListList subMap,
const bool  subHasFlip,
const labelListList constructMap,
const bool  constructHasFlip,
List< T > &  field,
const T nullValue,
const CombineOp &  cop,
const negateOp &  negOp,
const int  tag = UPstream::msgType(),
const label  comm = UPstream::worldComm 
)
static

◆ distribute() [3/5]

void distribute ( List< T > &  fld,
const int  tag = UPstream::msgType() 
) const

Definition at line 1311 of file mapDistributeBaseTemplates.C.

References fld.

◆ distribute() [4/5]

void distribute ( List< T > &  fld,
const negateOp &  negOp,
const int  tag = UPstream::msgType() 
) const

◆ distribute() [5/5]

void distribute ( DynamicList< T > &  fld,
const int  tag = UPstream::msgType() 
) const

Definition at line 1325 of file mapDistributeBaseTemplates.C.

References fld.

◆ reverseDistribute() [1/2]

void reverseDistribute ( const label  constructSize,
List< T > &  fld,
const int  tag = UPstream::msgType() 
) const

Definition at line 1345 of file mapDistributeBaseTemplates.C.

References UPstream::blocking, UPstream::defaultCommsType, fld, UPstream::nonBlocking, and UPstream::scheduled.

Referenced by mapDistribute::reverseDistribute().

Here is the caller graph for this function:

◆ reverseDistribute() [2/2]

void reverseDistribute ( const label  constructSize,
const T nullValue,
List< T > &  fld,
const int  tag = UPstream::msgType() 
) const

◆ send()

void send ( PstreamBuffers pBufs,
const List< T > &  field 
) const

◆ receive()

void receive ( PstreamBuffers pBufs,
List< T > &  field 
) const

Definition at line 1203 of file mapDistributeBaseTemplates.C.

References Foam::abort(), UPstream::allProcs(), Foam::FatalError, FatalErrorInFunction, and field().

Here is the call graph for this function:

◆ printLayout()

void printLayout ( Ostream os) const

Definition at line 214 of file mapDistributeBase.C.

References Foam::abort(), Foam::endl(), Foam::FatalError, FatalErrorInFunction, forAll, Foam::labelMax, Foam::labelMin, Foam::mag(), Foam::max(), Foam::min(), UPstream::myProcNo(), UPstream::nProcs(), and os().

Referenced by mapDistribute::printLayout().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateMesh()

void updateMesh ( const mapPolyMesh )
inline

Definition at line 482 of file mapDistributeBase.H.

References NotImplemented.

◆ operator=() [1/2]

void operator= ( const mapDistributeBase rhs)

◆ operator=() [2/2]

void operator= ( mapDistributeBase &&  rhs)

Definition at line 1337 of file mapDistributeBase.C.

Friends And Related Function Documentation

◆ operator>>

Istream& operator>> ( Istream ,
mapDistributeBase  
)
friend

◆ operator<<

Ostream& operator<< ( Ostream ,
const mapDistributeBase  
)
friend

Member Data Documentation

◆ constructSize_

label constructSize_
protected

◆ subMap_

labelListList subMap_
protected

◆ constructMap_

labelListList constructMap_
protected

◆ subHasFlip_

bool subHasFlip_
protected

◆ constructHasFlip_

bool constructHasFlip_
protected

◆ comm_

label comm_
protected

◆ schedulePtr_

autoPtr<List<labelPair> > schedulePtr_
mutableprotected

Definition at line 124 of file mapDistributeBase.H.

Referenced by mapDistributeBase::schedule().


The documentation for this class was generated from the following files: