SELF_DomainDecomposition Module


Uses

  • module~~self_domaindecomposition~2~~UsesGraph module~self_domaindecomposition~2 SELF_DomainDecomposition iso_fortran_env iso_fortran_env module~self_domaindecomposition~2->iso_fortran_env mpi mpi module~self_domaindecomposition~2->mpi module~self_domaindecomposition_t SELF_DomainDecomposition_t module~self_domaindecomposition~2->module~self_domaindecomposition_t iso_c_binding iso_c_binding module~self_domaindecomposition~2->iso_c_binding module~self_domaindecomposition_t->mpi module~self_domaindecomposition_t->iso_c_binding module~self_constants SELF_Constants module~self_domaindecomposition_t->module~self_constants module~self_supportroutines SELF_SupportRoutines module~self_domaindecomposition_t->module~self_supportroutines module~self_lagrange~3 SELF_Lagrange module~self_domaindecomposition_t->module~self_lagrange~3 module~self_constants->iso_fortran_env module~self_constants->iso_c_binding module~self_supportroutines->iso_fortran_env module~self_supportroutines->module~self_constants module~self_lagrange~3->iso_fortran_env module~self_lagrange~3->iso_c_binding module~self_lagrange~3->module~self_constants module~self_lagrange_t SELF_Lagrange_t module~self_lagrange~3->module~self_lagrange_t module~self_lagrange_t->iso_fortran_env module~self_lagrange_t->iso_c_binding module~self_lagrange_t->module~self_constants module~self_lagrange_t->module~self_supportroutines module~self_quadrature SELF_Quadrature module~self_lagrange_t->module~self_quadrature HDF5 HDF5 module~self_lagrange_t->HDF5 module~self_hdf5 SELF_HDF5 module~self_lagrange_t->module~self_hdf5 module~self_quadrature->iso_fortran_env module~self_quadrature->module~self_constants module~self_hdf5->iso_fortran_env module~self_hdf5->mpi module~self_hdf5->module~self_constants module~self_hdf5->HDF5

Contents


Derived Types

type, public, extends(DomainDecomposition_t) :: DomainDecomposition

Components

TypeVisibilityAttributesNameInitial
integer, public, pointer, dimension(:):: elemToRank
type(c_ptr), public :: elemToRank_gpu
logical, public :: halo_built =.false.
integer, public :: halo_nnbr =0
integer, public :: halo_nsides =0
integer, public, allocatable:: halo_offset(:)
integer, public, allocatable:: halo_rank(:)
type(c_ptr), public :: halo_sides_gpu =c_null_ptr
logical, public :: initialized =.false.
integer, public :: maxMsg
integer, public :: mpiComm
logical, public :: mpiEnabled =.false.
integer, public :: mpiPrec
integer, public :: msgCount
integer, public :: nElem
integer, public :: nRanks
integer, public, pointer, dimension(:):: offSetElem
integer, public :: rankId
integer, public, allocatable:: requests(:)
integer, public, allocatable:: stats(:,:)

Type-Bound Procedures

procedure, public :: BuildHaloExchange => BuildHaloExchange_DomainDecomposition
procedure, public :: FinalizeMPIExchangeAsync
procedure, public :: Free => Free_DomainDecomposition
procedure, public :: GenerateDecomposition => GenerateDecomposition_DomainDecomposition_t
procedure, public :: Init => Init_DomainDecomposition
procedure, public :: SetElemToRank => SetElemToRank_DomainDecomposition

Subroutines

public subroutine BuildHaloExchange_DomainDecomposition(this, sideInfo, nElem, nSidesPerElem)

Build the aggregated halo exchange tables for the mesh this domain decomposition belongs to.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(DomainDecomposition), intent(inout) :: this
integer, intent(in) :: sideInfo(1:5,1:nSidesPerElem,1:nElem)
integer, intent(in) :: nElem
integer, intent(in) :: nSidesPerElem

public subroutine Free_DomainDecomposition(this)

Arguments

TypeIntentOptionalAttributesName
class(DomainDecomposition), intent(inout) :: this

public subroutine HaloKeySort(keys, elems, sides, flips, ranks, n)

Heap sort of the halo side list by ascending 64-bit key, permuting the companion arrays alongside the keys. O(n log n), in place; the relative order of equal keys is irrelevant because global side ids are unique.

Arguments

TypeIntentOptionalAttributesName
integer(kind=int64), intent(inout) :: keys(1:n)
integer, intent(inout) :: elems(1:n)
integer, intent(inout) :: sides(1:n)
integer, intent(inout) :: flips(1:n)
integer, intent(inout) :: ranks(1:n)
integer, intent(in) :: n

public subroutine HaloSiftDown(keys, elems, sides, flips, ranks, start, last)

Arguments

TypeIntentOptionalAttributesName
integer(kind=int64), intent(inout) :: keys(:)
integer, intent(inout) :: elems(:)
integer, intent(inout) :: sides(:)
integer, intent(inout) :: flips(:)
integer, intent(inout) :: ranks(:)
integer, intent(in) :: start
integer, intent(in) :: last

public subroutine HaloSwap(keys, elems, sides, flips, ranks, i, j)

Arguments

TypeIntentOptionalAttributesName
integer(kind=int64), intent(inout) :: keys(:)
integer, intent(inout) :: elems(:)
integer, intent(inout) :: sides(:)
integer, intent(inout) :: flips(:)
integer, intent(inout) :: ranks(:)
integer, intent(in) :: i
integer, intent(in) :: j

public subroutine Init_DomainDecomposition(this)

Arguments

TypeIntentOptionalAttributesName
class(DomainDecomposition), intent(inout) :: this

public subroutine SetElemToRank_DomainDecomposition(this, nElem)

Arguments

TypeIntentOptionalAttributesName
class(DomainDecomposition), intent(inout) :: this
integer, intent(in) :: nElem