Public Member Functions | Private Member Functions | Private Attributes
procFacesGAMGProcAgglomeration Class Reference

Processor agglomeration of GAMGAgglomerations. Needs nAgglomeratingCells which is when to start agglomerating processors. Processors get agglomerated by constructing a single cell mesh for each processor with each processor interface a face. This then gets agglomerated using the pairGAMGAgglomeration algorithm with the number of faces on the original processor interface as face weight. More...

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

Public Member Functions

 TypeName ("procFaces")
 Runtime type information. More...
 
 procFacesGAMGProcAgglomeration (GAMGAgglomeration &agglom, const dictionary &controlDict)
 Construct given agglomerator and controls. More...
 
virtual ~procFacesGAMGProcAgglomeration ()
 Destructor. More...
 
virtual bool agglomerate ()
 Modify agglomeration. Return true if modified. More...
 
- Public Member Functions inherited from GAMGProcAgglomeration
 TypeName ("GAMGProcAgglomeration")
 Runtime type information. More...
 
 declareRunTimeSelectionTable (autoPtr, GAMGProcAgglomeration, GAMGAgglomeration,(GAMGAgglomeration &agglom, const dictionary &controlDict),(agglom, controlDict))
 Runtime selection table for pure geometric agglomerators. More...
 
 GAMGProcAgglomeration (GAMGAgglomeration &agglom, const dictionary &controlDict)
 Construct given agglomerator and controls. More...
 
virtual ~GAMGProcAgglomeration ()
 Destructor. More...
 

Private Member Functions

autoPtr< lduPrimitiveMeshsingleCellMesh (const label singleCellMeshComm, const lduMesh &mesh, scalarField &faceWeights) const
 Return (on master) all single-cell meshes collected. single-cell. More...
 
tmp< labelFieldprocessorAgglomeration (const lduMesh &) const
 Construct processor agglomeration: for every processor the. More...
 
bool doProcessorAgglomeration (const lduMesh &) const
 Do we need to agglomerate across processors? More...
 
 procFacesGAMGProcAgglomeration (const procFacesGAMGProcAgglomeration &)
 Disallow default bitwise copy construct. More...
 
void operator= (const procFacesGAMGProcAgglomeration &)
 Disallow default bitwise assignment. More...
 

Private Attributes

const label nAgglomeratingCells_
 When to processor agglomerate. More...
 
DynamicList< labelcomms_
 Allocated communicators. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from GAMGProcAgglomeration
static autoPtr< GAMGProcAgglomerationNew (const word &type, GAMGAgglomeration &agglom, const dictionary &controlDict)
 Return the selected agglomerator. More...
 
- Protected Member Functions inherited from GAMGProcAgglomeration
void printStats (Ostream &os, GAMGAgglomeration &agglom) const
 Debug: write agglomeration info. More...
 
bool agglomerate (const label fineLevelIndex, const labelList &procAgglomMap, const labelList &masterProcs, const List< label > &agglomProcIDs, const label procAgglomComm)
 Agglomerate a level. Return true if anything has changed. More...
 
- Static Protected Member Functions inherited from GAMGProcAgglomeration
static labelListList globalCellCells (const lduMesh &)
 Debug: calculate global cell-cells. More...
 
- Protected Attributes inherited from GAMGProcAgglomeration
GAMGAgglomerationagglom_
 Reference to agglomeration. More...
 

Detailed Description

Processor agglomeration of GAMGAgglomerations. Needs nAgglomeratingCells which is when to start agglomerating processors. Processors get agglomerated by constructing a single cell mesh for each processor with each processor interface a face. This then gets agglomerated using the pairGAMGAgglomeration algorithm with the number of faces on the original processor interface as face weight.

Source files

Definition at line 59 of file procFacesGAMGProcAgglomeration.H.

Constructor & Destructor Documentation

◆ procFacesGAMGProcAgglomeration() [1/2]

Disallow default bitwise copy construct.

◆ procFacesGAMGProcAgglomeration() [2/2]

procFacesGAMGProcAgglomeration ( GAMGAgglomeration agglom,
const dictionary controlDict 
)

Construct given agglomerator and controls.

Definition at line 221 of file procFacesGAMGProcAgglomeration.C.

◆ ~procFacesGAMGProcAgglomeration()

Destructor.

Definition at line 233 of file procFacesGAMGProcAgglomeration.C.

References procFacesGAMGProcAgglomeration::comms_, forAllReverse, and UPstream::freeCommunicator().

Here is the call graph for this function:

Member Function Documentation

◆ singleCellMesh()

Foam::autoPtr< Foam::lduPrimitiveMesh > singleCellMesh ( const label  singleCellMeshComm,
const lduMesh mesh,
scalarField faceWeights 
) const
private

Return (on master) all single-cell meshes collected. single-cell.

meshes are just one cell with all proc faces intact.

Definition at line 55 of file procFacesGAMGProcAgglomeration.C.

References DynamicList::append(), DynamicList::clear(), forAll, forAllConstIter(), mesh, processorLduInterface::neighbProcNo(), autoPtr::reset(), UPtrList::set(), UPtrList::size(), and Foam::sort().

Here is the call graph for this function:

◆ processorAgglomeration()

Foam::tmp< Foam::labelField > processorAgglomeration ( const lduMesh mesh) const
private

Construct processor agglomeration: for every processor the.

coarse processor-cluster it agglomerates onto

Definition at line 147 of file procFacesGAMGProcAgglomeration.C.

References forAll, Foam::invert(), Foam::labelMax, mesh, Foam::min(), List::size(), Foam::sortedOrder(), and autoPtr::valid().

Here is the call graph for this function:

◆ doProcessorAgglomeration()

bool doProcessorAgglomeration ( const lduMesh mesh) const
private

Do we need to agglomerate across processors?

Definition at line 207 of file procFacesGAMGProcAgglomeration.C.

References mesh.

◆ operator=()

void operator= ( const procFacesGAMGProcAgglomeration )
private

Disallow default bitwise assignment.

◆ TypeName()

TypeName ( "procFaces"  )

Runtime type information.

◆ agglomerate()

bool agglomerate ( )
virtual

Modify agglomeration. Return true if modified.

Implements GAMGProcAgglomeration.

Definition at line 247 of file procFacesGAMGProcAgglomeration.C.

References GAMGProcAgglomeration::agglomerate(), UPstream::allocateCommunicator(), GAMGAgglomeration::calculateRegionMaster(), lduMesh::comm(), Foam::endl(), Foam::nl, UPstream::nProcs(), Foam::Pout, and rndGen().

Here is the call graph for this function:

Field Documentation

◆ nAgglomeratingCells_

const label nAgglomeratingCells_
private

When to processor agglomerate.

Definition at line 66 of file procFacesGAMGProcAgglomeration.H.

◆ comms_

DynamicList<label> comms_
private

Allocated communicators.

Definition at line 69 of file procFacesGAMGProcAgglomeration.H.

Referenced by procFacesGAMGProcAgglomeration::~procFacesGAMGProcAgglomeration().


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