コード例 #1
0
ファイル: test_FFT.py プロジェクト: bkmgit/mpiFFT4py
def FFT(request):
    prec = {"s": "single", "d": "double"}[request.param[-1]]
    if request.param[:3] == "pen":
        return pencil_FFT(array([N, N, N]),
                          L,
                          MPI,
                          prec,
                          None,
                          alignment=string.upper(request.param[-2]))
    else:
        return slab_FFT(array([N, N, N]), L, MPI, prec)
コード例 #2
0
ファイル: test_FFT.py プロジェクト: t-bltg/mpiFFT4py
def FFT_padded(request):
    prec = {"s": "single", "d": "double"}[request.param[-1]]
    if request.param[:3] == "pen":
        if request.param[-3] == 's':
            return pencil_FFT(array([N, N, N]),
                              L,
                              MPI,
                              prec,
                              None,
                              method='Swap',
                              alignment=string.upper(request.param[-2]))
        elif request.param[-3] == 'n':
            return pencil_FFT(array([N, N, N]),
                              L,
                              MPI,
                              prec,
                              None,
                              method='Nyquist',
                              alignment=string.upper(request.param[-2]))
    else:
        return slab_FFT(array([N, N, N]), L, MPI, prec)
コード例 #3
0
    cp = zeros(FFT.transformed_shape(), dtype=FFT.complex)
    cp = FFT.fftn(ap, cp, dealias="3/2-rule")
    assert all(abs(cp - c) / cp.max() < rtol)

    # Now without padding
    # Transform back to original
    aa = zeros(FFT.original_shape(), dtype=FFT.complex)
    aa = FFT.ifftn(c, aa)
    # Verify
    a3 = A[FFT.original_local_slice()]
    assert allclose(aa, a3, rtol, atol)
    c2 = zeros(FFT.transformed_shape(), dtype=FFT.complex)
    c2 = FFT.fftn(aa, c2)
    # Verify
    assert allclose(c2, c, rtol, atol)


#test_FFT(pencil_FFT(array([N, N, N], dtype=int), L, MPI, "double", P1=2, alignment="Y", method='Nyquist'))
#test_FFT(slab_FFT(array([N, N, N]), L, MPI, "single"))
#test_FFT2(line_FFT(array([N, N]), L[:-1], MPI, "single"))
#test_FFT_padded(slab_FFT(array([N, N, N]), L, MPI, "double"))
test_FFT_padded(
    pencil_FFT(array([N, N, N], dtype=int),
               L,
               MPI,
               "double",
               P1=2,
               alignment="Y",
               method='Swap'))
#test_FFT_c2c(c2c(array([N, N, N]), L, MPI, "single"))