tab_init_fftw3 Subroutine

public subroutine tab_init_fftw3(long, larg, plan_flag)

Subroutine to initialize the FFTW3 process several FFT on single thread each Complex case.

Arguments

Type IntentOptional Attributes Name
integer(kind=I4), intent(in) :: long

first 2D array dimension

integer(kind=I4), intent(in) :: larg

second 2D array dimension

integer(kind=I4), intent(in) :: plan_flag

planning option, FFTW_ESTIMATE for example


Calls

proc~~tab_init_fftw3~~CallsGraph proc~tab_init_fftw3 tab_init_fftw3 proc~tab_alloc_fftw3 tab_alloc_fftw3 proc~tab_init_fftw3->proc~tab_alloc_fftw3 proc~tab_make_plan_fftw3 tab_make_plan_fftw3 proc~tab_init_fftw3->proc~tab_make_plan_fftw3 interface~fftw_alloc_complex fftw_alloc_complex proc~tab_alloc_fftw3->interface~fftw_alloc_complex interface~fftw_plan_dft_2d fftw_plan_dft_2d proc~tab_make_plan_fftw3->interface~fftw_plan_dft_2d

Called by

proc~~tab_init_fftw3~~CalledByGraph proc~tab_init_fftw3 tab_init_fftw3 program~test_fftw3 test_fftw3 program~test_fftw3->proc~tab_init_fftw3

Source Code

   subroutine tab_init_fftw3(long, larg, plan_flag)
   !! Subroutine to initialize the FFTW3 process *several FFT on single thread each*
   !! Complex case.
   implicit none
   integer(kind=I4), intent(in) :: long      !! *first  2D array dimension*
   integer(kind=I4), intent(in) :: larg      !! *second 2D array dimension*
   integer(kind=I4), intent(in) :: plan_flag !! *planning option, [[fftw3(module):FFTW_ESTIMATE]] for example*

      allocate( tab_cmp_f_i( 0:NB_THREADS_FFT -1) )
      allocate( tab_cmp_f_o( 0:NB_THREADS_FFT -1) )

      allocate( tab_cmp_b_i( 0:NB_THREADS_FFT -1) )
      allocate( tab_cmp_b_o( 0:NB_THREADS_FFT -1) )

      allocate( tab_p_f_i( 0:NB_THREADS_FFT -1) )
      allocate( tab_p_f_o( 0:NB_THREADS_FFT -1) )

      allocate( tab_p_b_i( 0:NB_THREADS_FFT -1) )
      allocate( tab_p_b_o( 0:NB_THREADS_FFT -1) )

      allocate( tab_plan_f(0:NB_THREADS_FFT -1) )
      allocate( tab_plan_b(0:NB_THREADS_FFT -1) )

      call tab_alloc_fftw3(long, larg)
      call tab_make_plan_fftw3(long, larg, plan_flag)

      MULTI_FFTW_ALLOCATED = .true.

   return
   endsubroutine tab_init_fftw3