This module describes FFTW3 based FFT Executor: fftw_executor
http://www.fftw.org
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer(kind=int32), | private, | parameter | :: | FFTW3_FLAGS | = | FFTW_MEASURE+FFTW_DESTROY_INPUT |
FFTW3 planner flags |
Creates C2C FFTW3 Plan
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=c_int), | value | :: | rank | |||
integer(kind=c_int) | :: | n(*) | ||||
integer(kind=c_int), | value | :: | howmany | |||
type(c_ptr), | value | :: | in | |||
integer(kind=c_int) | :: | inembed(*) | ||||
integer(kind=c_int), | value | :: | istride | |||
integer(kind=c_int), | value | :: | idist | |||
type(c_ptr), | value | :: | out | |||
integer(kind=c_int) | :: | onembed(*) | ||||
integer(kind=c_int), | value | :: | ostride | |||
integer(kind=c_int), | value | :: | odist | |||
integer(kind=C_INT), | value | :: | sign | |||
integer(kind=c_int), | value | :: | flags |
Creates R2C FFTW3 Plan
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=c_int), | value | :: | rank | |||
integer(kind=c_int) | :: | n(*) | ||||
integer(kind=c_int), | value | :: | howmany | |||
type(c_ptr), | value | :: | in | |||
integer(kind=c_int) | :: | inembed(*) | ||||
integer(kind=c_int), | value | :: | istride | |||
integer(kind=c_int), | value | :: | idist | |||
type(c_ptr), | value | :: | out | |||
integer(kind=c_int) | :: | onembed(*) | ||||
integer(kind=c_int), | value | :: | ostride | |||
integer(kind=c_int), | value | :: | odist | |||
integer(kind=c_int), | value | :: | flags |
Creates R2R FFTW3 Plan
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=c_int), | value | :: | rank | |||
integer(kind=c_int) | :: | n(*) | ||||
integer(kind=c_int), | value | :: | howmany | |||
type(c_ptr), | value | :: | in | |||
integer(kind=c_int) | :: | inembed(*) | ||||
integer(kind=c_int), | value | :: | istride | |||
integer(kind=c_int), | value | :: | idist | |||
type(c_ptr), | value | :: | out | |||
integer(kind=c_int) | :: | onembed(*) | ||||
integer(kind=c_int), | value | :: | ostride | |||
integer(kind=c_int), | value | :: | odist | |||
integer(kind=C_FFTW_R2R_KIND), | intent(in) | :: | kinds(*) | |||
integer(kind=c_int), | value | :: | flags |
Executes FFTW3 Plan
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(c_ptr), | value | :: | plan | |||
type(c_ptr), | value | :: | in | |||
type(c_ptr), | value | :: | out |
Destroys FFTW3 Plan
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(c_ptr), | value | :: | plan |
FFTW3 FFT Executor
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(c_ptr), | public | :: | plan_forward |
Pointer to forward plan |
|||
type(c_ptr), | public | :: | plan_backward |
Pointer to backward plan |
|||
logical, | public | :: | is_inverse_copied | = | .false. |
Is inverse plan copied? |
|
procedure(apply_interface), | private, | nopass, pointer | :: | apply | => | NULL() |
Pointer to FFTW3 function that executes FFT plan |
procedure(free_interface), | private, | nopass, pointer | :: | free | => | NULL() |
Pointer to FFTW3 function that destroys FFT plan |
procedure(apply_interface), | private, | nopass, pointer | :: | apply_inverse | => | NULL() |
Pointer to FFTW3 function that executes inverse FFT plan Used in R2C only |
procedure, public, non_overridable, pass(self) :: create | ../../ Creates FFT plan |
procedure, public, non_overridable, pass(self) :: execute | ../../ Executes plan |
procedure, public, non_overridable, pass(self) :: destroy | ../../ Destroys plan |
procedure, public :: create_private => create | ../../ Creates FFT plan via FFTW3 Interface |
procedure, public :: execute_private => execute | ../../ Executes FFTW3 plan |
procedure, public :: destroy_private => destroy | ../../ Destroys FFTW3 plan |
procedure, public, nopass :: mem_alloc | ../../ Allocates FFTW3 memory |
procedure, public, nopass :: mem_free | ../../ Frees FFTW3 aligned memory |
Creates FFT plan via FFTW3 Interface
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fftw_executor), | intent(inout) | :: | self |
FFTW FFT Executor |
||
integer(kind=int8), | intent(in) | :: | fft_rank |
Rank of fft: 1 or 2 |
||
integer(kind=int8), | intent(in) | :: | fft_type |
Type of fft: r2r, r2c, c2c |
||
type(dtfft_precision_t), | intent(in) | :: | precision |
Precision of fft: DTFFT_SINGLE or DTFFT_DOUBLE |
||
integer(kind=int32), | intent(in) | :: | idist |
Distance between the first element of two consecutive signals in a batch of the input data. |
||
integer(kind=int32), | intent(in) | :: | odist |
Distance between the first element of two consecutive signals in a batch of the output data. |
||
integer(kind=int32), | intent(in) | :: | how_many |
Number of transforms to create |
||
integer(kind=int32), | intent(in) | :: | fft_sizes(:) |
Dimensions of transform |
||
integer(kind=int32), | intent(in) | :: | inembed(:) |
Storage dimensions of the input data in memory. |
||
integer(kind=int32), | intent(in) | :: | onembed(:) |
Storage dimensions of the output data in memory. |
||
integer(kind=int32), | intent(inout) | :: | error_code |
Error code to be returned to user |
||
type(dtfft_r2r_kind_t), | intent(in), | optional | :: | r2r_kinds(:) |
Kinds of r2r transform |
Executes FFTW3 plan
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fftw_executor), | intent(in) | :: | self |
FFTW FFT Executor |
||
type(c_ptr), | intent(in) | :: | a |
Source pointer |
||
type(c_ptr), | intent(in) | :: | b |
Target pointer |
||
integer(kind=int8), | intent(in) | :: | sign |
Sign of transform |
Destroys FFTW3 plan
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fftw_executor), | intent(inout) | :: | self |
FFTW FFT Executor |
Allocates FFTW3 memory
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int64), | intent(in) | :: | alloc_bytes |
Number of bytes to allocate |
||
type(c_ptr), | intent(out) | :: | ptr |
Allocated pointer |
Frees FFTW3 aligned memory
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(c_ptr), | intent(in) | :: | ptr |
Pointer to free |