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_TRANSFORMSTRIDE=1compulsory keyword ( default=1 )the frequency with which the data should be collected and added to the quantity being averagedGRID=densitycompulsory keywordthe action that creates the input grid you would like to useFT_TYPE=complexchoose what kind of data you want as output on the grid.FOURIER_PARAMETERS=0,-1compulsory keyword ( default=default )what kind of normalization is applied to the output and if the Fourier transform in FORWARD or BACKWARD.

- 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). |