Documentation for module fft_tools

...

source: fft_tools.F
Loading...

public Types:

fft_scratch_type
...
fft_scratch_sizes
...

Generic procedures:

fft3d
fft3d_s
fft3d_ps
fft3d_pb

public Subroutines/Functions:

...
...
Determine the allowed lengths of FFT's '''
does whatever is needed to finalize the current fft setup
...
...
...
...
SUBROUTINE
x_to_yz (sb, group, my_pos, p2p, yzp, nray, bo, tb, fft_scratch)
...
SUBROUTINE
yz_to_x (tb, group, my_pos, p2p, yzp, nray, bo, sb, fft_scratch)
...
...

Parameters:

INTEGER
:: bwfft = -1
INTEGER
:: fft_radix_closest = 493
INTEGER
:: fft_radix_next = 494
INTEGER
:: fft_radix_next_odd = 497
INTEGER
:: fwfft = +1

public Types:

TYPE :: fft_scratch_sizes

...


INTEGER
:: nx = 0 ...
INTEGER
:: ny = 0 ...
INTEGER
:: nz = 0 ...
INTEGER
:: lmax = 0 ...
INTEGER
:: mmax = 0 ...
INTEGER
:: nmax = 0 ...
INTEGER
:: mx1 = 0 ...
INTEGER
:: mx2 = 0 ...
INTEGER
:: mx3 = 0 ...
INTEGER
:: my1 = 0 ...
INTEGER
:: my2 = 0 ...
INTEGER
:: my3 = 0 ...
INTEGER
:: mz1 = 0 ...
INTEGER
:: mz2 = 0 ...
INTEGER
:: mz3 = 0 ...
INTEGER
:: mcz1 = 0 ...
INTEGER
:: mcz2 = 0 ...
INTEGER
:: mcy3 = 0 ...
INTEGER
:: mcx2 = 0 ...
INTEGER
:: lg = 0 ...
INTEGER
:: mg = 0 ...
INTEGER
:: nbx = 0 ...
INTEGER
:: nbz = 0 ...
INTEGER
:: nmray = 0 ...
INTEGER
:: nyzray = 0 ...
INTEGER
:: gs_group = 0 ...
INTEGER
:: rs_group = 0 ...
INTEGER,
DIMENSION(2) :: g_pos = 0 ...
INTEGER,
DIMENSION(2) :: r_pos = 0 ...
INTEGER,
DIMENSION(2) :: r_dim = 0 ...
INTEGER
:: numtask = 0 ...

TYPE :: fft_scratch_type

...


INTEGER
:: fft_scratch_id ...
INTEGER
:: tf_type ...
LOGICAL
:: in_use ...
INTEGER
:: group ...
INTEGER,
DIMENSION(3) :: nfft ...
INTEGER,
DIMENSION(2) :: cart_sub_comm = MP_COMM_NULL ...
INTEGER,
DIMENSION(2) :: dim ...
INTEGER,
DIMENSION(2) :: pos ...
COMPLEX(dp),
DIMENSION(:,:,:), POINTER :: ziptr ...
COMPLEX(dp),
DIMENSION(:,:,:), POINTER :: zoptr ...
COMPLEX(dp),
DIMENSION(:,:), POINTER :: p1buf ...
COMPLEX(dp),
DIMENSION(:,:), POINTER :: p2buf ...
COMPLEX(dp),
DIMENSION(:,:), POINTER :: p3buf ...
COMPLEX(dp),
DIMENSION(:,:), POINTER :: p4buf ...
COMPLEX(dp),
DIMENSION(:,:), POINTER :: p5buf ...
COMPLEX(dp),
DIMENSION(:,:), POINTER :: p6buf ...
COMPLEX(dp),
DIMENSION(:,:), POINTER :: p7buf ...
COMPLEX(dp),
DIMENSION(:,:), POINTER :: r1buf ...
COMPLEX(dp),
DIMENSION(:,:), POINTER :: r2buf ...
COMPLEX(dp),
DIMENSION(:,:,:), POINTER :: tbuf ...
COMPLEX(dp),
DIMENSION(:,:), POINTER :: a1buf ...
COMPLEX(dp),
DIMENSION(:,:), POINTER :: a2buf ...
COMPLEX(dp),
DIMENSION(:,:), POINTER :: a3buf ...
COMPLEX(dp),
DIMENSION(:,:), POINTER :: a4buf ...
COMPLEX(dp),
DIMENSION(:,:), POINTER :: a5buf ...
COMPLEX(dp),
DIMENSION(:,:), POINTER :: a6buf ...
INTEGER,
DIMENSION(:), POINTER :: scount ...
INTEGER,
DIMENSION(:), POINTER :: rcount ...
INTEGER,
DIMENSION(:), POINTER :: sdispl ...
INTEGER,
DIMENSION(:), POINTER :: rdispl ...
INTEGER,
DIMENSION(:,:), POINTER :: pgcube ...
INTEGER,
DIMENSION(:), POINTER :: xzcount ...
INTEGER,
DIMENSION(:), POINTER :: yzcount ...
INTEGER,
DIMENSION(:), POINTER :: xzdispl ...
INTEGER,
DIMENSION(:), POINTER :: yzdispl ...
INTEGER
:: in ...
INTEGER
:: mip ...
REAL(dp)
:: rsratio ...
COMPLEX(dp),
DIMENSION(:), POINTER :: xzbuf ...
COMPLEX(dp),
DIMENSION(:), POINTER :: yzbuf ...
COMPLEX(sp),
DIMENSION(:), POINTER :: xzbuf_sgl ...
COMPLEX(sp),
DIMENSION(:), POINTER :: yzbuf_sgl ...
COMPLEX(dp),
DIMENSION(:,:), POINTER :: rbuf1 ...
COMPLEX(dp),
DIMENSION(:,:), POINTER :: rbuf2 ...
COMPLEX(dp),
DIMENSION(:,:), POINTER :: rbuf3 ...
COMPLEX(dp),
DIMENSION(:,:), POINTER :: rbuf4 ...
COMPLEX(dp),
DIMENSION(:,:), POINTER :: rbuf5 ...
COMPLEX(dp),
DIMENSION(:,:), POINTER :: rbuf6 ...
COMPLEX(dp),
DIMENSION(:,:), POINTER :: rr ...
COMPLEX(sp),
DIMENSION(:,:), POINTER :: ss ...
COMPLEX(sp),
DIMENSION(:,:), POINTER :: tt ...
INTEGER,
DIMENSION(:,:), POINTER :: pgrid ...
INTEGER,
DIMENSION(:), POINTER :: xcor ...
INTEGER,
DIMENSION(:), POINTER :: zcor ...
INTEGER,
DIMENSION(:), POINTER :: pzcoord ...
:: sizes ...
DIMENSION(6) :: fft_plan ...
INTEGER
:: last_tick ...


Generic procedure fft3d

Calls the 3D-FFT function from the initialized library

INTEGER,
INTENT(in)
:: fsign × × ×
INTEGER,
INTENT(inout)
:: n(:) ×
INTEGER,
INTENT(in)
:: n(:) ×
INTEGER,
INTENT(in)
:: n(3) ×
COMPLEX(dp),
INTENT(inout)
:: zin(:,:,:) × ×
COMPLEX(dp),
INTENT(inout),
OPTIONAL, TARGET
:: zout(:,:,:) ×
REAL(dp),
INTENT(in),
OPTIONAL
:: scale × × ×
INTEGER,
INTENT(out),
OPTIONAL
:: status × × ×
LOGICAL,
INTENT(in),
OPTIONAL
:: debug × × ×
COMPLEX(dp),
INTENT(inout)
:: cin(:,:,:) ×
COMPLEX(dp),
INTENT(inout)
:: gin(:,:) × ×
INTEGER,
INTENT(in)
:: gs_group ×
INTEGER,
INTENT(in)
:: rs_group ×
INTEGER,
INTENT(in)
:: yzp(:,:,0:) ×
INTEGER,
INTENT(in)
:: nyzray(0:) ×
INTEGER,
INTENT(in)
:: bo(:,:,0:,:) × ×
INTEGER,
INTENT(in)
:: group ×

SUBROUTINEcube_transpose_1(cin, boin, boout, sout, fft_scratch)

...

Arguments:
COMPLEX(dp),
INTENT(in)
:: cin(:,:) ...
INTEGER,
INTENT(in)
:: boin(:,:,0:) ...
INTEGER,
INTENT(in)
:: boout(:,:,0:) ...
COMPLEX(dp),
INTENT(out)
:: sout(:,:) ...
POINTER
:: fft_scratch ...

SUBROUTINEcube_transpose_2(cin, boin, boout, sout, fft_scratch)

...

Arguments:
COMPLEX(dp),
INTENT(in)
:: cin(:,:) ...
INTEGER,
INTENT(in)
:: boin(:,:,0:) ...
INTEGER,
INTENT(in)
:: boout(:,:,0:) ...
COMPLEX(dp),
INTENT(out)
:: sout(:,:) ...
POINTER
:: fft_scratch ...

SUBROUTINEfft_radix_operations(radix_in, radix_out, operation)

Determine the allowed lengths of FFT's '''

Arguments:
INTEGER,
INTENT(in)
:: radix_in ...
INTEGER,
INTENT(out)
:: radix_out ...
INTEGER,
INTENT(in)
:: operation ...

SUBROUTINEfinalize_fft(para_env, wisdom_file)

does whatever is needed to finalize the current fft setup

Arguments:
POINTER
:: para_env ...
CHARACTER(*),
INTENT(in)
:: wisdom_file ...

SUBROUTINEget_fft_scratch(fft_scratch, tf_type, n, fft_sizes)

...

Arguments:
POINTER
:: fft_scratch ...
INTEGER,
INTENT(in)
:: tf_type ...
INTEGER,
INTENT(in)
:: n(:) ...
INTENT(in),
OPTIONAL
:: fft_sizes ...

SUBROUTINEinit_fft(fftlib, alltoall, fftsg_sizes, pool_limit, wisdom_file, plan_style)

...

Arguments:
CHARACTER(*),
INTENT(in)
:: fftlib ...
LOGICAL,
INTENT(in)
:: alltoall ...
LOGICAL,
INTENT(in)
:: fftsg_sizes ...
INTEGER,
INTENT(in)
:: pool_limit ...
CHARACTER(*),
INTENT(in)
:: wisdom_file ...
INTEGER,
INTENT(in)
:: plan_style ...

SUBROUTINErelease_fft_scratch(fft_scratch)

...

Arguments:
POINTER
:: fft_scratch ...

SUBROUTINExz_to_yz(sb, group, dims, my_pos, p2p, yzp, nray, bo, tb, fft_scratch)

...

Arguments:
COMPLEX(dp),
INTENT(in)
:: sb(:,:) ...
INTEGER,
INTENT(in)
:: group ...
INTEGER,
INTENT(in)
:: dims(2) ...
INTEGER,
INTENT(in)
:: my_pos ...
INTEGER,
INTENT(in)
:: p2p(0:) ...
INTEGER,
INTENT(in)
:: yzp(:,:,0:) ...
INTEGER,
INTENT(in)
:: nray(0:) ...
INTEGER,
INTENT(in)
:: bo(:,:,0:) ...
COMPLEX(dp),
INTENT(inout)
:: tb(:,:) ...
POINTER
:: fft_scratch ...

SUBROUTINEx_to_yz(sb, group, my_pos, p2p, yzp, nray, bo, tb, fft_scratch)

...

Arguments:
COMPLEX(dp),
INTENT(in)
:: sb(:,:) ...
INTEGER,
INTENT(in)
:: group ...
INTEGER,
INTENT(in)
:: my_pos ...
INTEGER,
INTENT(in)
:: p2p(0:) ...
INTEGER,
INTENT(in)
:: yzp(:,:,0:) ...
INTEGER,
INTENT(in)
:: nray(0:) ...
INTEGER,
INTENT(in)
:: bo(:,:,0:) ...
COMPLEX(dp),
INTENT(inout)
:: tb(:,:,:) ...
POINTER
:: fft_scratch ...

SUBROUTINEyz_to_x(tb, group, my_pos, p2p, yzp, nray, bo, sb, fft_scratch)

...

Arguments:
COMPLEX(dp),
INTENT(in)
:: tb(:,:,:) ...
INTEGER,
INTENT(in)
:: group ...
INTEGER,
INTENT(in)
:: my_pos ...
INTEGER,
INTENT(in)
:: p2p(0:) ...
INTEGER,
INTENT(in)
:: yzp(:,:,0:) ...
INTEGER,
INTENT(in)
:: nray(0:) ...
INTEGER,
INTENT(in)
:: bo(:,:,0:) ...
COMPLEX(dp),
INTENT(inout)
:: sb(:,:) ...
POINTER
:: fft_scratch ...

SUBROUTINEyz_to_xz(sb, group, dims, my_pos, p2p, yzp, nray, bo, tb, fft_scratch)

...

Arguments:
COMPLEX(dp),
INTENT(in)
:: sb(:,:) ...
INTEGER,
INTENT(in)
:: group ...
INTEGER,
INTENT(in)
:: dims(2) ...
INTEGER,
INTENT(in)
:: my_pos ...
INTEGER,
INTENT(in)
:: p2p(0:) ...
INTEGER,
INTENT(in)
:: yzp(:,:,0:) ...
INTEGER,
INTENT(in)
:: nray(0:) ...
INTEGER,
INTENT(in)
:: bo(:,:,0:) ...
COMPLEX(dp),
INTENT(inout)
:: tb(:,:) ...
POINTER
:: fft_scratch ...

SUBROUTINEfft3d_s(fsign, n, zin, zout, scale, status, debug)

Calls the 3D-FFT function from the initialized library

Arguments:
INTEGER,
INTENT(in)
:: fsign ...
INTEGER,
INTENT(inout)
:: n(:) ...
COMPLEX(dp),
INTENT(inout)
:: zin(:,:,:) ...
COMPLEX(dp),
INTENT(inout),
OPTIONAL, TARGET
:: zout(:,:,:) ...
REAL(dp),
INTENT(in),
OPTIONAL
:: scale ...
INTEGER,
INTENT(out),
OPTIONAL
:: status ...
LOGICAL,
INTENT(in),
OPTIONAL
:: debug ...

SUBROUTINEfft3d_ps(fsign, n, cin, gin, gs_group, rs_group, yzp, nyzray, bo, scale, status, debug)

...

Arguments:
INTEGER,
INTENT(in)
:: fsign ...
INTEGER,
INTENT(in)
:: n(:) ...
COMPLEX(dp),
INTENT(inout)
:: cin(:,:,:) ...
COMPLEX(dp),
INTENT(inout)
:: gin(:,:) ...
INTEGER,
INTENT(in)
:: gs_group ...
INTEGER,
INTENT(in)
:: rs_group ...
INTEGER,
INTENT(in)
:: yzp(:,:,0:) ...
INTEGER,
INTENT(in)
:: nyzray(0:) ...
INTEGER,
INTENT(in)
:: bo(:,:,0:,:) ...
REAL(dp),
INTENT(in),
OPTIONAL
:: scale ...
INTEGER,
INTENT(out),
OPTIONAL
:: status ...
LOGICAL,
INTENT(in),
OPTIONAL
:: debug ...

SUBROUTINEfft3d_pb(fsign, n, zin, gin, group, bo, scale, status, debug)

...

Arguments:
INTEGER,
INTENT(in)
:: fsign ...
INTEGER,
INTENT(in)
:: n(3) ...
COMPLEX(dp),
INTENT(inout)
:: zin(:,:,:) ...
COMPLEX(dp),
INTENT(inout)
:: gin(:,:) ...
INTEGER,
INTENT(in)
:: group ...
INTEGER,
INTENT(in)
:: bo(:,:,0:,:) ...
REAL(dp),
INTENT(in),
OPTIONAL
:: scale ...
INTEGER,
INTENT(out),
OPTIONAL
:: status ...
LOGICAL,
INTENT(in),
OPTIONAL
:: debug ...