![]() |
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(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 |