darrays_types Module

Type definitions for distributed arrays

Provides the darray_t type for DDI-style distributed 2D arrays. Columns are distributed across MPI ranks with each rank owning a contiguous block of columns. Supports dp, sp, i32, and i64 data types.


Uses

  • module~~darrays_types~~UsesGraph module~darrays_types darrays_types module~pic_mpi_lib pic_mpi_lib module~darrays_types->module~pic_mpi_lib pic_types pic_types module~darrays_types->pic_types module~pic_mpi_f08 pic_mpi_f08 module~pic_mpi_lib->module~pic_mpi_f08 module~pic_mpi_f08->pic_types mpi_f08 mpi_f08 module~pic_mpi_f08->mpi_f08

Used by

  • module~~darrays_types~~UsedByGraph module~darrays_types darrays_types module~darrays darrays module~darrays->module~darrays_types module~darrays_core darrays_core module~darrays->module~darrays_core module~darrays_core->module~darrays_types

Variables

Type Visibility Attributes Name Initial
integer(kind=int32), public, parameter :: DTYPE_DP = 1

Double precision real

integer(kind=int32), public, parameter :: DTYPE_I32 = 3

32-bit integer

integer(kind=int32), public, parameter :: DTYPE_I64 = 4

64-bit integer

integer(kind=int32), public, parameter :: DTYPE_SP = 2

Single precision real


Derived Types

type, public ::  darray_t

Distributed array descriptor

Read more…

Components

Type Visibility Attributes Name Initial
logical, public :: active = .false.

Is this array slot in use?

real(kind=dp), public, pointer :: data_dp(:) => null()
integer(kind=int32), public, pointer :: data_i32(:) => null()
integer(kind=int64), public, pointer :: data_i64(:) => null()
real(kind=sp), public, pointer :: data_sp(:) => null()
integer(kind=int32), public :: dtype = 0

Data type (DTYPE_DP, DTYPE_SP, etc.)

integer(kind=int32), public :: handle = -1

Unique array handle

integer(kind=int64), public :: local_size = 0

Size of local data (nrows * my_ncols)

integer(kind=int32), public :: my_first_col = 0

First column owned (0-indexed)

integer(kind=int32), public :: my_ncols = 0

Number of columns owned

integer(kind=int32), public :: ncols = 0

Total number of columns

integer(kind=int32), public :: nrows = 0

Total number of rows

type(win_t), public :: win

MPI window for RMA access