m_cuda_poisson_fft Module



Interfaces

public interface cuda_poisson_fft_t

  • private function init(mesh, xdirps, ydirps, zdirps) result(poisson_fft)

    Arguments

    Type IntentOptional Attributes Name
    class(mesh_t), intent(in) :: mesh
    type(dirps_t), intent(in) :: xdirps
    type(dirps_t), intent(in) :: ydirps
    type(dirps_t), intent(in) :: zdirps

    Return Value type(cuda_poisson_fft_t)


Derived Types

type, public, extends(poisson_fft_t) ::  cuda_poisson_fft_t

FFT based Poisson solver

Components

Type Visibility Attributes Name Initial
integer, public :: nx_glob

Global dimensions

integer, public :: ny_glob

Global dimensions

integer, public :: nz_glob

Global dimensions

integer, public :: nx_loc

Local dimensions

integer, public :: ny_loc

Local dimensions

integer, public :: nz_loc

Local dimensions

integer, public :: nx_perm

Local dimensions in the permuted slabs

integer, public :: ny_perm

Local dimensions in the permuted slabs

integer, public :: nz_perm

Local dimensions in the permuted slabs

integer, public :: nx_spec

Local dimensions in the permuted slabs in spectral space

integer, public :: ny_spec

Local dimensions in the permuted slabs in spectral space

integer, public :: nz_spec

Local dimensions in the permuted slabs in spectral space

integer, public :: y_sp_st

Offset in y direction in the permuted slabs in spectral space

complex(kind=dp), public, allocatable, dimension(:, :, :) :: waves

Local domain sized array storing the spectral equivalence constants

complex(kind=dp), public, allocatable, dimension(:) :: ax

Wave numbers in x, y, and z

complex(kind=dp), public, allocatable, dimension(:) :: bx

Wave numbers in x, y, and z

complex(kind=dp), public, allocatable, dimension(:) :: ay

Wave numbers in x, y, and z

complex(kind=dp), public, allocatable, dimension(:) :: by

Wave numbers in x, y, and z

complex(kind=dp), public, allocatable, dimension(:) :: az

Wave numbers in x, y, and z

complex(kind=dp), public, allocatable, dimension(:) :: bz

Wave numbers in x, y, and z

complex(kind=dp), public, device, allocatable, dimension(:, :, :) :: waves_dev

Local domain sized array storing the spectral equivalence constants

real(kind=dp), public, device, allocatable, dimension(:) :: ax_dev

Wave numbers in x, y, and z

real(kind=dp), public, device, allocatable, dimension(:) :: bx_dev

Wave numbers in x, y, and z

real(kind=dp), public, device, allocatable, dimension(:) :: ay_dev

Wave numbers in x, y, and z

real(kind=dp), public, device, allocatable, dimension(:) :: by_dev

Wave numbers in x, y, and z

real(kind=dp), public, device, allocatable, dimension(:) :: az_dev

Wave numbers in x, y, and z

real(kind=dp), public, device, allocatable, dimension(:) :: bz_dev

Wave numbers in x, y, and z

integer, public :: plan3D_fw

Forward and backward FFT transform plans

integer, public :: plan3D_bw

Forward and backward FFT transform plans

type(cudaLibXtDesc), public, pointer :: xtdesc

cuFFTMp object manages decomposition and data storage

Constructor

private function init (mesh, xdirps, ydirps, zdirps)

Type-Bound Procedures

procedure, public :: base_init
procedure, public :: waves_set
procedure, public :: fft_forward => fft_forward_cuda
procedure, public :: fft_backward => fft_backward_cuda
procedure, public :: fft_postprocess => fft_postprocess_cuda

Subroutines

public subroutine fft_forward_cuda(self, f)

Arguments

Type IntentOptional Attributes Name
class(cuda_poisson_fft_t) :: self
class(field_t), intent(in) :: f

public subroutine fft_backward_cuda(self, f)

Arguments

Type IntentOptional Attributes Name
class(cuda_poisson_fft_t) :: self
class(field_t), intent(inout) :: f

public subroutine fft_postprocess_cuda(self)

Arguments

Type IntentOptional Attributes Name
class(cuda_poisson_fft_t) :: self