SetInterface3D_t Derived Type

type, public :: SetInterface3D_t


Inherited by

type~~setinterface3d_t~~InheritedByGraph type~setinterface3d_t SetInterface3D_t type~setinterface3d SetInterface3D type~setinterface3d->type~setinterface3d_t type~setinterface3d~2 SetInterface3D type~setinterface3d~2->type~setinterface3d_t type~multisetmodel3d_t MultiSetModel3D_t type~multisetmodel3d_t->type~setinterface3d iface type~multisetmodel3d MultiSetModel3D type~multisetmodel3d->type~multisetmodel3d_t type~multisetmodel3d~2 MultiSetModel3D type~multisetmodel3d~2->type~multisetmodel3d_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 SetInterface3D_t
    integer :: nSets = 0
    integer :: N = 0
    integer,allocatable :: nvarOfSet(:)
    integer :: nvarMax = 0

    !! Local interface faces, f = 1..nFaces
    integer :: nFaces = 0
    integer,allocatable :: setFaceStart(:) !! (1:nSets+1)
    integer,allocatable :: faceSet(:) !! receiving set k
    integer,allocatable :: faceElem(:) !! element in set k's sub-mesh
    integer,allocatable :: faceSide(:) !! local side 1..6
    integer,allocatable :: faceFlip(:) !! mod(sideInfo(4),10) of the receiving side
    integer,allocatable :: facePartnerSet(:) !! partner set p
    integer,allocatable :: facePartnerRank(:) !! rank owning the partner element
    integer,allocatable :: facePartnerElem(:) !! partner element in set p's sub-mesh; 0 if remote
    integer,allocatable :: facePartnerSide(:) !! partner local side 1..6
    integer,allocatable :: faceSideId(:) !! |global side id|
    integer,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.
    real(prec),pointer,contiguous :: outbox(:,:,:,:) => null()
    real(prec),pointer,contiguous :: ghost(:,:,:,:) => null()

    !! Neighbour ranks and their faces
    integer :: nNbr = 0
    integer,allocatable :: nbrRank(:)
    integer,allocatable :: nbrFaceStart(:) !! (1:nNbr+1)
    integer,allocatable :: nbrFace(:) !! local face index, ordered by neighbour then side id
    integer,allocatable :: sendStart(:) !! (1:nNbr+1), offsets into sendBuf
    integer,allocatable :: recvStart(:) !! (1:nNbr+1), offsets into recvBuf
    real(prec),allocatable :: sendBuf(:)
    real(prec),allocatable :: recvBuf(:)
    integer,allocatable :: requests(:)

    integer :: comm = MPI_COMM_NULL
    integer :: mpiPrec
    integer :: rankId = 0

  contains

    procedure :: BuildMap => BuildMap_SetInterface3D_t
    procedure :: Exchange => Exchange_SetInterface3D_t
    procedure :: GatherOutbox => GatherOutbox_SetInterface3D_t
    procedure :: ExchangeOutbox => ExchangeOutbox_SetInterface3D_t
    procedure :: Free => Free_SetInterface3D_t

  endtype SetInterface3D_t