18 void FFT<1>::makePlans(RDField<1>& rField, RDFieldDft<1>& kField)
20#ifdef SINGLE_PRECISION
21 cufftPlan1d(&fPlan_, rField.capacity(), CUFFT_R2C, 1);
22 cufftPlan1d(&iPlan_, rField.capacity(), CUFFT_C2R, 1);
24 cufftPlan1d(&fPlan_, rField.capacity(), CUFFT_D2Z, 1);
25 cufftPlan1d(&iPlan_, rField.capacity(), CUFFT_Z2D, 1);
30 void FFT<2>::makePlans(RDField<2>& rField, RDFieldDft<2>& kField)
32#ifdef SINGLE_PRECISION
33 cufftPlan2d(&fPlan_, rField.meshDimensions()[0], rField.meshDimensions()[1], CUFFT_R2C);
34 cufftPlan2d(&iPlan_, rField.meshDimensions()[0], rField.meshDimensions()[1], CUFFT_C2R);
36 cufftPlan2d(&fPlan_, rField.meshDimensions()[0], rField.meshDimensions()[1], CUFFT_D2Z);
37 cufftPlan2d(&iPlan_, rField.meshDimensions()[0], rField.meshDimensions()[1], CUFFT_Z2D);
43 void FFT<3>::makePlans(RDField<3>& rField, RDFieldDft<3>& kField)
45#ifdef SINGLE_PRECISION
46 cufftPlan3d(&fPlan_, rField.meshDimensions()[0], rField.meshDimensions()[1],
47 rField.meshDimensions()[2], CUFFT_R2C);
48 cufftPlan3d(&iPlan_, rField.meshDimensions()[0], rField.meshDimensions()[1],
49 rField.meshDimensions()[2], CUFFT_C2R);
51 cufftPlan3d(&fPlan_, rField.meshDimensions()[0], rField.meshDimensions()[1],
52 rField.meshDimensions()[2], CUFFT_D2Z);
53 cufftPlan3d(&iPlan_, rField.meshDimensions()[0], rField.meshDimensions()[1],
54 rField.meshDimensions()[2], CUFFT_Z2D);
59 template class FFT<1>;
60 template class FFT<2>;
61 template class FFT<3>;
C++ namespace for polymer self-consistent field theory (PSCF).
Utility classes for scientific computation.