Domain decomposition using KaHIP http://algo2.iti.kit.edu/documents/kahip/. More...
Public Types | |
enum class | configs { FAST = 0 , ECO = 1 , STRONG = 2 , FASTSOCIAL = 3 , ECOSOCIAL = 4 , STRONGSOCIAL = 5 } |
The predefined KaHIP configuration types. More... | |
Public Member Functions | |
TypeName ("kahip") | |
Runtime type information. More... | |
kahipDecomp (const dictionary &decompDict, const word ®ionName="") | |
Construct given decomposition dictionary and optional region name. More... | |
virtual | ~kahipDecomp ()=default |
Destructor. More... | |
virtual bool | parallelAware () const |
Is method parallel aware? More... | |
![]() | |
virtual | ~metisLikeDecomp ()=default |
Destructor. More... | |
virtual labelList | decompose (const polyMesh &mesh, const pointField &points, const scalarField &pointWeights) const |
Return for every coordinate the wanted processor number. More... | |
virtual labelList | decompose (const polyMesh &mesh, const labelList &agglom, const pointField ®ionPoints, const scalarField ®ionWeights) const |
Return for every coordinate the wanted processor number. More... | |
virtual labelList | decompose (const labelListList &globalCellCells, const pointField &cellCentres, const scalarField &cellWeights) const |
Return for every coordinate the wanted processor number. More... | |
virtual labelList | decompose (const pointField &points, const scalarField &pointWeights) const |
Inherit decompose from decompositionMethod. More... | |
virtual labelList | decompose (const pointField &points) const |
Inherit decompose from decompositionMethod. More... | |
virtual labelList | decompose (const polyMesh &mesh, const pointField &points, const scalarField &pointWeights) const=0 |
Inherit decompose from decompositionMethod. More... | |
virtual labelList | decompose (const polyMesh &mesh, const pointField &points) const |
Inherit decompose from decompositionMethod. More... | |
virtual labelList | decompose (const polyMesh &mesh, const labelList &cellToRegion, const pointField ®ionPoints, const scalarField ®ionWeights) const |
Inherit decompose from decompositionMethod. More... | |
virtual labelList | decompose (const polyMesh &mesh, const labelList &cellToRegion, const pointField ®ionPoints) const |
Inherit decompose from decompositionMethod. More... | |
virtual labelList | decompose (const labelListList &globalCellCells, const pointField &cc, const scalarField &cWeights) const=0 |
Inherit decompose from decompositionMethod. More... | |
virtual labelList | decompose (const labelListList &globalCellCells, const pointField &cc) const |
Inherit decompose from decompositionMethod. More... | |
virtual labelList | decompose (const polyMesh &mesh, const scalarField &cellWeights, const boolList &blockedFace, const PtrList< labelList > &specifiedProcessorFaces, const labelList &specifiedProcessor, const List< labelPair > &explicitConnections) const |
Inherit decompose from decompositionMethod. More... | |
labelList | decompose (const polyMesh &mesh, const scalarField &cWeights) const |
Inherit decompose from decompositionMethod. More... | |
![]() | |
TypeName ("decompositionMethod") | |
Runtime type information. More... | |
declareRunTimeSelectionTable (autoPtr, decompositionMethod, dictionary,(const dictionary &decompDict, const word ®ionName),(decompDict, regionName)) | |
decompositionMethod (const dictionary &decompDict, const word ®ionName="") | |
virtual | ~decompositionMethod ()=default |
Destructor. More... | |
label | nDomains () const noexcept |
Number of domains. More... | |
virtual bool | parallelAware () const =0 |
Is method parallel aware? More... | |
virtual labelList | decompose (const pointField &points, const scalarField &pointWeights) const |
Return the wanted processor number for every coordinate. More... | |
virtual labelList | decompose (const pointField &points) const |
Decompose with uniform weights on the points. More... | |
virtual labelList | decompose (const polyMesh &mesh, const pointField &points, const scalarField &pointWeights) const =0 |
Return for every coordinate the wanted processor number. More... | |
virtual labelList | decompose (const polyMesh &mesh, const pointField &points) const |
Decompose with uniform weights on the points. More... | |
virtual labelList | decompose (const polyMesh &mesh, const labelList &cellToRegion, const pointField ®ionPoints, const scalarField ®ionWeights) const |
Return for every coordinate the wanted processor number. Gets. More... | |
virtual labelList | decompose (const polyMesh &mesh, const labelList &cellToRegion, const pointField ®ionPoints) const |
Like decompose but with uniform weights on the regions. More... | |
virtual labelList | decompose (const labelListList &globalCellCells, const pointField &cc, const scalarField &cWeights) const =0 |
Return for every coordinate the wanted processor number. More... | |
virtual labelList | decompose (const labelListList &globalCellCells, const pointField &cc) const |
Like decompose but with uniform weights on the cells. More... | |
void | setConstraints (const polyMesh &mesh, boolList &blockedFace, PtrList< labelList > &specifiedProcessorFaces, labelList &specifiedProcessor, List< labelPair > &explicitConnections) const |
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) const |
Helper: apply constraints to a decomposition. More... | |
virtual labelList | decompose (const polyMesh &mesh, const scalarField &cellWeights, const boolList &blockedFace, const PtrList< labelList > &specifiedProcessorFaces, const labelList &specifiedProcessor, const List< labelPair > &explicitConnections) const |
labelList | decompose (const polyMesh &mesh, const scalarField &cWeights) const |
Decompose a mesh. More... | |
Static Public Attributes | |
static const Enum< configs > | configNames |
The selection names for predefined KaHIP configurations. More... | |
Protected Member Functions | |
virtual label | decomposeSerial (const labelList &adjncy, const labelList &xadj, const List< scalar > &cellWeights, labelList &decomp) const |
Call kahip with options from dictionary. More... | |
kahipDecomp (const kahipDecomp &)=delete | |
No copy construct. More... | |
void | operator= (const kahipDecomp &)=delete |
No copy assignment. More... | |
![]() | |
virtual label | decomposeGeneral (const labelList &adjncy, const labelList &xadj, const List< scalar > &cellWeights, labelList &decomp) const |
Serial and/or collect/distribute for parallel operation. More... | |
virtual label | decomposeSerial (const labelList &adjncy, const labelList &xadj, const List< scalar > &cellWeights, labelList &decomp) const =0 |
Decomposition with metis-like parameters. More... | |
metisLikeDecomp (const metisLikeDecomp &)=delete | |
No copy construct. More... | |
void | operator= (const metisLikeDecomp &)=delete |
No copy assignment. More... | |
metisLikeDecomp (const word &derivedType, const dictionary &decompDict, int select=selectionType::NULL_DICT) | |
Construct for derived type name and decomposition dictionary. More... | |
metisLikeDecomp (const word &derivedType, const dictionary &decompDict, const word ®ionName, int select=selectionType::NULL_DICT) | |
![]() | |
const dictionary & | findCoeffsDict (const word &coeffsName, int select=selectionType::DEFAULT) const |
Locate coeffsName dictionary or the fallback "coeffs" dictionary. More... | |
Additional Inherited Members | |
![]() | |
static label | nDomains (const dictionary &decompDict, const word ®ionName="") |
Return region-specific or top-level numberOfSubdomains entry. More... | |
static const dictionary & | optionalRegionDict (const dictionary &decompDict, const word ®ionName) |
static autoPtr< decompositionMethod > | New (const dictionary &decompDict, const word ®ionName="") |
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... | |
![]() | |
enum | selectionType { DEFAULT = 0 , EXACT = 1 , MANDATORY = 2 , NULL_DICT = 4 } |
Selection type when handling the coefficients dictionary. More... | |
![]() | |
static const dictionary & | findCoeffsDict (const dictionary &dict, const word &coeffsName, int select=selectionType::DEFAULT) |
![]() | |
const dictionary & | coeffsDict_ |
Coefficients for all derived methods. More... | |
![]() | |
const dictionary & | decompDict_ |
Top-level decomposition dictionary (eg, decomposeParDict) More... | |
const dictionary & | decompRegionDict_ |
Region-specific decomposition dictionary information. More... | |
label | nDomains_ |
Number of domains for the decomposition. More... | |
PtrList< decompositionConstraint > | constraints_ |
Optional constraints. More... | |
Domain decomposition using KaHIP http://algo2.iti.kit.edu/documents/kahip/.
When run in parallel will collect the entire graph on to the master, decompose and send back.
Coefficients dictionary: kahipCoeffs, coeffs.
numberOfSubdomains N; method kahip; kahipCoeffs { config fast; imbalance 0.01; }
Method coefficients:
Property | Description | Required | Default |
---|---|---|---|
config | fast / eco / strong | no | fast |
imbalance | imbalance on cells between domains | no | 0.01 |
seed | initial value for random number generator | no | 0 |
Definition at line 94 of file kahipDecomp.H.
|
strong |
The predefined KaHIP configuration types.
Enumerator | |
---|---|
FAST | default |
ECO | |
STRONG | |
FASTSOCIAL | |
ECOSOCIAL | |
STRONGSOCIAL |
Definition at line 122 of file kahipDecomp.H.
|
protecteddelete |
No copy construct.
|
explicit |
Construct given decomposition dictionary and optional region name.
Definition at line 73 of file dummyKahipDecomp.C.
|
virtualdefault |
Destructor.
|
protectedvirtual |
Call kahip with options from dictionary.
Implements metisLikeDecomp.
Definition at line 56 of file dummyKahipDecomp.C.
References Foam::exit(), Foam::FatalError, FatalErrorInFunction, and notImplementedMessage.
|
protecteddelete |
No copy assignment.
TypeName | ( | "kahip" | ) |
Runtime type information.
|
inlinevirtual |
Is method parallel aware?
(i.e. does it synchronize domains across proc boundaries)
Implements decompositionMethod.
Definition at line 157 of file kahipDecomp.H.
|
static |
The selection names for predefined KaHIP configurations.
Definition at line 134 of file kahipDecomp.H.