FOURIER_TRANSFORM

Compute the Discrete Fourier Transform (DFT) by means of FFTW of data stored on a 2D grid.

This action can operate on any other action that outputs scalar data on a two-dimensional grid.

Up to now, even if the input data are purely real the action uses a complex DFT.

Just as a quick reference, given a 1D array $$\mathbf{X}$$ of size $$n$$, this action computes the vector $$\mathbf{Y}$$ given by

$Y_k = \sum_{j=0}^{n-1} X_j e^{2\pi\, j k \sqrt{-1}/n}.$

This can be easily extended to more than one dimension. All the other details can be found at http://www.fftw.org/doc/What-FFTW-Really-Computes.html#What-FFTW-Really-Computes.

The keyword "FOURIER_PARAMETERS" deserves just a note on the usage. This keyword specifies how the Fourier transform will be normalized. The keyword takes two numerical parameters ( $$a,\,b$$) that define the normalization according to the following expression

$\frac{1}{n^{(1-a)/2}} \sum_{j=0}^{n-1} X_j e^{2\pi b\, j k \sqrt{-1}/n}$

The default values of these parameters are: $$a=1$$ and $$b=1$$.

Examples

The following example tells Plumed to compute the complex 2D 'backward' Discrete Fourier Transform by taking the data saved on a grid called 'density', and normalizing the output by $$\frac{1}{\sqrt{N_x\, N_y}}$$, where $$N_x$$ and $$N_y$$ are the number of data on the grid (it can be the case that $$N_x\neq N_y$$):

Click on the labels of the actions for more information on what each action computes
FOURIER_TRANSFORM STRIDEcompulsory keyword ( default=1 )
the frequency with which the data should be collected and added to the quantity being
averaged =1 GRIDcompulsory keyword
the action that creates the input grid you would like to use =density FT_TYPEchoose what kind of data you want as output on the grid. =complex FOURIER_PARAMETERScompulsory keyword ( default=default )
what kind of normalization is applied to the output and if the Fourier transform
in FORWARD or BACKWARD. =0,-1

Glossary of keywords and components
Compulsory keywords
 STRIDE ( default=1 ) the frequency with which the data should be collected and added to the quantity being averaged CLEAR ( default=0 ) the frequency with which to clear all the accumulated data. The default value of 0 implies that all the data will be used and that the grid will never be cleared NORMALIZATION ( default=true ) This controls how the data is normalized it can be set equal to true, false or ndata. The differences between these options are explained in the manual page for HISTOGRAM GRID the action that creates the input grid you would like to use FOURIER_PARAMETERS ( default=default ) what kind of normalization is applied to the output and if the Fourier transform in FORWARD or BACKWARD. This keyword takes the form FOURIER_PARAMETERS=A,B, where A and B can be 0, 1 or -1. The default values are A=1 (no normalization at all) and B=1 (forward FFT). Other possible choices for A are: A=-1: normalize by the number of data, A=0: normalize by the square root of the number of data (one forward and followed by backward FFT recover the original data).
Options
 SERIAL ( default=off ) do the calculation in serial. Do not use MPI LOWMEM ( default=off ) lower the memory requirements TIMINGS ( default=off ) output information on the timings of the various parts of the calculation LOGWEIGHTS list of actions that calculates log weights that should be used to weight configurations when calculating averages CONCENTRATION the concentration parameter for Von Mises-Fisher distributions COMPONENT if your input is a vector field use this to specify the component of the input vector field for which you wish to use FT_TYPE choose what kind of data you want as output on the grid. Possible values are: ABS = compute the complex modulus of Fourier coefficients (DEFAULT); NORM = compute the norm (i.e. ABS^2) of Fourier coefficients; COMPLEX = store the FFTW complex output on the grid (as a vector).