Octopus
|
Fast Fourier Transform module. This module provides a single interface that works with different FFT implementations. More...
Fast Fourier Transform module. This module provides a single interface that works with different FFT implementations.
Data Types | |
interface | dfft_backward |
interface | dfft_forward |
type | fft_t |
interface | zfft_backward |
interface | zfft_forward |
Functions/Subroutines | |
subroutine, public | fft_all_init (namespace) |
initialize the table More... | |
subroutine, public | fft_all_end () |
delete all plans More... | |
subroutine, public | fft_init (this, nn, dim, type, library, optimize, optimize_parity, comm, mpi_grp, use_aligned) |
subroutine, public | fft_init_stage1 (this, namespace, XX, nn) |
Some fft-libraries (only NFFT for the moment) need an additional precomputation stage that depends on the spatial grid whose size may change after fft_init. More... | |
subroutine, public | fft_end (this) |
subroutine, public | fft_copy (fft_i, fft_o) |
subroutine, public | fft_get_dims (fft, rs_n_global, fs_n_global, rs_n, fs_n, rs_istart, fs_istart) |
pure integer function, public | pad_feq (ii, nn, mode) |
convert between array index and G-vector More... | |
integer function | fft_size (size, factors, parity) |
subroutine | get_exponents (num, nfactors, factors, exponents, nondiv) |
subroutine | fft_operation_count (fft) |
subroutine, public | fft_gg_transform (gg_in, temp, periodic_dim, latt, qq, gg, modg2) |
real(real64) pure function, public | fft_scaling_factor (fft) |
This function returns the factor required to normalize a function after a forward and backward transform. More... | |
real(real64) function, public | fft_get_ecut_from_box (box_dim, fs_istart, latt, gspacing, periodic_dim, qq) |
Given an fft box (fixed by the real-space grid), it returns the cutoff energy of the sphere that fits inside the box. More... | |
subroutine | dfft_forward_3d (fft, in, out, norm) |
subroutine | dfft_forward_accel (fft, in, out) |
subroutine | dfft_forward_1d (fft, in, out) |
subroutine | dfft_backward_3d (fft, in, out, norm) |
subroutine | dfft_backward_accel (fft, in, out) |
subroutine | dfft_backward_1d (fft, in, out) |
subroutine | zfft_forward_3d (fft, in, out, norm) |
subroutine | zfft_forward_accel (fft, in, out) |
subroutine | zfft_forward_1d (fft, in, out) |
subroutine | zfft_backward_3d (fft, in, out, norm) |
subroutine | zfft_backward_accel (fft, in, out) |
subroutine | zfft_backward_1d (fft, in, out) |
Variables | |
integer, parameter, public | fft_none = 0 |
global constants More... | |
integer, parameter, public | fft_real = 1 |
integer, parameter, public | fft_complex = 2 |
integer, parameter, public | fftlib_none = 0 |
integer, parameter, public | fftlib_fftw = 1 |
integer, parameter, public | fftlib_pfft = 2 |
integer, parameter, public | fftlib_accel = 3 |
integer, parameter, public | fftlib_nfft = 4 |
integer, parameter, public | fftlib_pnfft = 5 |
integer, parameter | fft_max = 10 |
integer, parameter | fft_null = -1 |
logical, save, public | fft_initialized = .false. |
integer, dimension(fft_max), save | fft_refs |
type(fft_t), dimension(fft_max), save | fft_array |
logical | fft_optimize |
integer, save | fft_prepare_plan |
integer, public | fft_default_lib = -1 |
type(nfft_t), save | nfft_options |
type(pnfft_t), save | pnfft_options |
integer, parameter | cufft_r2c = int(z'2a') |
integer, parameter | cufft_c2r = int(z'2c') |
integer, parameter | cufft_c2c = int(z'29') |
integer, parameter | cufft_d2z = int(z'6a') |
integer, parameter | cufft_z2d = int(z'6c') |
integer, parameter | cufft_z2z = int(z'69') |
subroutine, public fft_oct_m::fft_all_init | ( | type(namespace_t), intent(in) | namespace | ) |
subroutine, public fft_oct_m::fft_init | ( | type(fft_t), intent(inout) | this, |
integer, dimension(3), intent(inout) | nn, | ||
integer, intent(in) | dim, | ||
integer, intent(in) | type, | ||
integer, intent(in) | library, | ||
logical, dimension(3), intent(in) | optimize, | ||
integer, dimension(3), intent(in) | optimize_parity, | ||
type(mpi_comm), intent(out), optional | comm, | ||
type(mpi_grp_t), intent(in), optional | mpi_grp, | ||
logical, optional | use_aligned | ||
) |
[in,out] | this | FFT data type |
[in,out] | nn | Size of the box |
[in] | dim | Dimensions of the box |
[in] | type | The type of the FFT; real or complex |
[in] | library | FFT library to be used. Can be overridden. |
[in] | optimize | whether we should optimize grid in each direction |
[in] | optimize_parity | choose optimized grid in each direction as even (0), odd (1), or whatever (negative). |
[out] | comm | MPI communicator |
[in] | mpi_grp | the mpi_group we want to use for the parallelization |
use_aligned | For FFTW we can use aligned memory |
subroutine, public fft_oct_m::fft_init_stage1 | ( | type(fft_t), intent(inout) | this, |
type(namespace_t), intent(in) | namespace, | ||
real(real64), dimension(:,:), intent(in) | XX, | ||
integer, dimension(:), intent(in), optional | nn | ||
) |
Some fft-libraries (only NFFT for the moment) need an additional precomputation stage that depends on the spatial grid whose size may change after fft_init.
[in,out] | this | FFT data type |
[in] | namespace | NFFT spatial nodes on x-axis XX(:,1), y-axis XX(:,2), and z-axis XX(:,3) |
subroutine, public fft_oct_m::fft_end | ( | type(fft_t), intent(inout) | this | ) |
subroutine, public fft_oct_m::fft_get_dims | ( | type(fft_t), intent(in) | fft, |
integer, dimension(1:3), intent(out) | rs_n_global, | ||
integer, dimension(1:3), intent(out) | fs_n_global, | ||
integer, dimension(1:3), intent(out) | rs_n, | ||
integer, dimension(1:3), intent(out) | fs_n, | ||
integer, dimension(1:3), intent(out) | rs_istart, | ||
integer, dimension(1:3), intent(out) | fs_istart | ||
) |
pure integer function, public fft_oct_m::pad_feq | ( | integer, intent(in) | ii, |
integer, intent(in) | nn, | ||
logical, intent(in) | mode | ||
) |
|
private |
|
private |
|
private |
subroutine, public fft_oct_m::fft_gg_transform | ( | integer, dimension(:), intent(in) | gg_in, |
real(real64), dimension(:), intent(in) | temp, | ||
integer, intent(in) | periodic_dim, | ||
type(lattice_vectors_t), intent(in) | latt, | ||
real(real64), dimension(:), intent(in) | qq, | ||
real(real64), dimension(:), intent(inout) | gg, | ||
real(real64), intent(out) | modg2 | ||
) |
real(real64) pure function, public fft_oct_m::fft_scaling_factor | ( | type(fft_t), intent(in) | fft | ) |
real(real64) function, public fft_oct_m::fft_get_ecut_from_box | ( | integer, dimension(:), intent(in) | box_dim, |
integer, dimension(:), intent(in) | fs_istart, | ||
type(lattice_vectors_t), intent(in) | latt, | ||
real(real64), dimension(:), intent(in) | gspacing, | ||
integer, intent(in) | periodic_dim, | ||
real(real64), dimension(:), intent(in) | |||
) |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
integer, parameter, public fft_oct_m::fft_none = 0 |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |