| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(poisson_fft_t) | :: | self | ||||
| class(field_t), | intent(in) | :: | f_in | 
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(poisson_fft_t) | :: | self | ||||
| class(field_t), | intent(inout) | :: | f_out | 
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(poisson_fft_t) | :: | self | 
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(poisson_fft_t) | :: | self | ||||
| class(field_t), | intent(inout) | :: | f | |||
| class(field_t), | intent(inout) | :: | temp | 
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(poisson_fft_t) | :: | self | ||||
| class(field_t), | intent(inout) | :: | f_out | |||
| class(field_t), | intent(in) | :: | f_in | 
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 | 
| procedure(fft_forward), public, deferred :: fft_forward | |
| procedure(fft_backward), public, deferred :: fft_backward | |
| procedure(fft_postprocess), public, deferred :: fft_postprocess_000 | |
| procedure(fft_postprocess), public, deferred :: fft_postprocess_010 | |
| procedure(field_process), public, deferred :: enforce_periodicity_y | |
| procedure(field_process), public, deferred :: undo_periodicity_y | |
| 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 | 
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(poisson_fft_t) | :: | self | ||||
| integer, | intent(in) | :: | i | |||
| integer, | intent(in) | :: | j | |||
| integer, | intent(in) | :: | k | 
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(poisson_fft_t) | :: | self | ||||
| integer, | intent(in) | :: | i | |||
| integer, | intent(in) | :: | j | |||
| integer, | intent(in) | :: | k | 
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(poisson_fft_t) | :: | self | ||||
| integer, | intent(in) | :: | i | |||
| integer, | intent(in) | :: | j | |||
| integer, | intent(in) | :: | k | 
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=dp), | intent(in) | :: | complx | 
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=dp), | intent(in) | :: | complx | 
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(poisson_fft_t) | :: | self | ||||
| type(mesh_t), | intent(in) | :: | mesh | |||
| type(dirps_t), | intent(in) | :: | xdirps | |||
| type(dirps_t), | intent(in) | :: | ydirps | |||
| type(dirps_t), | intent(in) | :: | zdirps | |||
| integer, | intent(in), | dimension(3) | :: | n_spec | ||
| integer, | intent(in), | dimension(3) | :: | n_sp_st | 
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(poisson_fft_t) | :: | self | ||||
| class(field_t), | intent(inout) | :: | f | |||
| class(field_t), | intent(inout) | :: | temp | 
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(poisson_fft_t) | :: | self | ||||
| class(field_t), | intent(inout) | :: | f | |||
| class(field_t), | intent(inout) | :: | temp | 
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(poisson_fft_t) | :: | self | ||||
| class(field_t), | intent(inout) | :: | f | |||
| class(field_t), | intent(inout) | :: | temp | 
Stretching necessitates a special operation in spectral space. The coefficients for the operation are stored in matrix form.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(poisson_fft_t) | :: | self | ||||
| type(geo_t), | intent(in) | :: | geo | |||
| type(dirps_t), | intent(in) | :: | xdirps | |||
| type(dirps_t), | intent(in) | :: | ydirps | |||
| type(dirps_t), | intent(in) | :: | zdirps | 
Spectral equivalence constants
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(poisson_fft_t) | :: | self | ||||
| type(geo_t), | intent(in) | :: | geo | |||
| type(dirps_t), | intent(in) | :: | xdirps | |||
| type(dirps_t), | intent(in) | :: | ydirps | |||
| type(dirps_t), | intent(in) | :: | zdirps | 
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(out), | dimension(:) | :: | a | ||
| real(kind=dp), | intent(out), | dimension(:) | :: | b | ||
| complex(kind=dp), | intent(out), | dimension(:) | :: | k | ||
| complex(kind=dp), | intent(out), | dimension(:) | :: | e | ||
| complex(kind=dp), | intent(out), | dimension(:) | :: | k2 | ||
| integer, | intent(in) | :: | n | |||
| real(kind=dp), | intent(in) | :: | L | |||
| real(kind=dp), | intent(in) | :: | d | |||
| logical, | intent(in) | :: | periodic | |||
| real(kind=dp), | intent(in) | :: | c_a | |||
| real(kind=dp), | intent(in) | :: | c_b | |||
| real(kind=dp), | intent(in) | :: | c_alpha |