Domain decomposition using KaHIP http://algo2.iti.kit.edu/documents/kahip/. More...
#include <kahipDecomp.H>


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 | |
| kahipDecomp (const kahipDecomp &)=delete | |
| No copy construct. | |
| void | operator= (const kahipDecomp &)=delete |
| No copy assignment. | |
| TypeName ("kahip") | |
| Runtime type information. | |
| kahipDecomp (const label numDomains) | |
| Construct with number of domains (no coefficients or constraints). | |
| kahipDecomp (const dictionary &decompDict, const word ®ionName="") | |
| Construct given decomposition dictionary and optional region name. | |
| virtual | ~kahipDecomp ()=default |
| Destructor. | |
| virtual bool | parallelAware () const |
| Method is parallel aware. | |
| Public Member Functions inherited from metisLikeDecomp | |
| virtual | ~metisLikeDecomp ()=default |
| Destructor. | |
| virtual labelList | decompose (const polyMesh &mesh, const pointField &points=pointField::null(), const scalarField &pointWeights=scalarField::null()) const |
| Return for every coordinate the wanted processor number. | |
| virtual labelList | decompose (const polyMesh &mesh, const labelList &agglom, const pointField &agglomPoints, const scalarField &agglomWeights=scalarField::null()) const |
| Return for every coordinate the wanted processor number. | |
| virtual labelList | decompose (const CompactListList< label > &globalCellCells, const pointField &cellCentres=pointField::null(), const scalarField &cellWeights=scalarField::null()) const |
| Return for every coordinate the wanted processor number. | |
| virtual labelList | decompose (const labelListList &globalCellCells, const pointField &cellCentres=pointField::null(), const scalarField &cellWeights=scalarField::null()) const |
| Return for every coordinate the wanted processor number. | |
| virtual labelList | decompose (const pointField &points, const scalarField &pointWeights=scalarField::null()) const |
| Inherit decompose from decompositionMethod. | |
| 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. | |
| labelList | decompose (const polyMesh &mesh, const scalarField &cWeights) const |
| Inherit decompose from decompositionMethod. | |
| Public Member Functions inherited from decompositionMethod | |
| decompositionMethod (const decompositionMethod &)=delete | |
| No copy construct. | |
| void | operator= (const decompositionMethod &)=delete |
| No copy assignment. | |
| TypeName ("decompositionMethod") | |
| Runtime type information. | |
| declareRunTimeSelectionTable (autoPtr, decompositionMethod, dictionary,(const dictionary &decompDict, const word ®ionName),(decompDict, regionName)) | |
| decompositionMethod (const dictionary &decompDict, const word ®ionName="") | |
| Construct given the decomposition dictionary, optionally region-specific. | |
| virtual | ~decompositionMethod ()=default |
| Destructor. | |
| label | nDomains () const noexcept |
| Number of domains. | |
| label | nDomains (const label n) |
| Set number of domains. Return old value. | |
| virtual bool | geometric () const |
| True if the method is purely geometric, often using cell centre points. | |
| void | setConstraints (const polyMesh &mesh, boolList &blockedFace, PtrList< labelList > &specifiedProcessorFaces, labelList &specifiedProcessor, List< labelPair > &explicitConnections) const |
| Helper: extract constraints: | |
| 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. | |
| labelList | decompose (const polyMesh &mesh, const scalarField &cWeights) const |
| Decompose a mesh. | |
Static Public Attributes | |
| static const Enum< configs > | configNames |
| The selection names for predefined KaHIP configurations. | |
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. | |
| Protected Member Functions inherited from metisLikeDecomp | |
| virtual label | decomposeGeneral (const labelList &adjncy, const labelList &xadj, const List< scalar > &cellWeights, labelList &decomp) const |
| Serial and/or collect/distribute for parallel operation. | |
| metisLikeDecomp (const metisLikeDecomp &)=delete | |
| No copy construct. | |
| void | operator= (const metisLikeDecomp &)=delete |
| No copy assignment. | |
| metisLikeDecomp (const label numDomains) | |
| Construct with number of domains (no coefficients or constraints). | |
| metisLikeDecomp (const word &derivedType, const dictionary &decompDict, int select=selectionType::NULL_DICT) | |
| Construct for derived type name and decomposition dictionary. | |
| metisLikeDecomp (const word &derivedType, const dictionary &decompDict, const word ®ionName, int select=selectionType::NULL_DICT) | |
| Construct for derived type name, decomposition dictionary and (optional) region name. | |
| Protected Member Functions inherited from decompositionMethod | |
| FOAM_NO_DANGLING_REFERENCE const dictionary & | findCoeffsDict (const word &coeffsName, int select=selectionType::DEFAULT) const |
| Locate coeffsName dictionary or the fallback "coeffs" dictionary. | |
| decompositionMethod (const label numDomains) | |
| Construct with specified number of domains, no coefficients or constraints. | |
Additional Inherited Members | |
| Static Public Member Functions inherited from decompositionMethod | |
| static label | nDomains (const dictionary &decompDict, const word ®ionName="") |
Return region-specific or top-level numberOfSubdomains entry. | |
| static const dictionary & | optionalRegionDict (const dictionary &decompDict, const word ®ionName) |
| Return an optional region-specific dictionary from "regions" sub-dictionary, or dictionary::null on failure. | |
| static autoPtr< decompositionMethod > | New (const dictionary &decompDict, const word ®ionName="") |
| Return a reference to the selected decomposition method, optionally region-specific. | |
| static void | calcCellCells (const polyMesh &mesh, const labelList &agglom, const label nLocalCoarse, const bool parallel, CompactListList< label > &cellCells) |
| Determine (local or global) cellCells from mesh agglomeration. | |
| static void | calcCellCells (const polyMesh &mesh, const labelList &agglom, const label nLocalCoarse, const bool parallel, CompactListList< label > &cellCells, CompactListList< scalar > &cellCellWeights) |
| Determine (local or global) cellCells and face weights from mesh agglomeration. | |
| Protected Types inherited from decompositionMethod | |
| enum | selectionType { DEFAULT = 0 , EXACT = 1 , MANDATORY = 2 , NULL_DICT = 4 } |
| Selection type when handling the coefficients dictionary. More... | |
| Static Protected Member Functions inherited from decompositionMethod | |
| static FOAM_NO_DANGLING_REFERENCE const dictionary & | findCoeffsDict (const dictionary &dict, const word &coeffsName, int select=selectionType::DEFAULT) |
| Locate coeffsName dictionary or the fallback "coeffs" dictionary within an enclosing dictionary. | |
| Protected Attributes inherited from metisLikeDecomp | |
| const dictionary & | coeffsDict_ |
| Coefficients for all derived methods. | |
| Protected Attributes inherited from decompositionMethod | |
| const dictionary & | decompDict_ |
| Top-level decomposition dictionary (eg, decomposeParDict). | |
| const dictionary & | decompRegionDict_ |
| Region-specific decomposition dictionary information. | |
| label | nDomains_ |
| Number of domains for the decomposition. | |
| PtrList< decompositionConstraint > | constraints_ |
| Optional constraints. | |
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 90 of file kahipDecomp.H.
|
strong |
The predefined KaHIP configuration types.
| Enumerator | |
|---|---|
| FAST | default |
| ECO | |
| STRONG | |
| FASTSOCIAL | |
| ECOSOCIAL | |
| STRONGSOCIAL | |
Definition at line 115 of file kahipDecomp.H.
|
delete |
No copy construct.
References kahipDecomp().
Referenced by kahipDecomp(), and operator=().


|
explicit |
Construct with number of domains (no coefficients or constraints).
Definition at line 295 of file kahipDecomp.C.
References metisLikeDecomp::metisLikeDecomp().

|
explicit |
Construct given decomposition dictionary and optional region name.
Definition at line 301 of file kahipDecomp.C.
References Foam::GlobalIOList< Tuple2< scalar, vector > >::typeName, metisLikeDecomp::metisLikeDecomp(), decompositionMethod::NULL_DICT, and regionName.

|
virtualdefault |
Destructor.
|
protectedvirtual |
Call kahip with options from dictionary.
Implements metisLikeDecomp.
Definition at line 73 of file kahipDecomp.C.
References refPtr< T >::clear(), metisLikeDecomp::coeffsDict_, configNames, refPtr< T >::constCast(), UList< T >::data(), UList< T >::empty(), Foam::endl(), Foam::exit(), FAST, Foam::FatalError, FatalErrorInFunction, Foam::flatOutput(), forAll, Foam::Info, Foam::max(), Foam::min(), n, decompositionMethod::nDomains_, Foam::nl, refPtr< T >::ref(), List< T >::resize(), List< T >::resize_nocopy(), ConstPrecisionAdaptor< Type, InputType, Container >::set(), PrecisionAdaptor< Type, InputType, Container >::set(), UList< T >::size(), and WarningInFunction.

|
delete |
| TypeName | ( | "kahip" | ) |
Runtime type information.
References regionName.
|
inlinevirtual |
Method is parallel aware.
Implements decompositionMethod.
Definition at line 179 of file kahipDecomp.H.
|
static |
The selection names for predefined KaHIP configurations.
Definition at line 129 of file kahipDecomp.H.
Referenced by decomposeSerial().