MCTDH-X
v2.22
|
This module contains all routines using FFT to calculate colocations, k-space representations, derivatives or gradients. More...
Public Member Functions | |
subroutine | get_sorted_fft (PSI, FTPSI, Dilation) |
subroutine | sort_fft_to_ascending_2d (FFT, NDVR_X, NDVR_Y) |
subroutine | get_derivative_2d (Field, Derivative, Direction) |
This subroutine calculates the derivative of a real field in x/y direction if the Direction=1/2. More... | |
subroutine | get_gradient_2d (Field, Gradient_X, Gradient_Y) |
subroutine | get_curl_2d (Field_X, Field_Y, Curl) |
subroutine | twod_zero_padding (PSI, FTPSI, dilation) |
This module contains all routines using FFT to calculate colocations, k-space representations, derivatives or gradients.
subroutine auxiliary_fftroutines::get_curl_2d | ( | real*8, dimension(ndvr_x*ndvr_y*ndvr_z) | Field_X, |
real*8, dimension(ndvr_x*ndvr_y*ndvr_z) | Field_Y, | ||
real*8, dimension(ndvr_x*ndvr_y*ndvr_z) | Curl | ||
) |
curl\xrefitem | todo 4. |
References get_derivative_2d().
subroutine auxiliary_fftroutines::get_derivative_2d | ( | real*8, dimension(ndvr_x*ndvr_y*ndvr_z) | Field, |
real*8, dimension(ndvr_x*ndvr_y*ndvr_z) | Derivative, | ||
integer | Direction | ||
) |
This subroutine calculates the derivative of a real field in x/y direction if the Direction=1/2.
Uncomment the loops in the routine in order to write the field to fort.400, its FFT to fort.401, and its derivative to fort.402
References fft_laboratory::get_fft(), auxiliary_routines::get_ijk_from_m(), and auxiliary_routines::get_mom().
Referenced by get_curl_2d(), get_gradient_2d(), and analysis_routines_onebody::get_phase().
subroutine auxiliary_fftroutines::get_gradient_2d | ( | real*8, dimension(ndvr_x*ndvr_y*ndvr_z) | Field, |
real*8, dimension(ndvr_x*ndvr_y*ndvr_z) | Gradient_X, | ||
real*8, dimension(ndvr_x*ndvr_y*ndvr_z) | Gradient_Y | ||
) |
field\xrefitem | todo 2. |
References get_derivative_2d().
Referenced by analysis_routines_onebody::get_phase().
subroutine auxiliary_fftroutines::get_sorted_fft | ( | complex*16, dimension(ndvr_x*ndvr_y*ndvr_z,morb), intent(in) | PSI, |
complex*16, dimension(ndvr_x*ndvr_y*ndvr_z,morb), intent(out) | FTPSI, | ||
integer, optional | Dilation | ||
) |
References fft_laboratory::get_dilated_fft(), fft_laboratory::get_fft(), function_library::normvxz(), sort_fft_to_ascending_2d(), twod_zero_padding(), and function_library::xvixdzo().
Referenced by analysis_core::apply_analysis(), master_slave_parallelization::master_fci(), and master_slave_parallelization::master_mctdhbf().
subroutine auxiliary_fftroutines::sort_fft_to_ascending_2d | ( | complex*16, dimension(ndvr_x*ndvr_y) | FFT, |
integer | NDVR_X, | ||
integer | NDVR_Y | ||
) |
ndvr_x | sort an array representing a 2D function given in FFT order, compact storage to be in strictly ascending order (needed for gnuplots pm3d), compact storage |
ndvr_y | sort an array representing a 2D function given in FFT order, compact storage to be in strictly ascending order (needed for gnuplots pm3d), compact storage |
Referenced by get_sorted_fft(), analysis_routines_twobody::get_structurefactor(), and twod_zero_padding().
subroutine auxiliary_fftroutines::twod_zero_padding | ( | complex*16, dimension(ndvr_x*ndvr_y,morb), intent(in) | PSI, |
complex*16, dimension(ndvr_x*ndvr_y,morb), intent(out) | FTPSI, | ||
integer, intent(in) | dilation | ||
) |
[in] | dilation | This routine calculates the 2D FT of an array of M Orbitals, increasing the resolution of the FT by adding zeroes to the end of the grid in realspace. |
References fft_laboratory::get_dilated_fft(), function_library::normvxz(), sort_fft_to_ascending_2d(), and function_library::xvixdzo().
Referenced by analysis_routines_onebody::get_2d_1bodydiag_dilated(), analysis_routines_onebody::get_2d_1bodydiag_dilated_nlevel(), and get_sorted_fft().