Classes | Public Member Functions | Friends | List of all members
mapDistribute Class Reference

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

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

Classes

class  transform
 
class  transformPosition
 

Public Member Functions

 ClassName ("mapDistribute")
 
 mapDistribute (const label comm=UPstream::worldComm)
 
 mapDistribute (const mapDistribute &map)
 
 mapDistribute (mapDistribute &&map)
 
 mapDistribute (const label constructSize, labelListList &&subMap, labelListList &&constructMap, const bool subHasFlip=false, const bool constructHasFlip=false, const label comm=UPstream::worldComm)
 
 mapDistribute (const label constructSize, labelListList &&subMap, labelListList &&constructMap, labelListList &&transformElements, labelList &&transformStart, const bool subHasFlip=false, const bool constructHasFlip=false, const label comm=UPstream::worldComm)
 
 mapDistribute (const labelUList &sendProcs, const labelUList &recvProcs, const label comm=UPstream::worldComm)
 
 mapDistribute (const globalIndex &, labelList &elements, List< Map< label >> &compactMap, const int tag=Pstream::msgType(), const label comm=UPstream::worldComm)
 
 mapDistribute (const globalIndex &, labelListList &cellCells, List< Map< label >> &compactMap, const int tag=Pstream::msgType(), const label comm=UPstream::worldComm)
 
 mapDistribute (const globalIndex &, labelList &untransformedElements, const globalIndexAndTransform &, const labelPairList &transformedElements, labelList &transformedIndices, List< Map< label >> &compactMap, const int tag=Pstream::msgType(), const label comm=UPstream::worldComm)
 
 mapDistribute (const globalIndex &, labelListList &cellCells, const globalIndexAndTransform &, const List< labelPairList > &transformedElements, labelListList &transformedIndices, List< Map< label >> &compactMap, const int tag=Pstream::msgType(), const label comm=UPstream::worldComm)
 
 mapDistribute (labelListList &&subMap, const bool subHasFlip=false, const bool constructHasFlip=false, const label comm=UPstream::worldComm)
 
 mapDistribute (Istream &is)
 
autoPtr< mapDistributeclone () const
 
virtual ~mapDistribute ()=default
 
const labelListListtransformElements () const
 
const labelListtransformStart () const
 
label whichTransform (const label index) const
 
void transfer (mapDistribute &map)
 
template<class T >
void distribute (List< T > &fld, const bool dummyTransform=true, const int tag=UPstream::msgType()) const
 
template<class T , class negateOp >
void distribute (List< T > &fld, const negateOp &negOp, const bool dummyTransform=true, const int tag=UPstream::msgType()) const
 
template<class T >
void distribute (DynamicList< T > &fld, const bool dummyTransform=true, const int tag=UPstream::msgType()) const
 
template<class T >
void reverseDistribute (const label constructSize, List< T > &, const bool dummyTransform=true, const int tag=UPstream::msgType()) const
 
template<class T >
void reverseDistribute (const label constructSize, const T &nullValue, List< T > &fld, const bool dummyTransform=true, const int tag=UPstream::msgType()) const
 
template<class T , class TransformOp >
void distribute (const globalIndexAndTransform &, List< T > &fld, const TransformOp &top, const int tag=UPstream::msgType()) const
 
template<class T , class TransformOp >
void reverseDistribute (const globalIndexAndTransform &, const label constructSize, List< T > &fld, const TransformOp &top, const int tag=UPstream::msgType()) const
 
template<class T , class TransformOp >
void reverseDistribute (const globalIndexAndTransform &, const label constructSize, const T &nullValue, List< T > &fld, const TransformOp &top, const int tag=UPstream::msgType()) const
 
void printLayout (Ostream &os) const
 
void updateMesh (const mapPolyMesh &)
 
void operator= (const mapDistribute &rhs)
 
void operator= (mapDistribute &&rhs)
 
- Public Member Functions inherited from mapDistributeBase
 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)
 

Friends

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

Additional Inherited Members

- Static Public Member Functions inherited from mapDistributeBase
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 inherited from mapDistributeBase
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 inherited from mapDistributeBase
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 inherited from mapDistributeBase
label constructSize_
 
labelListList subMap_
 
labelListList constructMap_
 
bool subHasFlip_
 
bool constructHasFlip_
 
label comm_
 
autoPtr< List< labelPair > > schedulePtr_
 

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.

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

Any distribute with transforms is now done as: 1. exchange data with other processors and receive these into the slots for that processor 2. for all transformations transform a subset of the data according to transformElements_[transformI] and store this starting from transformStart_[transformI]

In the same way a reverse distribute will 1. apply the inverse transform to the data starting at transformStart_[transformI] and copy the result back into the transformElements_[transformI]. These might be local or remote slots. 2. the data in the remote slots will now be sent back to the correct location in the originating processor.

E.g. a map to handle

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 159 of file mapDistribute.H.

Constructor & Destructor Documentation

◆ mapDistribute() [1/12]

mapDistribute ( const label  comm = UPstream::worldComm)

Definition at line 144 of file mapDistribute.C.

◆ mapDistribute() [2/12]

mapDistribute ( const mapDistribute map)
explicit

Definition at line 150 of file mapDistribute.C.

◆ mapDistribute() [3/12]

mapDistribute ( mapDistribute &&  map)
explicit

Definition at line 158 of file mapDistribute.C.

References mapDistribute::transfer().

Here is the call graph for this function:

◆ mapDistribute() [4/12]

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

Definition at line 167 of file mapDistribute.C.

◆ mapDistribute() [5/12]

mapDistribute ( const label  constructSize,
labelListList &&  subMap,
labelListList &&  constructMap,
labelListList &&  transformElements,
labelList &&  transformStart,
const bool  subHasFlip = false,
const bool  constructHasFlip = false,
const label  comm = UPstream::worldComm 
)

Definition at line 189 of file mapDistribute.C.

◆ mapDistribute() [6/12]

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

Definition at line 215 of file mapDistribute.C.

◆ mapDistribute() [7/12]

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

Definition at line 226 of file mapDistribute.C.

◆ mapDistribute() [8/12]

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

Definition at line 246 of file mapDistribute.C.

◆ mapDistribute() [9/12]

mapDistribute ( const globalIndex globalNumbering,
labelList untransformedElements,
const globalIndexAndTransform globalTransforms,
const labelPairList transformedElements,
labelList transformedIndices,
List< Map< label >> &  compactMap,
const int  tag = Pstream::msgType(),
const label  comm = UPstream::worldComm 
)

◆ mapDistribute() [10/12]

mapDistribute ( const globalIndex globalNumbering,
labelListList cellCells,
const globalIndexAndTransform globalTransforms,
const List< labelPairList > &  transformedElements,
labelListList transformedIndices,
List< Map< label >> &  compactMap,
const int  tag = Pstream::msgType(),
const label  comm = UPstream::worldComm 
)

◆ mapDistribute() [11/12]

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

Definition at line 495 of file mapDistribute.C.

◆ mapDistribute() [12/12]

mapDistribute ( Istream is)
explicit

Definition at line 506 of file mapDistribute.C.

◆ ~mapDistribute()

virtual ~mapDistribute ( )
virtualdefault

Member Function Documentation

◆ ClassName()

ClassName ( "mapDistribute"  )

◆ clone()

Foam::autoPtr< Foam::mapDistribute > clone ( ) const

Definition at line 512 of file mapDistribute.C.

References autoPtr::New().

Here is the call graph for this function:

◆ transformElements()

const labelListList& transformElements ( ) const
inline

Definition at line 455 of file mapDistribute.H.

◆ transformStart()

const labelList& transformStart ( ) const
inline

Definition at line 461 of file mapDistribute.H.

◆ whichTransform()

Foam::label whichTransform ( const label  index) const

Definition at line 520 of file mapDistribute.C.

References Foam::findLower().

Here is the call graph for this function:

◆ transfer()

void transfer ( mapDistribute map)

Definition at line 526 of file mapDistribute.C.

References mapDistributeBase::transfer().

Referenced by IOmapDistribute::IOmapDistribute(), and mapDistribute::mapDistribute().

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

◆ distribute() [1/4]

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

◆ distribute() [2/4]

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

Definition at line 125 of file mapDistributeTemplates.C.

References mapDistributeBase::distribute(), and fld.

Here is the call graph for this function:

◆ distribute() [3/4]

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

Definition at line 159 of file mapDistributeTemplates.C.

References fld.

◆ reverseDistribute() [1/4]

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

◆ reverseDistribute() [2/4]

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

Definition at line 195 of file mapDistributeTemplates.C.

References fld, and mapDistributeBase::reverseDistribute().

Here is the call graph for this function:

◆ distribute() [4/4]

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

Definition at line 214 of file mapDistributeTemplates.C.

References fld.

◆ reverseDistribute() [3/4]

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

Definition at line 230 of file mapDistributeTemplates.C.

References fld.

◆ reverseDistribute() [4/4]

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

Definition at line 250 of file mapDistributeTemplates.C.

References fld.

◆ printLayout()

void printLayout ( Ostream os) const

Definition at line 126 of file mapDistribute.C.

References Foam::endl(), forAll, os(), and mapDistributeBase::printLayout().

Here is the call graph for this function:

◆ updateMesh()

void updateMesh ( const mapPolyMesh )
inline

Definition at line 564 of file mapDistribute.H.

References NotImplemented.

◆ operator=() [1/2]

void operator= ( const mapDistribute rhs)

Definition at line 541 of file mapDistribute.C.

References mapDistributeBase::operator=().

Referenced by IOmapDistribute::IOmapDistribute().

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

◆ operator=() [2/2]

void operator= ( mapDistribute &&  rhs)

Definition at line 554 of file mapDistribute.C.

Friends And Related Function Documentation

◆ operator>>

Istream& operator>> ( Istream ,
mapDistribute  
)
friend

◆ operator<<

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

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