fvMeshDistribute Class Reference

Sends/receives parts of mesh+fvfields to neighbouring processors. Used in load balancing. More...

Public Member Functions

 ClassName ("fvMeshDistribute")
 
 fvMeshDistribute (fvMesh &mesh)
 Construct from mesh. More...
 
 fvMeshDistribute (const fvMeshDistribute &)=delete
 Disallow default bitwise copy construction. More...
 
autoPtr< polyDistributionMapdistribute (const labelList &dist)
 Send cells to neighbours according to distribution. More...
 
void operator= (const fvMeshDistribute &)=delete
 Disallow default bitwise assignment. More...
 

Static Public Member Functions

static labelList countCells (const labelList &)
 Helper function: count cells per processor in wanted distribution. More...
 
static void printCoupleInfo (const primitiveMesh &, const labelList &, const labelList &, const labelList &, const labelList &)
 Print some info on coupling data. More...
 
template<class GeoField >
static void printFieldInfo (const fvMesh &)
 Print some field info. More...
 
static void printMeshInfo (const fvMesh &)
 Print some info on mesh. More...
 

Detailed Description

Sends/receives parts of mesh+fvfields to neighbouring processors. Used in load balancing.

Input is per local cell the processor it should move to. Moves meshes and volFields/surfaceFields and returns map which can be used to distribute other.

Notes:

  • does not handle cyclics. Will probably handle separated proc patches.
  • if all cells move off processor also all its processor patches will get deleted so comms might be screwed up (since e.g. globalMeshData expects procPatches on all)
  • initial mesh has to have procPatches last and all normal patches common to all processors and in the same order. This is checked.
  • faces are matched topologically but points on the faces are not. So expect problems -on separated patches (cyclics?) -on zero sized processor edges.
Source files

Definition at line 70 of file fvMeshDistribute.H.

Constructor & Destructor Documentation

◆ fvMeshDistribute() [1/2]

fvMeshDistribute ( fvMesh mesh)

Construct from mesh.

Definition at line 1714 of file fvMeshDistribute.C.

◆ fvMeshDistribute() [2/2]

fvMeshDistribute ( const fvMeshDistribute )
delete

Disallow default bitwise copy construction.

Member Function Documentation

◆ ClassName()

ClassName ( "fvMeshDistribute"  )

◆ countCells()

Foam::labelList countCells ( const labelList distribution)
static

Helper function: count cells per processor in wanted distribution.

Definition at line 1722 of file fvMeshDistribute.C.

References Foam::abort(), Foam::endl(), Foam::FatalError, FatalErrorInFunction, forAll, and UPstream::nProcs().

Referenced by meshRefinement::balance().

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

◆ distribute()

◆ printCoupleInfo()

void printCoupleInfo ( const primitiveMesh mesh,
const labelList sourceFace,
const labelList sourceProc,
const labelList sourcePatch,
const labelList sourceNewNbrProc 
)
static

Print some info on coupling data.

Definition at line 327 of file fvMeshDistribute.C.

References Foam::endl(), primitiveMesh::faceCentres(), forAll, primitiveMesh::nInternalFaces(), Foam::nl, and Foam::Pout.

Here is the call graph for this function:

◆ printFieldInfo()

void printFieldInfo ( const fvMesh mesh)
static

Print some field info.

Definition at line 32 of file fvMeshDistributeTemplates.C.

References Foam::endl(), fld(), forAll, forAllConstIter, patchi, and Foam::Pout.

Here is the call graph for this function:

◆ printMeshInfo()

◆ operator=()

void operator= ( const fvMeshDistribute )
delete

Disallow default bitwise assignment.


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