70 real(real64),
pointer,
contiguous :: dRS(:, :, :) => null()
71 complex(real64),
pointer,
contiguous :: zRS(:, :, :) => null()
72 complex(real64),
pointer,
contiguous :: FS(:, :, :) => null()
73 logical :: forced_alloc = .false.
74 logical :: in_device_memory = .false.
75 type(accel_mem_t) :: real_space_buffer
76 type(accel_mem_t) :: fourier_space_buffer
88 type(cube_t),
intent(in) :: cube
89 trivial = cube%cube_map_present .and.
allocated(cube%cube_map%map)
90 if (.not. trivial)
return
94 trivial = cube%cube_map%is_trivial .and. &
95 cube%cube_map%nmap == cube%rs_n(2) * cube%rs_n(3) .and. &
96 cube%cube_map%map(
mcm_count, 1) == cube%rs_n(1) .and. &
97 cube%cube_map%map(1, 1) + cube%center(1) == 1 .and. &
98 cube%cube_map%map(2, 1) + cube%center(2) == 1 .and. &
99 cube%cube_map%map(3, 1) + cube%center(3) == 1
104#include "cube_function_inc.F90"
107#include "complex.F90"
108#include "cube_function_inc.F90"
real(real64) function, public dcube_function_surface_average(cube, cf)
This function calculates the surface average of any function.
subroutine, public zmesh_to_cube(mesh, mf, cube, cf)
Convert a function from the mesh to the cube.
complex(real64) function, public zcube_function_surface_average(cube, cf)
This function calculates the surface average of any function.
subroutine, public dmesh_to_cube(mesh, mf, cube, cf)
Convert a function from the mesh to the cube.
subroutine, public dcube_to_submesh(cube, cf, sm, mf)
subroutine, public dcube_to_mesh(cube, cf, mesh, mf)
Convert a function from the cube to the mesh.
subroutine, public dcube_function_allgather(cube, cf, cf_local, order, gatherfs)
subroutine, public zcube_to_mesh_parallel(cube, cf, mesh, mf, map)
subroutine, public zcube_to_mesh(cube, cf, mesh, mf)
Convert a function from the cube to the mesh.
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 re...
subroutine, public zcube_to_submesh(cube, cf, sm, mf)
subroutine, public zmesh_to_cube_parallel(mesh, mf, cube, cf, map)
The next two subroutines convert a function between the normal mesh and the cube in parallel.
subroutine, public dcube_function_free_rs(cube, cf)
Deallocates the real space grid.
subroutine, public dsubmesh_to_cube(sm, mf, cube, cf)
The next two subroutines convert a function between a submesh and the cube.
subroutine, public zsubmesh_to_cube(sm, mf, cube, cf)
The next two subroutines convert a function between a submesh and the cube.
subroutine, public zcube_function_allgather(cube, cf, cf_local, order, gatherfs)
subroutine, public dmesh_to_cube_parallel(mesh, mf, cube, cf, map)
The next two subroutines convert a function between the normal mesh and the cube in parallel.
subroutine, public zcube_function_free_rs(cube, cf)
Deallocates the real space grid.
pure logical function 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...
subroutine, public dcube_to_mesh_parallel(cube, cf, mesh, mf, map)
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 re...
Fast Fourier Transform module. This module provides a single interface that works with different FFT ...
This module is intended to contain "only mathematical" functions and procedures.
integer, parameter, public mcm_count
This module defines the meshes, which are used in Octopus.
Some general things and nomenclature:
This module is an helper to perform ring-pattern communications among all states.