pencil Derived Type

type, public :: pencil

Class that describes information about data layout


Inherited by

type~~pencil~~InheritedByGraph type~pencil pencil type~backend_helper backend_helper type~backend_helper->type~pencil pencils type~dtfft_plan_r2c_t dtfft_plan_r2c_t type~dtfft_plan_r2c_t->type~pencil real_pencil type~dtfft_core_c2c dtfft_core_c2c type~dtfft_plan_r2c_t->type~dtfft_core_c2c type~dtfft_plan_t dtfft_plan_t type~dtfft_plan_t->type~pencil pencils type~abstract_transpose_plan abstract_transpose_plan type~dtfft_plan_t->type~abstract_transpose_plan plan type~abstract_transpose_plan->type~backend_helper helper type~dtfft_core_c2c->type~dtfft_plan_t type~dtfft_plan_r2r_t dtfft_plan_r2r_t type~dtfft_plan_r2r_t->type~dtfft_plan_t type~plan_c plan_c type~plan_c->type~dtfft_plan_t p type~dtfft_plan_c2c_t dtfft_plan_c2c_t type~dtfft_plan_c2c_t->type~dtfft_core_c2c type~transpose_plan_cuda transpose_plan_cuda type~transpose_plan_cuda->type~abstract_transpose_plan type~transpose_plan_host transpose_plan_host type~transpose_plan_host->type~abstract_transpose_plan

Components

Type Visibility Attributes Name Initial
integer(kind=int8), public :: aligned_dim

Position of aligned dimension. For example: X pencil aligned_dim = 1, Z pencil aligned_dim = 3

integer(kind=int8), public :: rank

Rank of buffer: 2 or 3

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

Local starts, starting from 0 for both C and Fortran

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

Local counts of data, in elements

logical, public :: is_even

Is data evenly distributed across processes


Type-Bound Procedures

procedure, public, pass(self) :: create

Creates pencil

  • private subroutine create(self, rank, aligned_dim, counts, comms)

    Creates pencil

    Arguments

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

    Pencil

    integer(kind=int8), intent(in) :: rank

    Rank of buffer

    integer(kind=int8), intent(in) :: aligned_dim

    Position of aligned dimension

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

    Global counts

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

    Grid communicators

procedure, public, pass(self) :: destroy

Destroys pencil

  • private subroutine destroy(self)

    Destroys pencil

    Arguments

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

    Pencil

procedure, public, pass(self) :: make_public

Creates public object that users can use to create own FFT backends

  • private function make_public(self)

    Creates public object that users can use to create own FFT backends

    Arguments

    Type IntentOptional Attributes Name
    class(pencil), intent(in) :: self

    Pencil

    Return Value type(dtfft_pencil_t)