| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | private | :: | nLiveDecomps | = | 0 | ||
| logical, | private | :: | selfInitializedMpi | = | .false. |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public, | pointer, dimension(:) | :: | elemToRank | |||
| logical, | public | :: | initialized | = | .false. | ||
| integer, | public | :: | maxMsg | ||||
| integer, | public | :: | mpiComm | = | MPI_COMM_NULL | ||
| logical, | public | :: | mpiEnabled | = | .false. | ||
| integer, | public | :: | mpiPrec | ||||
| integer, | public | :: | msgCount | ||||
| integer, | public | :: | nElem | ||||
| integer, | public | :: | nRanks | ||||
| integer, | public, | pointer, dimension(:) | :: | offSetElem | |||
| logical, | public | :: | ownsMpi | = | .false. | ||
| integer, | public | :: | rankId | ||||
| integer, | public, | allocatable | :: | requests(:) | |||
| integer, | public, | allocatable | :: | stats(:,:) |
| procedure, public :: CountRemoteMortarSides => CountRemoteMortarSides_DomainDecomposition_t | |
| procedure, public :: CountRemoteSides => CountRemoteSides_DomainDecomposition_t | |
| procedure, public :: FinalizeMPIExchangeAsync | |
| procedure, public :: Free => Free_DomainDecomposition_t | |
| procedure, public :: GenerateDecomposition => GenerateDecomposition_DomainDecomposition_t | |
| procedure, public :: GenerateDecompositionFromOffsets => GenerateDecompositionFromOffsets_DomainDecomposition_t | |
| procedure, public :: Init => Init_DomainDecomposition_t | |
| procedure, public :: ReserveMessages => ReserveMessages_DomainDecomposition_t | |
| procedure, public :: SetElemToRank => SetElemToRank_DomainDecomposition_t |
Counts the mortar sub-sides this rank exchanges over MPI: those where exactly one of the big side and the sub-side is owned by this rank. A mortar entirely on one rank is served from memory, and one entirely on other ranks is not this rank's to carry.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(DomainDecomposition_t), | intent(in) | :: | this | |||
| integer, | intent(in), | pointer | :: | mortarInfo(:,:) | ||
| integer, | intent(in) | :: | nMortars | |||
| integer, | intent(in) | :: | nSub |
Counts the conforming sides of the local elements whose neighbor element is owned by another rank -- the sides an exchange sends and receives over MPI.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(DomainDecomposition_t), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | sideInfo(1:5,1:nSidesPerElem,1:nElem) | |||
| integer, | intent(in) | :: | nElem | |||
| integer, | intent(in) | :: | nSidesPerElem |
Resolve the communicator a new decomposition will run on and register it with the process-wide lifecycle bookkeeping.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(out) | :: | mpiComm | |||
| logical, | intent(out) | :: | ownsMpi | |||
| integer, | intent(in), | optional | :: | comm |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | nElems | |||
| integer, | intent(in) | :: | nDomains | |||
| integer, | intent(out) | :: | offsetElem(0:nDomains) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | nDomains | |||
| integer, | intent(in) | :: | offsetElem(0:nDomains) | |||
| integer, | intent(in) | :: | elemID | |||
| integer, | intent(out) | :: | domain |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(DomainDecomposition_t), | intent(inout) | :: | mpiHandler |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(DomainDecomposition_t), | intent(inout) | :: | this |
Builds the decomposition from a prescribed contiguous partition rather than from the balanced one GenerateDecomposition computes. Rank r-1 (r = 1..nRanks) owns global elements offsetElem(r)+1 .. offsetElem(r+1), and the global element count is offsetElem(nRanks+1).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(DomainDecomposition_t), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | offsetElem(1:this%nRanks+1) | |||
| integer, | intent(in) | :: | maxMsg |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(DomainDecomposition_t), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | nGlobalElem | |||
| integer, | intent(in) | :: | maxMsg |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(DomainDecomposition_t), | intent(inout) | :: | this | |||
| integer, | intent(in), | optional | :: | comm |
Retire one decomposition from the process-wide lifecycle bookkeeping and, if it was the last one and SELF initialized MPI, finalize.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| logical, | intent(inout) | :: | ownsMpi | |||
| integer, | intent(in) | :: | rankId | |||
| integer, | intent(in) | :: | nRanks |
Ensures the non-blocking request and status scratch can hold nMsg messages
in flight, growing it when it cannot.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(DomainDecomposition_t), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | nMsg |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(DomainDecomposition_t), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | nElem |