module OW_fftw
!--------------------------------------------------
! Setting FFTW plans
!

use OW_type
use OW_parms

implicit none

public						:: planF, planI
!integer*8, pointer,private   			:: planF,planI
!integer*8, private	   			:: planF,planI
integer*8		   			:: planF,planI  

contains

subroutine owfftw(tfld)

complex						:: tfld(:)

integer, parameter   				:: FFTW_R2HC=0,FTW_HC2R=1,FFTW_DHT=2,FFTW_REDFT00=3,FFTW_REDFT01=4
integer, parameter   				:: FFTW_REDFT10=5,FFTW_REDFT11=6,FFTW_RODFT00=7,FFTW_RODFT01=8,FFTW_RODFT10=9
integer, parameter   				:: FFTW_RODFT11=10,FFTW_FORWARD=-1,FFTW_BACKWARD=+1,FFTW_DESTROY_INPUT=1
integer, parameter   				:: FFTW_UNALIGNED=2,FFTW_CONSERVE_MEMORY=4,FFTW_EXHAUSTIVE=8,FTW_PRESERVE_INPUT=16
integer, parameter   				:: FFTW_PATIENT=32,FFTW_ESTIMATE=64,FFTW_ESTIMATE_PATIENT=128
integer, parameter   				:: FFTW_BELIEVE_PCOST=256,FFTW_DFT_R2HC_ICKY=512,FFTW_NONTHREADED_ICKY=1024
integer, parameter   				:: FFTW_NO_BUFFERING=2048,FFTW_NO_INDIRECT_OP=4096,FFTW_ALLOW_LARGE_GENERIC=8192
integer, parameter   				:: FFTW_NO_RANK_SPLITS=16384,FFTW_NO_VRANK_SPLITS=32768,FFTW_NO_VRECURSE=65536

call sfftw_plan_dft(planF,1,kxm%n,tfld,tfld,fftW_FORWARD,fftW_PATIENT)
call sfftw_plan_dft(planI,1,kxm%n,tfld,tfld,fftw_BACKWARD,fftW_PATIENT)
write(0,*) " planF and planI allocated"

end subroutine

end module
