Octopus
fourier_space_oct_m Module Reference

Data Types

type  fourier_space_op_t
 

Functions/Subroutines

subroutine fourier_space_op_t_init (this, space, qq, cam, singularity)
 Initialise a Fourier space Op instance. More...
 
subroutine, public cube_function_alloc_fs (cube, cf, force_alloc)
 Allocates locally the Fourier space grid, if PFFT library is not used. Otherwise, it assigns the PFFT Fourier space grid to the cube Fourier space grid, via pointer. More...
 
subroutine, public cube_function_free_fs (cube, cf)
 Deallocates the Fourier space grid. More...
 
subroutine, public fourier_space_op_end (this)
 
subroutine, public dcube_function_rs2fs (cube, cf)
 The following routines convert the function between real space and Fourier space Note that the dimensions of the function in fs are different depending on whether f is real or complex, because the FFT representation is different (FFTW scheme). More...
 
subroutine, public dcube_function_fs2rs (cube, cf)
 
subroutine, public dfourier_space_op_init (this, cube, op, in_device, op_move)
 The operator can be provided either through op (which is copied) or through op_move (an allocatable that is taken over via move_alloc, avoiding a full-grid copy). Exactly one of the two must be present. More...
 
subroutine, public dfourier_space_op_apply (this, cube, cf)
 Applies a multiplication factor to the Fourier space grid. This is a local function. More...
 
subroutine, public zcube_function_rs2fs (cube, cf)
 The following routines convert the function between real space and Fourier space Note that the dimensions of the function in fs are different depending on whether f is real or complex, because the FFT representation is different (FFTW scheme). More...
 
subroutine, public zcube_function_fs2rs (cube, cf)
 
subroutine, public zfourier_space_op_init (this, cube, op, in_device, op_move)
 The operator can be provided either through op (which is copied) or through op_move (an allocatable that is taken over via move_alloc, avoiding a full-grid copy). Exactly one of the two must be present. More...
 
subroutine, public zfourier_space_op_apply (this, cube, cf)
 Applies a multiplication factor to the Fourier space grid. This is a local function. More...
 

Variables

real(real64), parameter tol_vanishing_q = 1e-6_real64
 

Function/Subroutine Documentation

◆ fourier_space_op_t_init()

subroutine fourier_space_oct_m::fourier_space_op_t_init ( class(fourier_space_op_t), intent(inout)  this,
class(space_t), intent(in)  space,
real(real64), dimension(:), intent(in)  qq,
type(xc_cam_t), intent(in)  cam,
real(real64), intent(in), optional  singularity 
)
private

Initialise a Fourier space Op instance.

Parameters
[in]qqq-vector
[in]camCAM parameters
[in]singularityMust be defined for all but the short-range Coulomb potential

Definition at line 178 of file fourier_space.F90.

◆ cube_function_alloc_fs()

subroutine, public fourier_space_oct_m::cube_function_alloc_fs ( type(cube_t), intent(in), target  cube,
type(cube_function_t), intent(inout)  cf,
logical, intent(in), optional  force_alloc 
)

Allocates locally the Fourier space grid, if PFFT library is not used. Otherwise, it assigns the PFFT Fourier space grid to the cube Fourier space grid, via pointer.

Definition at line 206 of file fourier_space.F90.

◆ cube_function_free_fs()

subroutine, public fourier_space_oct_m::cube_function_free_fs ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(inout)  cf 
)

Deallocates the Fourier space grid.

Definition at line 266 of file fourier_space.F90.

◆ fourier_space_op_end()

subroutine, public fourier_space_oct_m::fourier_space_op_end ( type(fourier_space_op_t), intent(inout)  this)

Definition at line 306 of file fourier_space.F90.

◆ dcube_function_rs2fs()

subroutine, public fourier_space_oct_m::dcube_function_rs2fs ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(inout)  cf 
)

The following routines convert the function between real space and Fourier space Note that the dimensions of the function in fs are different depending on whether f is real or complex, because the FFT representation is different (FFTW scheme).

Definition at line 393 of file fourier_space.F90.

◆ dcube_function_fs2rs()

subroutine, public fourier_space_oct_m::dcube_function_fs2rs ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(inout)  cf 
)

Definition at line 415 of file fourier_space.F90.

◆ dfourier_space_op_init()

subroutine, public fourier_space_oct_m::dfourier_space_op_init ( type(fourier_space_op_t), intent(inout)  this,
type(cube_t), intent(in)  cube,
real(real64), dimension(:, :, :), intent(in), optional, target  op,
logical, intent(in), optional  in_device,
real(real64), dimension(:, :, :), intent(inout), optional, allocatable, target  op_move 
)

The operator can be provided either through op (which is copied) or through op_move (an allocatable that is taken over via move_alloc, avoiding a full-grid copy). Exactly one of the two must be present.

Definition at line 440 of file fourier_space.F90.

◆ dfourier_space_op_apply()

subroutine, public fourier_space_oct_m::dfourier_space_op_apply ( type(fourier_space_op_t), intent(in)  this,
type(cube_t), intent(in)  cube,
type(cube_function_t), intent(inout)  cf 
)

Applies a multiplication factor to the Fourier space grid. This is a local function.

Definition at line 532 of file fourier_space.F90.

◆ zcube_function_rs2fs()

subroutine, public fourier_space_oct_m::zcube_function_rs2fs ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(inout)  cf 
)

The following routines convert the function between real space and Fourier space Note that the dimensions of the function in fs are different depending on whether f is real or complex, because the FFT representation is different (FFTW scheme).

Definition at line 724 of file fourier_space.F90.

◆ zcube_function_fs2rs()

subroutine, public fourier_space_oct_m::zcube_function_fs2rs ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(inout)  cf 
)

Definition at line 746 of file fourier_space.F90.

◆ zfourier_space_op_init()

subroutine, public fourier_space_oct_m::zfourier_space_op_init ( type(fourier_space_op_t), intent(inout)  this,
type(cube_t), intent(in)  cube,
complex(real64), dimension(:, :, :), intent(in), optional, target  op,
logical, intent(in), optional  in_device,
complex(real64), dimension(:, :, :), intent(inout), optional, allocatable, target  op_move 
)

The operator can be provided either through op (which is copied) or through op_move (an allocatable that is taken over via move_alloc, avoiding a full-grid copy). Exactly one of the two must be present.

Definition at line 771 of file fourier_space.F90.

◆ zfourier_space_op_apply()

subroutine, public fourier_space_oct_m::zfourier_space_op_apply ( type(fourier_space_op_t), intent(in)  this,
type(cube_t), intent(in)  cube,
type(cube_function_t), intent(inout)  cf 
)

Applies a multiplication factor to the Fourier space grid. This is a local function.

Definition at line 863 of file fourier_space.F90.

Variable Documentation

◆ tol_vanishing_q

real(real64), parameter fourier_space_oct_m::tol_vanishing_q = 1e-6_real64
private

Definition at line 173 of file fourier_space.F90.