if stretching in y is 'bottom'
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(mesh_t), | intent(in) | :: | mesh | |||
type(dirps_t), | intent(in) | :: | xdirps | |||
type(dirps_t), | intent(in) | :: | ydirps | |||
type(dirps_t), | intent(in) | :: | zdirps | |||
logical, | intent(in), | optional | :: | lowmem |
FFT based Poisson solver
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 | :: | x_sp_st |
Offset in y and z directions in the permuted slabs in spectral space |
|||
integer, | public | :: | y_sp_st |
Offset in y and z directions in the permuted slabs in spectral space |
|||
integer, | public | :: | z_sp_st |
Offset in y and z directions in the permuted slabs in spectral space |
|||
complex(kind=dp), | public, | allocatable, dimension(:, :, :) | :: | waves |
Local domain sized array storing the spectral equivalence constants |
||
real(kind=dp), | public, | allocatable, dimension(:) | :: | ax |
Wave numbers in x, y, and z |
||
real(kind=dp), | public, | allocatable, dimension(:) | :: | bx |
Wave numbers in x, y, and z |
||
real(kind=dp), | public, | allocatable, dimension(:) | :: | ay |
Wave numbers in x, y, and z |
||
real(kind=dp), | public, | allocatable, dimension(:) | :: | by |
Wave numbers in x, y, and z |
||
real(kind=dp), | public, | allocatable, dimension(:) | :: | az |
Wave numbers in x, y, and z |
||
real(kind=dp), | public, | allocatable, dimension(:) | :: | bz |
Wave numbers in x, y, and z |
||
complex(kind=dp), | public, | allocatable, dimension(:) | :: | kx |
Wave numbers in x, y, and z |
||
complex(kind=dp), | public, | allocatable, dimension(:) | :: | ky |
Wave numbers in x, y, and z |
||
complex(kind=dp), | public, | allocatable, dimension(:) | :: | kz |
Wave numbers in x, y, and z |
||
complex(kind=dp), | public, | allocatable, dimension(:) | :: | exs |
Wave numbers in x, y, and z |
||
complex(kind=dp), | public, | allocatable, dimension(:) | :: | eys |
Wave numbers in x, y, and z |
||
complex(kind=dp), | public, | allocatable, dimension(:) | :: | ezs |
Wave numbers in x, y, and z |
||
complex(kind=dp), | public, | allocatable, dimension(:) | :: | k2x |
Wave numbers in x, y, and z |
||
complex(kind=dp), | public, | allocatable, dimension(:) | :: | k2y |
Wave numbers in x, y, and z |
||
complex(kind=dp), | public, | allocatable, dimension(:) | :: | k2z |
Wave numbers in x, y, and z |
||
real(kind=dp), | public, | allocatable, dimension(:) | :: | trans_x_re |
Staggared grid transformation |
||
real(kind=dp), | public, | allocatable, dimension(:) | :: | trans_x_im |
Staggared grid transformation |
||
real(kind=dp), | public, | allocatable, dimension(:) | :: | trans_y_re |
Staggared grid transformation |
||
real(kind=dp), | public, | allocatable, dimension(:) | :: | trans_y_im |
Staggared grid transformation |
||
real(kind=dp), | public, | allocatable, dimension(:) | :: | trans_z_re |
Staggared grid transformation |
||
real(kind=dp), | public, | allocatable, dimension(:) | :: | trans_z_im |
Staggared grid transformation |
||
logical, | public | :: | periodic_x |
Periodicity in x, y, and z |
|||
logical, | public | :: | periodic_y |
Periodicity in x, y, and z |
|||
logical, | public | :: | periodic_z |
Periodicity in x, y, and z |
|||
logical, | public | :: | stretched_y | = | .false. |
Periodicity in x, y, and z |
|
logical, | public | :: | stretched_y_sym |
Periodicity in x, y, and z |
|||
real(kind=dp), | public, | allocatable, dimension(:, :, :, :) | :: | a_odd_re |
Stretching operator matrices |
||
real(kind=dp), | public, | allocatable, dimension(:, :, :, :) | :: | a_odd_im |
Stretching operator matrices |
||
real(kind=dp), | public, | allocatable, dimension(:, :, :, :) | :: | a_even_re |
Stretching operator matrices |
||
real(kind=dp), | public, | allocatable, dimension(:, :, :, :) | :: | a_even_im |
Stretching operator matrices |
||
real(kind=dp), | public, | allocatable, dimension(:, :, :, :) | :: | a_re |
Stretching operator matrices |
||
real(kind=dp), | public, | allocatable, dimension(:, :, :, :) | :: | a_im |
Stretching operator matrices |
||
logical, | public | :: | lowmem | = | .false. |
lowmem option, only used in CUDA backend |
|
procedure(poisson_xxx), | public, | pointer | :: | poisson | => | null() |
Procedure pointer to BC specific poisson solvers |
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 |
||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :, :) | :: | store_a_odd_re_dev |
Stretching operator matrices stores |
||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :, :) | :: | store_a_odd_im_dev |
Stretching operator matrices stores |
||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :, :) | :: | store_a_even_re_dev |
Stretching operator matrices stores |
||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :, :) | :: | store_a_even_im_dev |
Stretching operator matrices stores |
||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :, :) | :: | store_a_re_dev |
Stretching operator matrices stores |
||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :, :) | :: | store_a_im_dev |
Stretching operator matrices stores |
||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :, :) | :: | a_odd_re_dev |
Stretching operator matrices |
||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :, :) | :: | a_odd_im_dev |
Stretching operator matrices |
||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :, :) | :: | a_even_re_dev |
Stretching operator matrices |
||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :, :) | :: | a_even_im_dev |
Stretching operator matrices |
||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :, :) | :: | a_re_dev |
Stretching operator matrices |
||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :, :) | :: | a_im_dev |
Stretching operator matrices |
||
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 |
private function init (mesh, xdirps, ydirps, zdirps, lowmem) | if stretching in y is 'bottom' |
procedure, public :: base_init | |
procedure, public :: solve_poisson | |
procedure, public :: stretching_matrix | |
procedure, public :: waves_set | |
procedure, public :: get_km | |
procedure, public :: get_km_re | |
procedure, public :: get_km_im | |
procedure, public :: fft_forward => fft_forward_cuda | |
procedure, public :: fft_backward => fft_backward_cuda | |
procedure, public :: fft_postprocess_000 => fft_postprocess_000_cuda | |
procedure, public :: fft_postprocess_010 => fft_postprocess_010_cuda | |
procedure, public :: enforce_periodicity_y => enforce_periodicity_y_cuda | |
procedure, public :: undo_periodicity_y => undo_periodicity_y_cuda |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_poisson_fft_t) | :: | self | ||||
class(field_t), | intent(in) | :: | f |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_poisson_fft_t) | :: | self | ||||
class(field_t), | intent(inout) | :: | f |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_poisson_fft_t) | :: | self |
if stretching in y is 'bottom'
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_poisson_fft_t) | :: | self |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_poisson_fft_t) | :: | self | ||||
class(field_t), | intent(inout) | :: | f_out | |||
class(field_t), | intent(in) | :: | f_in |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_poisson_fft_t) | :: | self | ||||
class(field_t), | intent(inout) | :: | f_out | |||
class(field_t), | intent(in) | :: | f_in |