SetInterface3D Derived Type

type, public, extends(SetInterface3D_t) :: SetInterface3D


Inherits

type~~setinterface3d~2~~InheritsGraph type~setinterface3d~2 SetInterface3D type~setinterface3d_t SetInterface3D_t type~setinterface3d~2->type~setinterface3d_t

Contents

Source Code


Components

TypeVisibilityAttributesNameInitial
integer, public :: N =0
integer, public :: comm =MPI_COMM_NULL
integer, public, allocatable:: faceElem(:)

element in set k's sub-mesh

integer, public, allocatable:: faceFlip(:)

mod(sideInfo(4),10) of the receiving side

integer, public, allocatable:: facePartnerElem(:)

partner element in set p's sub-mesh; 0 if remote

integer, public, allocatable:: facePartnerFace(:)

local face index of the partner; 0 if remote Own and partner traces, (1:Np,1:Np,1:nvarMax,1:nFaces). Pointers so a GPU backend can copy them to and from device memory with c_loc.

integer, public, allocatable:: facePartnerRank(:)

rank owning the partner element

integer, public, allocatable:: facePartnerSet(:)

partner set p

integer, public, allocatable:: facePartnerSide(:)

partner local side 1..6

integer, public, allocatable:: faceSet(:)

receiving set k

integer, public, allocatable:: faceSide(:)

local side 1..6

integer, public, allocatable:: faceSideId(:)

|global side id|

real(kind=prec), public, pointer, contiguous:: ghost(:,:,:,:)=> null()

Neighbour ranks and their faces

integer, public :: mpiPrec
integer, public :: nFaces =0
integer, public :: nNbr =0
integer, public :: nSets =0
integer, public, allocatable:: nbrFace(:)

local face index, ordered by neighbour then side id

integer, public, allocatable:: nbrFaceStart(:)

(1:nNbr+1)

integer, public, allocatable:: nbrRank(:)
integer, public :: nvarMax =0

Local interface faces, f = 1..nFaces

integer, public, allocatable:: nvarOfSet(:)
real(kind=prec), public, pointer, contiguous:: outbox(:,:,:,:)=> null()
integer, public :: rankId =0
real(kind=prec), public, allocatable:: recvBuf(:)
integer, public, allocatable:: recvStart(:)

(1:nNbr+1), offsets into recvBuf

integer, public, allocatable:: requests(:)
real(kind=prec), public, allocatable:: sendBuf(:)
integer, public, allocatable:: sendStart(:)

(1:nNbr+1), offsets into sendBuf

integer, public, allocatable:: setFaceStart(:)

(1:nSets+1)


Type-Bound Procedures

procedure, public :: BuildMap => BuildMap_SetInterface3D_t

  • public subroutine BuildMap_SetInterface3D_t(this, globalMesh, setOfElem, setGlobalId, setOffsetThisRank, nvarOfSet, N)

    Build the interface map from the global mesh and the set numbering, without communication beyond duplicating the communicator. Collective over globalMesh%decomp%mpiComm.

    Read more…

    Arguments

    TypeIntentOptionalAttributesName
    class(SetInterface3D_t), intent(inout) :: this
    type(Mesh3D), intent(in) :: globalMesh
    integer, intent(in) :: setOfElem(1:)
    integer, intent(in) :: setGlobalId(1:)
    integer, intent(in) :: setOffsetThisRank(1:)
    integer, intent(in) :: nvarOfSet(1:)
    integer, intent(in) :: N

procedure, public :: Exchange => Exchange_SetInterface3D_t

  • public subroutine Exchange_SetInterface3D_t(this, traces)

    Fill ghost(:,:,1:nvar(p),f) for every local interface face f with the partner's face trace, flipped into the receiving face's orientation.

    Read more…

    Arguments

    TypeIntentOptionalAttributesName
    class(SetInterface3D_t), intent(inout) :: this
    type(SetTraceRef), intent(in) :: traces(1:)

procedure, public :: ExchangeOutbox => ExchangeOutbox_SetInterface3D_t

procedure, public :: Free => Free_SetInterface3D_t

  • public subroutine Free_SetInterface3D_t(this)

    Release the persistent requests, buffers and the duplicate communicator. Collective over the communicator the map was built on.

    Arguments

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

procedure, public :: GatherOutbox => GatherOutbox_SetInterface3D_t

  • public subroutine GatherOutbox_SetInterface3D_t(this, traces)

    outbox(:,:,v,f) = trace of set k on face f, v = 1..nvar(k), unflipped, for every local interface face f of every set k. Host traces.

    Arguments

    TypeIntentOptionalAttributesName
    class(SetInterface3D_t), intent(inout) :: this
    type(SetTraceRef), intent(in) :: traces(1:)

Source Code

  type,extends(SetInterface3D_t) :: SetInterface3D
  endtype SetInterface3D