Subroutine to initialize the FFTW3 process several FFT on single thread each Real case.
Type | Intent | Optional | 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 |
subroutine tab_init_fftw3_real(long, larg, plan_flag) !! Subroutine to initialize the FFTW3 process *several FFT on single thread each* !! Real 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_rea_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_rea_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_real(long, larg) call tab_make_plan_fftw3_real(long, larg, plan_flag) MULTI_FFTW_ALLOCATED = .true. return endsubroutine tab_init_fftw3_real