Octopus
finufft_oct_m Module Reference

Non-equispaced FFTs through the C interface of the FINUFFT library. More...

Detailed Description

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_init (finufft, finufft_options, N, dim, M)
 
subroutine, public finufft_precompute (finufft, X1, X2, X3)
 Hand the spatial nodes to FINUFFT. More...
 
subroutine finufft_scale_nodes (X, v, inv_spacing)
 Map the nodes onto [-1/2, 1/2) and return the reciprocal of the smallest scaled spacing. 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...
 

Function/Subroutine Documentation

◆ finufft_read_options()

subroutine, public finufft_oct_m::finufft_read_options ( type(finufft_t), intent(inout)  finufft,
type(namespace_t), intent(in)  namespace 
)

Definition at line 165 of file finufft.F90.

◆ finufft_init()

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 
)
Parameters
[in]nnumber of Fourier modes
[in]dimnumber of spatial dimensions
[in]mnumber of spatial nodes

Definition at line 189 of file finufft.F90.

◆ finufft_precompute()

subroutine, public finufft_oct_m::finufft_precompute ( type(finufft_t), intent(inout)  finufft,
real(real64), dimension(:), intent(in)  X1,
real(real64), dimension(:), intent(in), optional  X2,
real(real64), dimension(:), intent(in), optional  X3 
)

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.

Definition at line 226 of file finufft.F90.

◆ finufft_scale_nodes()

subroutine finufft_oct_m::finufft_scale_nodes ( real(real64), dimension(:), intent(in)  X,
real(real64), dimension(:), intent(out)  v,
real(real64), intent(out)  inv_spacing 
)
private

Map the nodes onto [-1/2, 1/2) and return the reciprocal of the smallest scaled spacing.

Definition at line 304 of file finufft.F90.

◆ finufft_write_info()

subroutine, public finufft_oct_m::finufft_write_info ( type(finufft_t), intent(in)  finufft)

Definition at line 330 of file finufft.F90.

◆ finufft_end()

subroutine, public finufft_oct_m::finufft_end ( type(finufft_t), intent(inout)  finufft)

Definition at line 364 of file finufft.F90.

◆ dfinufft_forward()

subroutine, public finufft_oct_m::dfinufft_forward ( type(finufft_t), intent(in)  finufft,
real(real64), dimension(:,:,:), intent(in)  in,
complex(real64), dimension(:,:,:), intent(out)  out 
)

Evaluate the Fourier modes on the non-equispaced nodes.

Definition at line 451 of file finufft.F90.

◆ dfinufft_backward()

subroutine, public finufft_oct_m::dfinufft_backward ( type(finufft_t), intent(in)  finufft,
complex(real64), dimension (:,:,:), intent(in)  in,
real(real64), dimension(:,:,:), intent(out)  out 
)

Project the non-equispaced nodes back onto the Fourier modes.

Definition at line 470 of file finufft.F90.

◆ zfinufft_forward()

subroutine, public finufft_oct_m::zfinufft_forward ( type(finufft_t), intent(in)  finufft,
complex(real64), dimension(:,:,:), intent(in)  in,
complex(real64), dimension(:,:,:), intent(out)  out 
)

Evaluate the Fourier modes on the non-equispaced nodes.

Definition at line 562 of file finufft.F90.

◆ zfinufft_backward()

subroutine, public finufft_oct_m::zfinufft_backward ( type(finufft_t), intent(in)  finufft,
complex(real64), dimension (:,:,:), intent(in)  in,
complex(real64), dimension(:,:,:), intent(out)  out 
)

Project the non-equispaced nodes back onto the Fourier modes.

Definition at line 581 of file finufft.F90.