Branch data Line data Source code
1 : : #ifdef HAVE_DFTI
2 : : !Local variables-------------------------------
3 : : !scalars
4 : : integer :: status,arr(4)
5 : : type(DFTI_DESCRIPTOR),pointer :: Desc1
6 : :
7 : : ! *************************************************************************
8 : :
9 [ + + + + ]: 1869348 : status = DftiCreateDescriptor(Desc1, DEV_DFTI_PRECISION, DFTI_COMPLEX, 3, (/nx ,ny ,nz/) )
10 [ - + - + ]: 467337 : DFTI_CHECK(status)
11 : :
12 : 467337 : status = DftiSetValue(Desc1, DFTI_NUMBER_OF_TRANSFORMS, ndat)
13 : 467337 : status = DftiSetValue(Desc1, DFTI_INPUT_DISTANCE, ldx*ldy*ldz)
14 : 467337 : arr(1) = 0
15 : 467337 : arr(2) = 1
16 : 467337 : arr(3) = ldx
17 : 467337 : arr(4) = ldx*ldy
18 : 467337 : status = DftiSetValue(Desc1, DFTI_INPUT_STRIDES, arr )
19 : 467337 : status = DftiSetValue(Desc1, DFTI_OUTPUT_DISTANCE, ldx*ldy*ldz)
20 : 467337 : status = DftiSetValue(Desc1, DFTI_OUTPUT_STRIDES, arr )
21 : 467337 : status = DftiSetValue(Desc1, DFTI_PLACEMENT, DFTI_NOT_INPLACE)
22 : :
23 [ + + + - : 467337 : if (isign == -1 .and. iscale /= 0) then
+ + + - ]
24 : 232556 : status = DftiSetValue(Desc1, DFTI_FORWARD_SCALE, one/DBLE(nx*ny*nz) )
25 : : end if
26 : :
27 : 467337 : status = DftiCommitDescriptor(Desc1)
28 [ - + - + ]: 467337 : DFTI_CHECK(status)
29 : :
30 [ + + + + ]: 467337 : if (isign==-1) then
31 : 232556 : status = DftiComputeForward(Desc1, ff, gg)
32 [ + - + - ]: 234781 : else if (isign==+1) then
33 : 234781 : status = DftiComputeBackward(Desc1, ff, gg)
34 : : else
35 : 0 : ABI_ERROR("Wrong isign")
36 : : end if
37 [ - + - + ]: 467337 : DFTI_CHECK(status)
38 : :
39 : 467337 : status = DftiFreeDescriptor(Desc1)
40 [ - + - + ]: 467337 : DFTI_CHECK(status)
41 : :
42 : : #else
43 : : ABI_ERROR("FFT_DFTI support not activated")
44 : : ABI_UNUSED((/nx,ny,nz,ldx,ldy,ldz,ndat,iscale,isign/))
45 : : ABI_UNUSED(ff)
46 : : ABI_UNUSED(gg)
47 : : #endif
|