Package ffx.numerics.fft
Class Complex3DParallel
java.lang.Object
ffx.numerics.fft.Complex3DParallel
Compute the 3D FFT of complex, double precision input of arbitrary dimensions via 1D Mixed Radix
FFTs in parallel.
The location of the input point [i, j, k] within the input array must be:
double real = input[x*nextX + y*nextY + z*nextZ]
double imag = input[x*nextX + y*nextY + z*nextZ + 1]
where
int nextX = 2
int nextY = 2*nX
int nextZ = 2*nX*nY
- Since:
- 1.0
- Author:
- Michal J. Schnieders
- See Also:
-
Field Summary
-
Constructor Summary
ConstructorDescriptionComplex3DParallel
(int nX, int nY, int nZ, ParallelTeam parallelTeam) Initialize the 3D FFT for complex 3D matrix.Complex3DParallel
(int nX, int nY, int nZ, ParallelTeam parallelTeam, IntegerSchedule integerSchedule) Initialize the 3D FFT for complex 3D matrix. -
Method Summary
Modifier and TypeMethodDescriptionvoid
convolution
(double[] input) Compute the 3D FFT, perform a multiplication in reciprocal space, and the inverse 3D FFT in parallel.void
fft
(double[] input) Compute the 3D FFT in parallel.long[]
void
ifft
(double[] input) Compute the inverse 3D FFT in parallel.void
static void
Test the Complex3DParallel FFT.void
setRecip
(double[] recip) Setter for the fieldrecip
.
-
Field Details
-
input
public double[] input
-
-
Constructor Details
-
Complex3DParallel
Initialize the 3D FFT for complex 3D matrix.- Parameters:
nX
- X-dimension.nY
- Y-dimension.nZ
- Z-dimension.parallelTeam
- A ParallelTeam instance.- Since:
- 1.0
-
Complex3DParallel
public Complex3DParallel(int nX, int nY, int nZ, ParallelTeam parallelTeam, @Nullable IntegerSchedule integerSchedule) Initialize the 3D FFT for complex 3D matrix.- Parameters:
nX
- X-dimension.nY
- Y-dimension.nZ
- Z-dimension.parallelTeam
- A ParallelTeam instance.integerSchedule
- The IntegerSchedule to use.- Since:
- 1.0
-
-
Method Details
-
main
Test the Complex3DParallel FFT. -
convolution
public void convolution(double[] input) Compute the 3D FFT, perform a multiplication in reciprocal space, and the inverse 3D FFT in parallel.- Parameters:
input
- The input array must be of size 2 * nX * nY * nZ.- Since:
- 1.0
-
fft
public void fft(double[] input) Compute the 3D FFT in parallel.- Parameters:
input
- The input array must be of size 2 * nX * nY * nZ.- Since:
- 1.0
-
getTimings
public long[] getTimings() -
ifft
public void ifft(double[] input) Compute the inverse 3D FFT in parallel.- Parameters:
input
- The input array must be of size 2 * nX * nY * nZ.- Since:
- 1.0
-
initTiming
public void initTiming() -
setRecip
public void setRecip(double[] recip) Setter for the fieldrecip
.- Parameters:
recip
- an array of double.
-