| 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(:,:) |
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 |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(DomainDecomposition_t), | intent(inout) | :: | mpiHandler |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(DomainDecomposition_t), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(DomainDecomposition_t), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | nGlobalElem | |||
| integer, | intent(in) | :: | maxMsg |
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), | optional | :: | comm |
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 |
type DomainDecomposition_t
logical :: mpiEnabled = .false.
logical :: initialized = .false.
logical :: ownsMpi = .false. ! true when SELF called mpi_init and is responsible for MPI_Finalize
integer :: mpiComm = MPI_COMM_NULL
integer :: mpiPrec
integer :: rankId
integer :: nRanks
integer :: nElem
integer :: maxMsg
integer :: msgCount
integer,pointer,dimension(:) :: elemToRank
integer,pointer,dimension(:) :: offSetElem
integer,allocatable :: requests(:)
integer,allocatable :: stats(:,:)
contains
procedure :: Init => Init_DomainDecomposition_t
procedure :: Free => Free_DomainDecomposition_t
procedure :: GenerateDecomposition => GenerateDecomposition_DomainDecomposition_t
procedure :: GenerateDecompositionFromOffsets => GenerateDecompositionFromOffsets_DomainDecomposition_t
procedure :: SetElemToRank => SetElemToRank_DomainDecomposition_t
procedure :: ReserveMessages => ReserveMessages_DomainDecomposition_t
procedure :: CountRemoteSides => CountRemoteSides_DomainDecomposition_t
procedure :: CountRemoteMortarSides => CountRemoteMortarSides_DomainDecomposition_t
procedure,public :: FinalizeMPIExchangeAsync
endtype DomainDecomposition_t