![]() |
Octopus
|
Non-equispaced FFTs through the C interface of the FINUFFT library. More...
Non-equispaced FFTs through the C interface of the FINUFFT library.
Data Types | |
| type | finufft_t |
Functions/Subroutines | |
| subroutine, public | finufft_read_options (finufft, namespace) |
| subroutine, public | finufft_set_tolerance (finufft, tol) |
| Set the requested tolerance directly, for callers that take it from an input variable of their own rather than from FINUFFTTolerance. More... | |
| subroutine, public | finufft_init (finufft, finufft_options, N, dim, M, nthreads) |
| subroutine, public | finufft_precompute (finufft, X1, X2, X3, period) |
| Hand the spatial nodes to FINUFFT. More... | |
| subroutine, public | finufft_set_nodes (finufft, xj, yj, zj, period) |
| Hand scattered nodes to FINUFFT, mapping one period of the mode grid onto the [-1/2, 1/2) of the transform. The nodes are counted by M(1), and the caller normalizes, so norm is left at one. More... | |
| subroutine, public | finufft_modes_to_nodes (finufft, modes, values) |
| Evaluate the Fourier modes on the scattered nodes. More... | |
| subroutine, public | finufft_nodes_to_modes (finufft, values, modes) |
| Project the scattered nodes onto the Fourier modes. More... | |
| subroutine | finufft_scale_nodes (X, v, inv_spacing, period) |
| Map the nodes onto [-1/2, 1/2) and return the reciprocal of the smallest scaled spacing. A positive period means the nodes already tile one period of that length, so they are only rescaled; otherwise they are stretched to fill the interval. More... | |
| subroutine, public | finufft_write_info (finufft) |
| subroutine, public | finufft_end (finufft) |
| subroutine, public | dfinufft_forward (finufft, in, out) |
| Evaluate the Fourier modes on the non-equispaced nodes. More... | |
| subroutine, public | dfinufft_backward (finufft, in, out) |
| Project the non-equispaced nodes back onto the Fourier modes. More... | |
| subroutine, public | zfinufft_forward (finufft, in, out) |
| Evaluate the Fourier modes on the non-equispaced nodes. More... | |
| subroutine, public | zfinufft_backward (finufft, in, out) |
| Project the non-equispaced nodes back onto the Fourier modes. More... | |
| subroutine, public finufft_oct_m::finufft_read_options | ( | type(finufft_t), intent(inout) | finufft, |
| type(namespace_t), intent(in) | namespace | ||
| ) |
Definition at line 169 of file finufft.F90.
| subroutine, public finufft_oct_m::finufft_set_tolerance | ( | type(finufft_t), intent(inout) | finufft, |
| real(real64), intent(in) | tol | ||
| ) |
Set the requested tolerance directly, for callers that take it from an input variable of their own rather than from FINUFFTTolerance.
Definition at line 195 of file finufft.F90.
| subroutine, public finufft_oct_m::finufft_init | ( | type(finufft_t), intent(inout) | finufft, |
| type(finufft_t), intent(in) | finufft_options, | ||
| integer, dimension(3), intent(in) | N, | ||
| integer, intent(in) | dim, | ||
| integer, dimension(3), intent(in) | M, | ||
| integer, intent(in), optional | nthreads | ||
| ) |
| [in] | n | number of Fourier modes |
| [in] | dim | number of spatial dimensions |
| [in] | m | number of spatial nodes |
| [in] | nthreads | number of threads |
Definition at line 207 of file finufft.F90.
| subroutine, public finufft_oct_m::finufft_precompute | ( | type(finufft_t), intent(inout) | finufft, |
| real(real64), dimension(:), intent(in), contiguous | X1, | ||
| real(real64), dimension(:), intent(in), optional, contiguous | X2, | ||
| real(real64), dimension(:), intent(in), optional, contiguous | X3, | ||
| real(real64), dimension(:), intent(in), optional | period | ||
| ) |
Hand the spatial nodes to FINUFFT.
Takes the 1D coordinate vectors defining each axis, X1 for x, X2 for y and X3 for z, and expands them into the Cartesian grid of nodes that FINUFFT expects as a flat list, indexed in Fortran order.
| [in] | period | Period of the node grid per direction, see finufft_scale_nodes |
Definition at line 239 of file finufft.F90.
| subroutine, public finufft_oct_m::finufft_set_nodes | ( | type(finufft_t), intent(inout) | finufft, |
| real(real64), dimension(:), intent(in), contiguous | xj, | ||
| real(real64), dimension(:), intent(in), contiguous | yj, | ||
| real(real64), dimension(:), intent(in), contiguous | zj, | ||
| real(real64), dimension(:), intent(in), contiguous | period | ||
| ) |
Hand scattered nodes to FINUFFT, mapping one period of the mode grid onto the [-1/2, 1/2) of the transform. The nodes are counted by M(1), and the caller normalizes, so norm is left at one.
Definition at line 323 of file finufft.F90.
| subroutine, public finufft_oct_m::finufft_modes_to_nodes | ( | type(finufft_t), intent(in) | finufft, |
| complex(real64), dimension(:,:,:), intent(in), contiguous | modes, | ||
| complex(real64), dimension(:), intent(out), contiguous | values | ||
| ) |
Evaluate the Fourier modes on the scattered nodes.
Definition at line 372 of file finufft.F90.
| subroutine, public finufft_oct_m::finufft_nodes_to_modes | ( | type(finufft_t), intent(in) | finufft, |
| complex(real64), dimension(:), intent(in), contiguous | values, | ||
| complex(real64), dimension(:,:,:), intent(out), contiguous | modes | ||
| ) |
Project the scattered nodes onto the Fourier modes.
Definition at line 399 of file finufft.F90.
|
private |
Map the nodes onto [-1/2, 1/2) and return the reciprocal of the smallest scaled spacing. A positive period means the nodes already tile one period of that length, so they are only rescaled; otherwise they are stretched to fill the interval.
Definition at line 429 of file finufft.F90.
| subroutine, public finufft_oct_m::finufft_write_info | ( | type(finufft_t), intent(in) | finufft | ) |
Definition at line 461 of file finufft.F90.
| subroutine, public finufft_oct_m::finufft_end | ( | type(finufft_t), intent(inout) | finufft | ) |
Definition at line 495 of file finufft.F90.
| subroutine, public finufft_oct_m::dfinufft_forward | ( | type(finufft_t), intent(in) | finufft, |
| real(real64), dimension(:,:,:), intent(in), contiguous | in, | ||
| complex(real64), dimension(:,:,:), intent(out), contiguous | out | ||
| ) |
Evaluate the Fourier modes on the non-equispaced nodes.
Definition at line 582 of file finufft.F90.
| subroutine, public finufft_oct_m::dfinufft_backward | ( | type(finufft_t), intent(in) | finufft, |
| complex(real64), dimension (:,:,:), intent(in), contiguous | in, | ||
| real(real64), dimension(:,:,:), intent(out), contiguous | out | ||
| ) |
Project the non-equispaced nodes back onto the Fourier modes.
Definition at line 601 of file finufft.F90.
| subroutine, public finufft_oct_m::zfinufft_forward | ( | type(finufft_t), intent(in) | finufft, |
| complex(real64), dimension(:,:,:), intent(in), contiguous | in, | ||
| complex(real64), dimension(:,:,:), intent(out), contiguous | out | ||
| ) |
Evaluate the Fourier modes on the non-equispaced nodes.
Definition at line 693 of file finufft.F90.
| subroutine, public finufft_oct_m::zfinufft_backward | ( | type(finufft_t), intent(in) | finufft, |
| complex(real64), dimension (:,:,:), intent(in), contiguous | in, | ||
| complex(real64), dimension(:,:,:), intent(out), contiguous | out | ||
| ) |
Project the non-equispaced nodes back onto the Fourier modes.
Definition at line 712 of file finufft.F90.