data_handle Derived Type

type, private :: data_handle

Helper class used to obtain displacements and counts needed to send to other processes


Components

Type Visibility Attributes Name Initial
integer(kind=int32), public, allocatable :: ls(:,:)

Starts of my data that I should send or recv while communicating with other processes

integer(kind=int32), public, allocatable :: ln(:,:)

Counts of my data that I should send or recv while communicating with other processes

integer(kind=int32), public, allocatable :: sizes(:,:)

Counts of every rank in a comm

integer(kind=int32), public, allocatable :: starts(:,:)

Starts of every rank in a comm

integer(kind=int32), public, allocatable :: displs(:)

Local buffer displacement

integer(kind=int32), public, allocatable :: counts(:)

Number of elements to send or recv


Type-Bound Procedures

procedure, public, pass(self) :: create => create_data_handle

Creates handle

  • private subroutine create_data_handle(self, info, comm, comm_size)

    Creates handle

    Arguments

    Type IntentOptional Attributes Name
    class(data_handle), intent(inout) :: self

    Helper class

    type(pencil), intent(in) :: info

    Pencil info

    type(MPI_Comm), intent(in) :: comm

    MPI communicator

    integer(kind=int32), intent(in) :: comm_size

    Size of comm

procedure, public, pass(self) :: destroy => destroy_data_handle

Destroys handle

  • private subroutine destroy_data_handle(self)

    Destroys handle

    Arguments

    Type IntentOptional Attributes Name
    class(data_handle), intent(inout) :: self

    Helper class