11#include <prdc/cpu/RField.h>
12#include <prdc/cpu/RFieldDft.h>
13#include <prdc/cpu/CField.h>
14#include <pscf/math/IntVec.h>
264 {
return meshDimensions_; }
274 int i = wavevector[D-1];
276 if ((i != 0) && (d - i > d/2 + 1)) {
283 #ifndef PRDC_CPU_FFT_TPP
285 extern template class FFT<1>;
286 extern template class FFT<2>;
287 extern template class FFT<3>;
An IntVec<D, T> is a D-component vector of elements of integer type T.
Field of complex double precision values on an FFT mesh.
Fourier transform wrapper.
void inverseTransformUnsafe(RFieldDft< D > &in, RField< D > &out) const
Compute inverse (complex-to-real) DFT, overwriting the input.
FFT()
Default constructor.
void forwardTransform(RField< D > const &in, RFieldDft< D > &out) const
Compute forward (real-to-complex) discrete Fourier transform (DFT).
static void computeKMesh(IntVec< D > const &rMeshDimensions, IntVec< D > &kMeshDimensions, int &kSize)
Compute dimensions and size of k-space mesh for DFT of real data.
void inverseTransform(CField< D > const &in, CField< D > &out) const
Compute complex-to-complex inverse Fourier transform.
bool isSetup() const
Has this FFT object been setup?
static bool hasImplicitInverse(IntVec< D > const &wavevector, IntVec< D > const &meshDimensions)
Does this wavevector have implicit inverse in DFT or real data?
void setup(IntVec< D > const &meshDimensions)
Setup grid dimensions, FFT plans and work space.
IntVec< D > const & meshDimensions() const
Return the dimensions of the grid for which this was setup.
virtual ~FFT()
Destructor.
void inverseTransformSafe(RFieldDft< D > const &in, RField< D > &out) const
Compute inverse (complex-to-real) DFT without overwriting input.
Fourier transform of a real field on an FFT mesh.
Field of real double precision values on an FFT mesh.
File containing preprocessor macros for error handling.
Fields and FFTs for periodic boundary conditions (CPU)
Periodic fields and crystallography.
PSCF package top-level namespace.