FastTransforms
Loading...
Searching...
No Matches
FFTW Synthesis and Analysis

FFTW Synthesis and Analysis.

\( \def\ud{{\rm\,d}} \def\ii{{\rm i}} \def\fl{{\rm\,fl}} \def\abs#1{\left|{#1}\right|} \def\norm#1{\left\|{#1}\right\|} \def\conj#1{\overline{#1}} \)

FastTransforms provides templates for FFTW synthesis and analysis on the sphere, disk, and triangle. Data structures within the ft_* namespace are provided, along with destructors. Convenience methods are provided to plan and execute the transforms at particular points.

FFTW Synthesis and Analysis

ft_fftw_sphere_plan & ft_fftw_spinsphere_plan

On the sphere, the \(N\times M\) equiangular grids are:

\begin{align*} \theta_n & = \frac{2n+1}{2N}\pi,\quad {\rm for} \quad 0 \le n < N,\\ \varphi_m & = \frac{2m}{M}\pi,\quad {\rm for} \quad 0 \le m < M. \end{align*}

ft_fftw_disk_plan

On the disk, the \(N\times M\) radial–azimuthal grids are:

\begin{align*} r_n & = \cos\left(\frac{2n+1}{4N}\pi\right) = \sin\left(\frac{2N-2n-1}{4N}\pi\right),\quad {\rm for} \quad 0 \le n < N,\\ \theta_m & = \frac{2m}{M}\pi,\quad {\rm for} \quad 0 \le m < M. \end{align*}

ft_fftw_annulus_plan

On the annulus, the \(N\times M\) radial–azimuthal grids are:

\begin{align*} r_n & = \sqrt{\cos^2\left(\frac{2n+1}{4N}\pi\right) + \rho^2\sin^2\left(\frac{2n+1}{4N}\pi\right)},\\ & = \sqrt{\sin^2\left(\frac{2N-2n-1}{4N}\pi\right) + \rho^2\cos^2\left(\frac{2N-2n-1}{4N}\pi\right)},\quad {\rm for} \quad 0 \le n < N,\\ \theta_m & = \frac{2m}{M}\pi,\quad {\rm for} \quad 0 \le m < M. \end{align*}

ft_fftw_rectdisk_plan

On the rectangularized disk, the \(N\times M\) mapped tensor product grids are:

\begin{align*} x_n & = \cos\left(\frac{2n+1}{2N}\pi\right) = \sin\left(\frac{N-2n-1}{2N}\pi\right),\quad {\rm for} \quad 0 \le n < N,\\ z_m & = \cos\left(\frac{2m+1}{2M}\pi\right) = \sin\left(\frac{M-2m-1}{2M}\pi\right),\quad {\rm for} \quad 0 \le m < M,\\ y_{n,m} & = \sqrt{1-x_n^2}z_m. \end{align*}

Slightly more accuracy can be expected by using an auxiliary array:

\[ w_n = \sin\left(\frac{2n+1}{2N}\pi\right),\quad {\rm for} \quad 0 \le n < N, \]

so that \(y_{n,m} = w_nz_m\).

ft_fftw_triangle_plan

On the reference triangle with vertices \((0,0)\), \((0,1)\), and \((1,0)\), the \(N\times M\) mapped tensor product grids are:

\begin{align*} x = \frac{1+u}{2}, & \quad {\rm and} \quad y = \frac{(1-u)(1+v)}{4},\quad{\rm where},\\ u_n & = \cos\left(\frac{2n+1}{2N}\pi\right),\quad {\rm for} \quad 0 \le n < N,\\ v_m & = \cos\left(\frac{2m+1}{2M}\pi\right),\quad {\rm for} \quad 0 \le m < M. \end{align*}

As in the radial grid on the disk, slightly more accuracy can be maintained from:

\begin{align*} x_n & = \left[\sin\left(\frac{2N-2n-1}{4N}\pi\right)\right]^2,\quad {\rm for} \quad 0 \le n < N,\\ w_m & = \left[\sin\left(\frac{2M-2m-1}{4M}\pi\right)\right]^2,\quad {\rm for} \quad 0 \le m < M,\\ y_{n,m} & = x_{N-1-n}w_m. \end{align*}