hierarchical Class Reference

Does hierarchical decomposition of points. Works by first sorting the points in x direction into equal sized bins, then in y direction and finally in z direction. More...

Inheritance diagram for hierarchical:
Collaboration diagram for hierarchical:

Public Member Functions

 TypeName ("hierarchical")
 Runtime type information. More...
 
 hierarchical (const dictionary &decompositionDict)
 Construct given the decomposition dictionary. More...
 
 hierarchical (const hierarchical &)=delete
 Disallow default bitwise copy construction. More...
 
virtual ~hierarchical ()
 Destructor. More...
 
virtual labelList decompose (const pointField &, const scalarField &weights)
 Return for every coordinate the wanted processor number. More...
 
virtual labelList decompose (const pointField &)
 Without weights. Code for weighted decomposition is a bit complex. More...
 
virtual labelList decompose (const polyMesh &mesh, const pointField &cellCentres, const scalarField &cellWeights)
 Return for every coordinate the wanted processor number. Use the. More...
 
virtual labelList decompose (const polyMesh &mesh, const pointField &cellCentres)
 Without weights. Code for weighted decomposition is a bit complex. More...
 
virtual labelList decompose (const labelListList &globalCellCells, const pointField &cellCentres, const scalarField &cellWeights)
 Return for every coordinate the wanted processor number. Explicitly. More...
 
virtual labelList decompose (const labelListList &globalCellCells, const pointField &cc)
 Like decompose but with uniform weights on the cells. More...
 
void operator= (const hierarchical &)=delete
 Disallow default bitwise assignment. More...
 
- Public Member Functions inherited from geometric
 geometric (const dictionary &decompositionDict, const word &derivedType)
 Construct given the decomposition dictionary. More...
 
- Public Member Functions inherited from decompositionMethod
 TypeName ("decompositionMethod")
 Runtime type information. More...
 
 declareRunTimeSelectionTable (autoPtr, decompositionMethod, decomposer,(const dictionary &decompositionDict),(decompositionDict))
 
 declareRunTimeSelectionTable (autoPtr, decompositionMethod, distributor,(const dictionary &decompositionDict),(decompositionDict))
 
 decompositionMethod (const dictionary &decompositionDict)
 Construct given the decomposition dictionary. More...
 
 decompositionMethod (const decompositionMethod &)=delete
 Disallow default bitwise copy construction. More...
 
virtual ~decompositionMethod ()
 Destructor. More...
 
label nDomains () const
 
virtual labelList decompose (const polyMesh &mesh, const labelList &cellToRegion, const pointField &regionPoints, const scalarField &regionWeights)
 Return for every coordinate the wanted processor number. Gets. More...
 
virtual labelList decompose (const polyMesh &mesh, const labelList &cellToRegion, const pointField &regionPoints)
 Like decompose but with uniform weights on the regions. More...
 
void setConstraints (const polyMesh &mesh, boolList &blockedFace, PtrList< labelList > &specifiedProcessorFaces, labelList &specifiedProcessor, List< labelPair > &explicitConnections)
 Helper: extract constraints: More...
 
void applyConstraints (const polyMesh &mesh, const boolList &blockedFace, const PtrList< labelList > &specifiedProcessorFaces, const labelList &specifiedProcessor, const List< labelPair > &explicitConnections, labelList &finalDecomp)
 Helper: apply constraints to a decomposition. This gives. More...
 
virtual labelList decompose (const polyMesh &mesh, const scalarField &cellWeights, const boolList &blockedFace, const PtrList< labelList > &specifiedProcessorFaces, const labelList &specifiedProcessor, const List< labelPair > &explicitConnections)
 Decompose a mesh with constraints. More...
 
labelList decompose (const polyMesh &mesh, const scalarField &cellWeights)
 Decompose a mesh. Apply all constraints from decomposeParDict. More...
 
void operator= (const decompositionMethod &)=delete
 Disallow default bitwise assignment. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from decompositionMethod
static autoPtr< decompositionMethodNewDecomposer (const dictionary &decompositionDict)
 Return a reference to the selected decomposition method. More...
 
static autoPtr< decompositionMethodNewDistributor (const dictionary &decompositionDict)
 Return a reference to the selected decomposition method. More...
 
static IOdictionary decomposeParDict (const Time &time)
 Read and return the decomposeParDict. More...
 
static labelList scaleWeights (const scalarField &weights, label &nWeights, const bool distributed=true)
 Convert the given scalar weights to labels. More...
 
static void calcCellCells (const polyMesh &mesh, const labelList &agglom, const label nLocalCoarse, const bool global, CompactListList< label > &cellCells)
 Helper: determine (local or global) cellCells from mesh. More...
 
static void calcCellCells (const polyMesh &mesh, const labelList &agglom, const label nLocalCoarse, const bool parallel, CompactListList< label > &cellCells, CompactListList< scalar > &cellCellWeights)
 Helper: determine (local or global) cellCells and face weights. More...
 
- Protected Member Functions inherited from decompositionMethod
label nWeights (const pointField &points, const scalarField &pointWeights) const
 Return the number of weights per point. More...
 
label checkWeights (const pointField &points, const scalarField &pointWeights) const
 Check the weights against the points. More...
 
- Protected Attributes inherited from geometric
const dictionarygeometricDict_
 
Vector< labeln_
 
scalar delta_
 
tensor rotDelta_
 
- Protected Attributes inherited from decompositionMethod
dictionary decompositionDict_
 
label nProcessors_
 
PtrList< decompositionConstraintconstraints_
 Optional constraints. More...
 

Detailed Description

Does hierarchical decomposition of points. Works by first sorting the points in x direction into equal sized bins, then in y direction and finally in z direction.

Uses single array to hold decomposition which is indexed as if it is a 3 dimensional array:

finalDecomp[i,j,k] is indexed as

i*n[0]*n[1] + j*n[1] + k

E.g. if we're sorting 'xyz': the first sort (over the x-component) determines in which x-domain the point goes. Then for each of the x-domains the points are sorted in y direction and each individual x-domain gets split into three y-domains. And similar for the z-direction.

Since the domains are of equal size the maximum difference in size is n[0]*n[1] (or n[1]*n[2]?) (small anyway)

Source files

Definition at line 67 of file hierarchical.H.

Constructor & Destructor Documentation

◆ hierarchical() [1/2]

hierarchical ( const dictionary decompositionDict)

Construct given the decomposition dictionary.

Definition at line 774 of file hierarchical.C.

◆ hierarchical() [2/2]

hierarchical ( const hierarchical )
delete

Disallow default bitwise copy construction.

◆ ~hierarchical()

virtual ~hierarchical ( )
inlinevirtual

Destructor.

Definition at line 174 of file hierarchical.H.

Member Function Documentation

◆ TypeName()

TypeName ( "hierarchical"  )

Runtime type information.

◆ decompose() [1/6]

Foam::labelList decompose ( const pointField points,
const scalarField weights 
)
virtual

Return for every coordinate the wanted processor number.

Implements geometric.

Definition at line 728 of file hierarchical.C.

References Foam::e, forAll, Foam::max(), points, and Foam::reduce().

Referenced by hierarchical::decompose().

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

◆ decompose() [2/6]

Foam::labelList decompose ( const pointField points)
virtual

Without weights. Code for weighted decomposition is a bit complex.

so kept separate for now.

Implements geometric.

Definition at line 688 of file hierarchical.C.

References Foam::e, forAll, Foam::max(), points, and Foam::reduce().

Here is the call graph for this function:

◆ decompose() [3/6]

virtual labelList decompose ( const polyMesh mesh,
const pointField cellCentres,
const scalarField cellWeights 
)
inlinevirtual

Return for every coordinate the wanted processor number. Use the.

mesh connectivity (if needed)

Implements decompositionMethod.

Definition at line 194 of file hierarchical.H.

◆ decompose() [4/6]

virtual labelList decompose ( const polyMesh mesh,
const pointField cellCentres 
)
inlinevirtual

Without weights. Code for weighted decomposition is a bit complex.

so kept separate for now.

Reimplemented from decompositionMethod.

Definition at line 206 of file hierarchical.H.

◆ decompose() [5/6]

virtual labelList decompose ( const labelListList globalCellCells,
const pointField cellCentres,
const scalarField cellWeights 
)
inlinevirtual

Return for every coordinate the wanted processor number. Explicitly.

provided connectivity - does not use mesh_. The connectivity is equal to mesh.cellCells() except for

  • in parallel the cell numbers are global cell numbers (starting from 0 at processor0 and then incrementing all through the processors)
  • the connections are across coupled patches

Implements decompositionMethod.

Definition at line 222 of file hierarchical.H.

◆ decompose() [6/6]

virtual labelList decompose ( const labelListList globalCellCells,
const pointField cellCentres 
)
inlinevirtual

Like decompose but with uniform weights on the cells.

Reimplemented from decompositionMethod.

Definition at line 232 of file hierarchical.H.

References hierarchical::decompose().

Here is the call graph for this function:

◆ operator=()

void operator= ( const hierarchical )
delete

Disallow default bitwise assignment.


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