Octopus
cube_function_oct_m Module Reference

Data Types

interface  ccube_to_mesh
 
interface  cmesh_to_cube
 
type  cube_function_t
 
interface  dcube_to_mesh
 
interface  dmesh_to_cube
 
interface  scube_to_mesh
 
interface  smesh_to_cube
 
interface  zcube_to_mesh
 
interface  zmesh_to_cube
 

Functions/Subroutines

subroutine, public cube_function_alloc_fs (cube, cf, force_alloc)
 Allocates the local part of the Fourier space grid on the cube function. More...
 
subroutine, public cube_function_free_fs (cube, cf)
 Deallocates the Fourier space buffer of the cube function. More...
 
subroutine, public cube_function_alloc_fs_single (cube, cf)
 Allocate the single-precision (complex32) Fourier-space buffer cfcFS. Host, serial, aligned FFTW only (single-precision Poisson path). More...
 
subroutine, public cube_function_free_fs_single (cube, cf)
 
pure logical function, public cube_map_is_trivial (cube)
 True when the cube_map describes a trivial mesh->cube identity: the mesh is X-fastest with one full-X-row segment per (iy, iz) pair, and the cube has the same dimensions as the mesh. The mapping then degenerates to a flat memcopy. Holds for 3D periodic systems with MeshOrder = order_cube and no domain decomposition. More...
 
subroutine, public dcube_function_alloc_rs (cube, cf, in_device, force_alloc)
 Allocates locally the real space grid, if PFFT library is not used. Otherwise, it assigns the PFFT real space grid to the cube real space grid, via pointer. More...
 
subroutine, public dcube_function_free_rs (cube, cf)
 Deallocates the real space grid. More...
 
subroutine, public dcube_function_allgather (cube, cf, cf_local, order, gatherfs)
 The next subroutines (domain-parallel mesh<->cube and submesh<->cube) are double-precision only; the single-precision exchange path does not use them. More...
 
subroutine, public dcube_function_rs2fs (cube, cf)
 Fourier transform a cube function from real space to Fourier space. More...
 
subroutine, public dcube_function_fs2rs (cube, cf)
 Fourier transform a cube function from Fourier space to real space. More...
 
subroutine dcube_map_ring_exchange (mpi_grp, send_mf, n_send_mf, recv_mf, n_recv_mf, send_map, n_send_map, recv_map, n_recv_map, send_proc, recv_proc)
 One ring step of the domain-parallel mesh-to-cube exchange. More...
 
subroutine dmesh_to_cube_1 (mesh, mf, cube, cf)
 Convert a single function from the mesh to the cube. More...
 
subroutine dmesh_to_cube_2 (mesh, mf, cube, cf, mf_buffer)
 Convert a set of functions from the mesh to the cube. More...
 
subroutine dcube_to_mesh_1 (cube, cf, mesh, mf)
 Convert a single function from the cube to the mesh. More...
 
subroutine dcube_to_mesh_2 (cube, cf, mesh, mf, mf_buffer)
 Convert a set of functions from the cube to the mesh. More...
 
subroutine, public dmesh_to_cube_parallel (mesh, mf, cube, cf, map)
 The next subroutines (domain-parallel mesh<->cube and submesh<->cube) are double-precision only; the single-precision exchange path does not use them. More...
 
subroutine, public dcube_to_mesh_parallel (cube, cf, mesh, mf, map)
 
real(real64) function, public dcube_function_surface_average (cube, cf)
 This function calculates the surface average of any function. More...
 
subroutine, public dsubmesh_to_cube (sm, mf, cube, cf)
 The next two subroutines convert a function between a submesh and the cube. More...
 
subroutine, public dcube_to_submesh (cube, cf, sm, mf)
 
subroutine, public zcube_function_alloc_rs (cube, cf, in_device, force_alloc)
 Allocates locally the real space grid, if PFFT library is not used. Otherwise, it assigns the PFFT real space grid to the cube real space grid, via pointer. More...
 
subroutine, public zcube_function_free_rs (cube, cf)
 Deallocates the real space grid. More...
 
subroutine, public zcube_function_allgather (cube, cf, cf_local, order, gatherfs)
 The next subroutines (domain-parallel mesh<->cube and submesh<->cube) are double-precision only; the single-precision exchange path does not use them. More...
 
subroutine, public zcube_function_rs2fs (cube, cf)
 Fourier transform a cube function from real space to Fourier space. More...
 
subroutine, public zcube_function_fs2rs (cube, cf)
 Fourier transform a cube function from Fourier space to real space. More...
 
subroutine zcube_map_ring_exchange (mpi_grp, send_mf, n_send_mf, recv_mf, n_recv_mf, send_map, n_send_map, recv_map, n_recv_map, send_proc, recv_proc)
 One ring step of the domain-parallel mesh-to-cube exchange. More...
 
subroutine zmesh_to_cube_1 (mesh, mf, cube, cf)
 Convert a single function from the mesh to the cube. More...
 
subroutine zmesh_to_cube_2 (mesh, mf, cube, cf, mf_buffer)
 Convert a set of functions from the mesh to the cube. More...
 
subroutine zcube_to_mesh_1 (cube, cf, mesh, mf)
 Convert a single function from the cube to the mesh. More...
 
subroutine zcube_to_mesh_2 (cube, cf, mesh, mf, mf_buffer)
 Convert a set of functions from the cube to the mesh. More...
 
subroutine, public zmesh_to_cube_parallel (mesh, mf, cube, cf, map)
 The next subroutines (domain-parallel mesh<->cube and submesh<->cube) are double-precision only; the single-precision exchange path does not use them. More...
 
subroutine, public zcube_to_mesh_parallel (cube, cf, mesh, mf, map)
 
complex(real64) function, public zcube_function_surface_average (cube, cf)
 This function calculates the surface average of any function. More...
 
subroutine, public zsubmesh_to_cube (sm, mf, cube, cf)
 The next two subroutines convert a function between a submesh and the cube. More...
 
subroutine, public zcube_to_submesh (cube, cf, sm, mf)
 
subroutine, public scube_function_alloc_rs (cube, cf, in_device, force_alloc)
 Allocates locally the real space grid, if PFFT library is not used. Otherwise, it assigns the PFFT real space grid to the cube real space grid, via pointer. More...
 
subroutine, public scube_function_free_rs (cube, cf)
 Deallocates the real space grid. More...
 
subroutine, public scube_function_rs2fs (cube, cf)
 The next subroutines (domain-parallel mesh<->cube and submesh<->cube) are double-precision only; the single-precision exchange path does not use them. More...
 
subroutine, public scube_function_fs2rs (cube, cf)
 Fourier transform a cube function from Fourier space to real space. More...
 
subroutine scube_map_ring_exchange (mpi_grp, send_mf, n_send_mf, recv_mf, n_recv_mf, send_map, n_send_map, recv_map, n_recv_map, send_proc, recv_proc)
 One ring step of the domain-parallel mesh-to-cube exchange. More...
 
subroutine smesh_to_cube_1 (mesh, mf, cube, cf)
 Convert a single function from the mesh to the cube. More...
 
subroutine smesh_to_cube_2 (mesh, mf, cube, cf, mf_buffer)
 Convert a set of functions from the mesh to the cube. More...
 
subroutine scube_to_mesh_1 (cube, cf, mesh, mf)
 Convert a single function from the cube to the mesh. More...
 
subroutine scube_to_mesh_2 (cube, cf, mesh, mf, mf_buffer)
 Convert a set of functions from the cube to the mesh. More...
 
subroutine, public ccube_function_alloc_rs (cube, cf, in_device, force_alloc)
 The next subroutines (domain-parallel mesh<->cube and submesh<->cube) are double-precision only; the single-precision exchange path does not use them. More...
 
subroutine, public ccube_function_free_rs (cube, cf)
 Deallocates the real space grid. More...
 
subroutine, public ccube_function_rs2fs (cube, cf)
 The next subroutines (domain-parallel mesh<->cube and submesh<->cube) are double-precision only; the single-precision exchange path does not use them. More...
 
subroutine, public ccube_function_fs2rs (cube, cf)
 Fourier transform a cube function from Fourier space to real space. More...
 
subroutine ccube_map_ring_exchange (mpi_grp, send_mf, n_send_mf, recv_mf, n_recv_mf, send_map, n_send_map, recv_map, n_recv_map, send_proc, recv_proc)
 One ring step of the domain-parallel mesh-to-cube exchange. More...
 
subroutine cmesh_to_cube_1 (mesh, mf, cube, cf)
 Convert a single function from the mesh to the cube. More...
 
subroutine cmesh_to_cube_2 (mesh, mf, cube, cf, mf_buffer)
 Convert a set of functions from the mesh to the cube. More...
 
subroutine ccube_to_mesh_1 (cube, cf, mesh, mf)
 Convert a single function from the cube to the mesh. More...
 
subroutine ccube_to_mesh_2 (cube, cf, mesh, mf, mf_buffer)
 Convert a set of functions from the cube to the mesh. More...
 

Function/Subroutine Documentation

◆ cube_function_alloc_fs()

subroutine, public cube_function_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 the local part of the Fourier space grid on the cube function.

If PFFT is used, it assigns the Fourier space grid to the cube Fourier space grid, via a pointer.

Definition at line 239 of file cube_function.F90.

◆ cube_function_free_fs()

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

Deallocates the Fourier space buffer of the cube function.

Definition at line 298 of file cube_function.F90.

◆ cube_function_alloc_fs_single()

subroutine, public cube_function_oct_m::cube_function_alloc_fs_single ( type(cube_t), intent(in), target  cube,
type(cube_function_t), intent(inout)  cf 
)

Allocate the single-precision (complex32) Fourier-space buffer cfcFS. Host, serial, aligned FFTW only (single-precision Poisson path).

Definition at line 339 of file cube_function.F90.

◆ cube_function_free_fs_single()

subroutine, public cube_function_oct_m::cube_function_free_fs_single ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(inout)  cf 
)

Definition at line 365 of file cube_function.F90.

◆ cube_map_is_trivial()

pure logical function, public cube_function_oct_m::cube_map_is_trivial ( type(cube_t), intent(in)  cube)

True when the cube_map describes a trivial mesh->cube identity: the mesh is X-fastest with one full-X-row segment per (iy, iz) pair, and the cube has the same dimensions as the mesh. The mapping then degenerates to a flat memcopy. Holds for 3D periodic systems with MeshOrder = order_cube and no domain decomposition.

Definition at line 389 of file cube_function.F90.

◆ dcube_function_alloc_rs()

subroutine, public cube_function_oct_m::dcube_function_alloc_rs ( type(cube_t), intent(in), target  cube,
type(cube_function_t), intent(inout)  cf,
logical, intent(in), optional  in_device,
logical, intent(in), optional  force_alloc 
)

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

Definition at line 477 of file cube_function.F90.

◆ dcube_function_free_rs()

subroutine, public cube_function_oct_m::dcube_function_free_rs ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(inout)  cf 
)

Deallocates the real space grid.

Definition at line 532 of file cube_function.F90.

◆ dcube_function_allgather()

subroutine, public cube_function_oct_m::dcube_function_allgather ( type(cube_t), intent(in)  cube,
real(real64), dimension(:,:,:), intent(out)  cf,
real(real64), dimension(:,:,:), intent(in), contiguous  cf_local,
integer, dimension(3), intent(in), optional  order,
logical, intent(in), optional  gatherfs 
)

The next subroutines (domain-parallel mesh<->cube and submesh<->cube) are double-precision only; the single-precision exchange path does not use them.

Definition at line 575 of file cube_function.F90.

◆ dcube_function_rs2fs()

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

Fourier transform a cube function from real space to 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 605 of file cube_function.F90.

◆ dcube_function_fs2rs()

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

Fourier transform a cube function from Fourier space to real space.

Definition at line 630 of file cube_function.F90.

◆ dcube_map_ring_exchange()

subroutine cube_function_oct_m::dcube_map_ring_exchange ( type(mpi_grp_t), intent(in)  mpi_grp,
real(real64), dimension(:, :), intent(in), contiguous  send_mf,
integer, intent(in)  n_send_mf,
real(real64), dimension(:, :), intent(inout), contiguous  recv_mf,
integer, intent(in)  n_recv_mf,
integer, dimension(:, :), intent(in), contiguous  send_map,
integer, intent(in)  n_send_map,
integer, dimension(:, :), intent(inout), contiguous  recv_map,
integer, intent(in)  n_recv_map,
integer, intent(in)  send_proc,
integer, intent(in)  recv_proc 
)
private

One ring step of the domain-parallel mesh-to-cube exchange.

Definition at line 657 of file cube_function.F90.

◆ dmesh_to_cube_1()

subroutine cube_function_oct_m::dmesh_to_cube_1 ( class(mesh_t), intent(in)  mesh,
real(real64), dimension(:), intent(in), target, contiguous  mf,
type(cube_t), intent(in), target  cube,
type(cube_function_t), intent(inout)  cf 
)
private

Convert a single function from the mesh to the cube.

Parameters
[in]mfA function defined on the mesh,

Definition at line 690 of file cube_function.F90.

◆ dmesh_to_cube_2()

subroutine cube_function_oct_m::dmesh_to_cube_2 ( class(mesh_t), intent(in)  mesh,
real(real64), dimension(:, :), intent(in), optional, target, contiguous  mf,
type(cube_t), intent(in), target  cube,
type(cube_function_t), intent(inout)  cf,
type(accel_mem_t), intent(in), optional, target  mf_buffer 
)
private

Convert a set of functions from the mesh to the cube.

Parameters
[in]mfA batch of functions defined on the mesh,
[in]mf_bufferDevice-resident source buffer for the GPU path. This is mutually exclusive with mf.

Definition at line 711 of file cube_function.F90.

◆ dcube_to_mesh_1()

subroutine cube_function_oct_m::dcube_to_mesh_1 ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(in)  cf,
class(mesh_t), intent(in)  mesh,
real(real64), dimension(:), intent(out), target, contiguous  mf 
)
private

Convert a single function from the cube to the mesh.

Parameters
[in]cfcube function
[out]mfA function defined on the mesh,

Definition at line 1004 of file cube_function.F90.

◆ dcube_to_mesh_2()

subroutine cube_function_oct_m::dcube_to_mesh_2 ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(in)  cf,
class(mesh_t), intent(in)  mesh,
real(real64), dimension(:, :), intent(out), optional, target, contiguous  mf,
type(accel_mem_t), intent(inout), optional, target  mf_buffer 
)
private

Convert a set of functions from the cube to the mesh.

Parameters
[in]cfcube function
[out]mfA batch of functions defined on the mesh,
[in,out]mf_bufferDevice-resident destination buffer for the GPU path. This is mutually exclusive with mf.

Definition at line 1025 of file cube_function.F90.

◆ dmesh_to_cube_parallel()

subroutine, public cube_function_oct_m::dmesh_to_cube_parallel ( class(mesh_t), intent(in)  mesh,
real(real64), dimension(:), intent(in), target, contiguous  mf,
type(cube_t), intent(in)  cube,
type(cube_function_t), intent(inout)  cf,
type(mesh_cube_parallel_map_t), intent(in)  map 
)

The next subroutines (domain-parallel mesh<->cube and submesh<->cube) are double-precision only; the single-precision exchange path does not use them.

The next two subroutines convert a function between the normal mesh and the cube in parallel.

Parameters
[in]mfmf(meshnp)

Definition at line 1169 of file cube_function.F90.

◆ dcube_to_mesh_parallel()

subroutine, public cube_function_oct_m::dcube_to_mesh_parallel ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(in)  cf,
class(mesh_t), intent(in)  mesh,
real(real64), dimension(:), intent(out), contiguous  mf,
type(mesh_cube_parallel_map_t), intent(in)  map 
)
Parameters
[out]mfmf(meshnp)

Definition at line 1262 of file cube_function.F90.

◆ dcube_function_surface_average()

real(real64) function, public cube_function_oct_m::dcube_function_surface_average ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(in)  cf 
)

This function calculates the surface average of any function.

Warning
Some more careful testing should be done on this.

Definition at line 1339 of file cube_function.F90.

◆ dsubmesh_to_cube()

subroutine, public cube_function_oct_m::dsubmesh_to_cube ( type(submesh_t), intent(in)  sm,
real(real64), dimension(:), intent(in), target, contiguous  mf,
type(cube_t), intent(in)  cube,
type(cube_function_t), intent(inout)  cf 
)

The next two subroutines convert a function between a submesh and the cube.

Parameters
[in]mffunction defined on the submesh.

Definition at line 1392 of file cube_function.F90.

◆ dcube_to_submesh()

subroutine, public cube_function_oct_m::dcube_to_submesh ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(in)  cf,
type(submesh_t), intent(in)  sm,
real(real64), dimension(:), intent(out), target, contiguous  mf 
)
Parameters
[out]mffunction defined on the submesh.

Definition at line 1485 of file cube_function.F90.

◆ zcube_function_alloc_rs()

subroutine, public cube_function_oct_m::zcube_function_alloc_rs ( type(cube_t), intent(in), target  cube,
type(cube_function_t), intent(inout)  cf,
logical, intent(in), optional  in_device,
logical, intent(in), optional  force_alloc 
)

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

Definition at line 1627 of file cube_function.F90.

◆ zcube_function_free_rs()

subroutine, public cube_function_oct_m::zcube_function_free_rs ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(inout)  cf 
)

Deallocates the real space grid.

Definition at line 1682 of file cube_function.F90.

◆ zcube_function_allgather()

subroutine, public cube_function_oct_m::zcube_function_allgather ( type(cube_t), intent(in)  cube,
complex(real64), dimension(:,:,:), intent(out)  cf,
complex(real64), dimension(:,:,:), intent(in), contiguous  cf_local,
integer, dimension(3), intent(in), optional  order,
logical, intent(in), optional  gatherfs 
)

The next subroutines (domain-parallel mesh<->cube and submesh<->cube) are double-precision only; the single-precision exchange path does not use them.

Definition at line 1725 of file cube_function.F90.

◆ zcube_function_rs2fs()

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

Fourier transform a cube function from real space to 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 1755 of file cube_function.F90.

◆ zcube_function_fs2rs()

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

Fourier transform a cube function from Fourier space to real space.

Definition at line 1780 of file cube_function.F90.

◆ zcube_map_ring_exchange()

subroutine cube_function_oct_m::zcube_map_ring_exchange ( type(mpi_grp_t), intent(in)  mpi_grp,
complex(real64), dimension(:, :), intent(in), contiguous  send_mf,
integer, intent(in)  n_send_mf,
complex(real64), dimension(:, :), intent(inout), contiguous  recv_mf,
integer, intent(in)  n_recv_mf,
integer, dimension(:, :), intent(in), contiguous  send_map,
integer, intent(in)  n_send_map,
integer, dimension(:, :), intent(inout), contiguous  recv_map,
integer, intent(in)  n_recv_map,
integer, intent(in)  send_proc,
integer, intent(in)  recv_proc 
)
private

One ring step of the domain-parallel mesh-to-cube exchange.

Definition at line 1807 of file cube_function.F90.

◆ zmesh_to_cube_1()

subroutine cube_function_oct_m::zmesh_to_cube_1 ( class(mesh_t), intent(in)  mesh,
complex(real64), dimension(:), intent(in), target, contiguous  mf,
type(cube_t), intent(in), target  cube,
type(cube_function_t), intent(inout)  cf 
)
private

Convert a single function from the mesh to the cube.

Parameters
[in]mfA function defined on the mesh,

Definition at line 1840 of file cube_function.F90.

◆ zmesh_to_cube_2()

subroutine cube_function_oct_m::zmesh_to_cube_2 ( class(mesh_t), intent(in)  mesh,
complex(real64), dimension(:, :), intent(in), optional, target, contiguous  mf,
type(cube_t), intent(in), target  cube,
type(cube_function_t), intent(inout)  cf,
type(accel_mem_t), intent(in), optional, target  mf_buffer 
)
private

Convert a set of functions from the mesh to the cube.

Parameters
[in]mfA batch of functions defined on the mesh,
[in]mf_bufferDevice-resident source buffer for the GPU path. This is mutually exclusive with mf.

Definition at line 1861 of file cube_function.F90.

◆ zcube_to_mesh_1()

subroutine cube_function_oct_m::zcube_to_mesh_1 ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(in)  cf,
class(mesh_t), intent(in)  mesh,
complex(real64), dimension(:), intent(out), target, contiguous  mf 
)
private

Convert a single function from the cube to the mesh.

Parameters
[in]cfcube function
[out]mfA function defined on the mesh,

Definition at line 2154 of file cube_function.F90.

◆ zcube_to_mesh_2()

subroutine cube_function_oct_m::zcube_to_mesh_2 ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(in)  cf,
class(mesh_t), intent(in)  mesh,
complex(real64), dimension(:, :), intent(out), optional, target, contiguous  mf,
type(accel_mem_t), intent(inout), optional, target  mf_buffer 
)
private

Convert a set of functions from the cube to the mesh.

Parameters
[in]cfcube function
[out]mfA batch of functions defined on the mesh,
[in,out]mf_bufferDevice-resident destination buffer for the GPU path. This is mutually exclusive with mf.

Definition at line 2175 of file cube_function.F90.

◆ zmesh_to_cube_parallel()

subroutine, public cube_function_oct_m::zmesh_to_cube_parallel ( class(mesh_t), intent(in)  mesh,
complex(real64), dimension(:), intent(in), target, contiguous  mf,
type(cube_t), intent(in)  cube,
type(cube_function_t), intent(inout)  cf,
type(mesh_cube_parallel_map_t), intent(in)  map 
)

The next subroutines (domain-parallel mesh<->cube and submesh<->cube) are double-precision only; the single-precision exchange path does not use them.

The next two subroutines convert a function between the normal mesh and the cube in parallel.

Parameters
[in]mfmf(meshnp)

Definition at line 2319 of file cube_function.F90.

◆ zcube_to_mesh_parallel()

subroutine, public cube_function_oct_m::zcube_to_mesh_parallel ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(in)  cf,
class(mesh_t), intent(in)  mesh,
complex(real64), dimension(:), intent(out), contiguous  mf,
type(mesh_cube_parallel_map_t), intent(in)  map 
)
Parameters
[out]mfmf(meshnp)

Definition at line 2412 of file cube_function.F90.

◆ zcube_function_surface_average()

complex(real64) function, public cube_function_oct_m::zcube_function_surface_average ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(in)  cf 
)

This function calculates the surface average of any function.

Warning
Some more careful testing should be done on this.

Definition at line 2489 of file cube_function.F90.

◆ zsubmesh_to_cube()

subroutine, public cube_function_oct_m::zsubmesh_to_cube ( type(submesh_t), intent(in)  sm,
complex(real64), dimension(:), intent(in), target, contiguous  mf,
type(cube_t), intent(in)  cube,
type(cube_function_t), intent(inout)  cf 
)

The next two subroutines convert a function between a submesh and the cube.

Parameters
[in]mffunction defined on the submesh.

Definition at line 2542 of file cube_function.F90.

◆ zcube_to_submesh()

subroutine, public cube_function_oct_m::zcube_to_submesh ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(in)  cf,
type(submesh_t), intent(in)  sm,
complex(real64), dimension(:), intent(out), target, contiguous  mf 
)
Parameters
[out]mffunction defined on the submesh.

Definition at line 2635 of file cube_function.F90.

◆ scube_function_alloc_rs()

subroutine, public cube_function_oct_m::scube_function_alloc_rs ( type(cube_t), intent(in), target  cube,
type(cube_function_t), intent(inout)  cf,
logical, intent(in), optional  in_device,
logical, intent(in), optional  force_alloc 
)

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

Definition at line 2781 of file cube_function.F90.

◆ scube_function_free_rs()

subroutine, public cube_function_oct_m::scube_function_free_rs ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(inout)  cf 
)

Deallocates the real space grid.

Definition at line 2836 of file cube_function.F90.

◆ scube_function_rs2fs()

subroutine, public cube_function_oct_m::scube_function_rs2fs ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(inout)  cf 
)

The next subroutines (domain-parallel mesh<->cube and submesh<->cube) are double-precision only; the single-precision exchange path does not use them.

Fourier transform a cube function from real space to 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 2886 of file cube_function.F90.

◆ scube_function_fs2rs()

subroutine, public cube_function_oct_m::scube_function_fs2rs ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(inout)  cf 
)

Fourier transform a cube function from Fourier space to real space.

Definition at line 2911 of file cube_function.F90.

◆ scube_map_ring_exchange()

subroutine cube_function_oct_m::scube_map_ring_exchange ( type(mpi_grp_t), intent(in)  mpi_grp,
real(real32), dimension(:, :), intent(in), contiguous  send_mf,
integer, intent(in)  n_send_mf,
real(real32), dimension(:, :), intent(inout), contiguous  recv_mf,
integer, intent(in)  n_recv_mf,
integer, dimension(:, :), intent(in), contiguous  send_map,
integer, intent(in)  n_send_map,
integer, dimension(:, :), intent(inout), contiguous  recv_map,
integer, intent(in)  n_recv_map,
integer, intent(in)  send_proc,
integer, intent(in)  recv_proc 
)
private

One ring step of the domain-parallel mesh-to-cube exchange.

Definition at line 2938 of file cube_function.F90.

◆ smesh_to_cube_1()

subroutine cube_function_oct_m::smesh_to_cube_1 ( class(mesh_t), intent(in)  mesh,
real(real32), dimension(:), intent(in), target, contiguous  mf,
type(cube_t), intent(in), target  cube,
type(cube_function_t), intent(inout)  cf 
)
private

Convert a single function from the mesh to the cube.

Parameters
[in]mfA function defined on the mesh,

Definition at line 2971 of file cube_function.F90.

◆ smesh_to_cube_2()

subroutine cube_function_oct_m::smesh_to_cube_2 ( class(mesh_t), intent(in)  mesh,
real(real32), dimension(:, :), intent(in), optional, target, contiguous  mf,
type(cube_t), intent(in), target  cube,
type(cube_function_t), intent(inout)  cf,
type(accel_mem_t), intent(in), optional, target  mf_buffer 
)
private

Convert a set of functions from the mesh to the cube.

Parameters
[in]mfA batch of functions defined on the mesh,
[in]mf_bufferDevice-resident source buffer for the GPU path. This is mutually exclusive with mf.

Definition at line 2992 of file cube_function.F90.

◆ scube_to_mesh_1()

subroutine cube_function_oct_m::scube_to_mesh_1 ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(in)  cf,
class(mesh_t), intent(in)  mesh,
real(real32), dimension(:), intent(out), target, contiguous  mf 
)
private

Convert a single function from the cube to the mesh.

Parameters
[in]cfcube function
[out]mfA function defined on the mesh,

Definition at line 3285 of file cube_function.F90.

◆ scube_to_mesh_2()

subroutine cube_function_oct_m::scube_to_mesh_2 ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(in)  cf,
class(mesh_t), intent(in)  mesh,
real(real32), dimension(:, :), intent(out), optional, target, contiguous  mf,
type(accel_mem_t), intent(inout), optional, target  mf_buffer 
)
private

Convert a set of functions from the cube to the mesh.

Parameters
[in]cfcube function
[out]mfA batch of functions defined on the mesh,
[in,out]mf_bufferDevice-resident destination buffer for the GPU path. This is mutually exclusive with mf.

Definition at line 3306 of file cube_function.F90.

◆ ccube_function_alloc_rs()

subroutine, public cube_function_oct_m::ccube_function_alloc_rs ( type(cube_t), intent(in), target  cube,
type(cube_function_t), intent(inout)  cf,
logical, intent(in), optional  in_device,
logical, intent(in), optional  force_alloc 
)

The next subroutines (domain-parallel mesh<->cube and submesh<->cube) are double-precision only; the single-precision exchange path does not use them.

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

Definition at line 3529 of file cube_function.F90.

◆ ccube_function_free_rs()

subroutine, public cube_function_oct_m::ccube_function_free_rs ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(inout)  cf 
)

Deallocates the real space grid.

Definition at line 3584 of file cube_function.F90.

◆ ccube_function_rs2fs()

subroutine, public cube_function_oct_m::ccube_function_rs2fs ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(inout)  cf 
)

The next subroutines (domain-parallel mesh<->cube and submesh<->cube) are double-precision only; the single-precision exchange path does not use them.

Fourier transform a cube function from real space to 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 3634 of file cube_function.F90.

◆ ccube_function_fs2rs()

subroutine, public cube_function_oct_m::ccube_function_fs2rs ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(inout)  cf 
)

Fourier transform a cube function from Fourier space to real space.

Definition at line 3659 of file cube_function.F90.

◆ ccube_map_ring_exchange()

subroutine cube_function_oct_m::ccube_map_ring_exchange ( type(mpi_grp_t), intent(in)  mpi_grp,
complex(real32), dimension(:, :), intent(in), contiguous  send_mf,
integer, intent(in)  n_send_mf,
complex(real32), dimension(:, :), intent(inout), contiguous  recv_mf,
integer, intent(in)  n_recv_mf,
integer, dimension(:, :), intent(in), contiguous  send_map,
integer, intent(in)  n_send_map,
integer, dimension(:, :), intent(inout), contiguous  recv_map,
integer, intent(in)  n_recv_map,
integer, intent(in)  send_proc,
integer, intent(in)  recv_proc 
)
private

One ring step of the domain-parallel mesh-to-cube exchange.

Definition at line 3686 of file cube_function.F90.

◆ cmesh_to_cube_1()

subroutine cube_function_oct_m::cmesh_to_cube_1 ( class(mesh_t), intent(in)  mesh,
complex(real32), dimension(:), intent(in), target, contiguous  mf,
type(cube_t), intent(in), target  cube,
type(cube_function_t), intent(inout)  cf 
)
private

Convert a single function from the mesh to the cube.

Parameters
[in]mfA function defined on the mesh,

Definition at line 3719 of file cube_function.F90.

◆ cmesh_to_cube_2()

subroutine cube_function_oct_m::cmesh_to_cube_2 ( class(mesh_t), intent(in)  mesh,
complex(real32), dimension(:, :), intent(in), optional, target, contiguous  mf,
type(cube_t), intent(in), target  cube,
type(cube_function_t), intent(inout)  cf,
type(accel_mem_t), intent(in), optional, target  mf_buffer 
)
private

Convert a set of functions from the mesh to the cube.

Parameters
[in]mfA batch of functions defined on the mesh,
[in]mf_bufferDevice-resident source buffer for the GPU path. This is mutually exclusive with mf.

Definition at line 3740 of file cube_function.F90.

◆ ccube_to_mesh_1()

subroutine cube_function_oct_m::ccube_to_mesh_1 ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(in)  cf,
class(mesh_t), intent(in)  mesh,
complex(real32), dimension(:), intent(out), target, contiguous  mf 
)
private

Convert a single function from the cube to the mesh.

Parameters
[in]cfcube function
[out]mfA function defined on the mesh,

Definition at line 4033 of file cube_function.F90.

◆ ccube_to_mesh_2()

subroutine cube_function_oct_m::ccube_to_mesh_2 ( type(cube_t), intent(in)  cube,
type(cube_function_t), intent(in)  cf,
class(mesh_t), intent(in)  mesh,
complex(real32), dimension(:, :), intent(out), optional, target, contiguous  mf,
type(accel_mem_t), intent(inout), optional, target  mf_buffer 
)
private

Convert a set of functions from the cube to the mesh.

Parameters
[in]cfcube function
[out]mfA batch of functions defined on the mesh,
[in,out]mf_bufferDevice-resident destination buffer for the GPU path. This is mutually exclusive with mf.

Definition at line 4054 of file cube_function.F90.