Semi-Lagrangian Library
Modular library for kinetic and gyrokinetic simulations of plasmas in fusion energy devices.
|
Module providing data structures and tools to implement domain decompositions.
Derived types and interfaces | |
type | sll_t_cartesian_topology_6d |
Information on the 6D cartesian process topology. More... | |
type | sll_t_cartesian_topology_3d |
Information on the 3D cartesian process topology. More... | |
type | decomposition_local_6d |
6D decomposition, index limits local to an MPI process. More... | |
type | halo_buffer_6d |
type | halo_buffer_3d |
type | decomposition_slim_local_6d |
6D decomposition, "slim" redesign with dynamic halo cells More... | |
type | decomposition_slim_local_3d |
type | decomposition_local_3d |
3D decomposition, index limits local to an MPI process. More... | |
type | sll_t_decomposition_6d |
6D decomposition, global array size information and local information. More... | |
type | sll_t_decomposition_slim_6d |
6D decomposition, slim redesign, global array size information and local information. More... | |
type | sll_t_decomposition_3d |
3D decomposition, global array size information and local information. More... | |
type | sll_t_decomposition_slim_3d |
3D slim decomposition More... | |
interface | sll_o_new_cartesian_topology |
interface | sll_o_new_cartesian_domain_decomposition |
interface | sll_o_apply_halo_exchange |
interface | sll_f_apply_halo_exchange |
Functions/Subroutines | |
subroutine | get_transposed_process_map (procs_per_dimension, rank_map) |
Returns a mpi rank table with the processes transposed. More... | |
type(sll_t_cartesian_topology_6d) function, pointer, public | sll_f_new_cartesian_topology_6d (top_collective, procs_per_dimension, periodic) |
6D Cartesian topology constructor function More... | |
subroutine | sll_s_deallocate_cartesian_topology_6d () |
6D Cartesian topology destructor More... | |
type(sll_t_cartesian_topology_3d) function, pointer, public | sll_f_new_cartesian_topology_3d (top_collective, procs_per_dimension, periodic) |
3D Cartesian topology constructor function More... | |
subroutine | sll_s_deallocate_cartesian_topology_3d () |
3D Cartesian topology destructor More... | |
type(sll_t_cartesian_topology_3d) function, pointer, public | sll_f_new_cartesian_topology_3d_from_6d (t6d, keep_dim) |
6D-->3D topology mapper, creates a 3D sub-topology from a 6D topology. More... | |
type(sll_t_cartesian_topology_3d) function, pointer, public | sll_f_new_cartesian_topology_3d_orthogonal (topo_6d, topo_3d) |
type(sll_t_decomposition_6d) function, pointer, public | sll_f_new_cartesian_domain_decomposition_6d (topology, grid_size, halo_width) |
subroutine | sll_s_deallocate_cartesian_domain_decomposition_6d () |
6D Cartesian domain decomposition destructor More... | |
type(sll_t_decomposition_slim_6d) function, pointer, public | sll_f_new_cartesian_domain_decomposition_slim_6d (topology, grid_size) |
subroutine | sll_s_deallocate_cartesian_domain_decomposition_slim_6d () |
6D Cartesian slim domain decomposition destructor More... | |
type(sll_t_decomposition_slim_3d) function, pointer, public | sll_f_new_cartesian_domain_decomposition_slim_3d (topology, grid_size) |
subroutine | sll_s_deallocate_cartesian_domain_decomposition_slim_3d () |
3D Cartesian slim domain decomposition destructor More... | |
type(sll_t_decomposition_slim_6d) function, pointer, public | sll_f_new_cartesian_cell_domain_decomposition_slim_6d (topology, n_cells, degree) |
subroutine | sll_s_deallocate_cartesian_cell_domain_decomposition_slim_6d () |
6D Cartesian slim domain decomposition destructor More... | |
type(sll_t_decomposition_3d) function, pointer, public | sll_f_new_cartesian_domain_decomposition_3d (topology, grid_size, halo_width) |
subroutine | sll_s_deallocate_cartesian_domain_decomposition_3d () |
3D Cartesian domain decomposition destructor More... | |
subroutine, public | sll_s_copy_array_to_buffer_6d_real64 (arr, arr_lo, arr_hi, buf, ranges, n_threads) |
subroutine | sll_s_copy_array_to_buffer_3d_real64 (arr, arr_lo, arr_hi, buf, ranges, n_threads) |
subroutine | copy_buffer_to_array_6d_real64 (buf, arr, arr_lo, arr_hi, ranges, n_threads) |
subroutine | sll_f_apply_halo_exchange_6d_real64 (topo, decomp, arr, dim_mask_in) |
subroutine | mpi_sendrecv_compressed_6d_real64 (sendbuf, recvbuf, nel, rank_send, rank_recv, mpi_comm, verbose, mpi_tag) |
subroutine | mpi_sendrecv_compressed (sendbuf, recvbuf, nel, rank_send, rank_recv, mpi_comm, verbose, mpi_tag) |
subroutine, public | sll_s_mpi_sendrecv_compressed_core (comp_send, comp_recv, rank_send, rank_recv, mpi_comm, verbose, mpi_tag) |
MPI sendrecv functionality, wrapped for a compressed buffer. More... | |
subroutine, public | sll_f_apply_halo_exchange_slim_6d_real64 (topo, decomp, arr, id, hw_left, hw_right) |
subroutine, public | sll_s_apply_halo_exchange_slim_6d_real64 (topo, decomp, arr, id, hw_left, hw_right, halo_block) |
subroutine, public | sll_f_apply_halo_exchange_slim_3d_real64 (topo, decomp, arr, id, hw_left, hw_right) |
subroutine | sll_s_apply_halo_exchange_slim_3d_real64 (topo, decomp, arr, id, hw_left, hw_right, halo_block) |
subroutine, public | sll_s_apply_bc_exchange_slim_6d_real64 (topo, decomp, id) |
logical function, dimension(6), public | sll_f_select_dim (id) |
subroutine, public | sll_s_allocate_bc_buffers_6d (decomp, id) |
subroutine, public | sll_s_allocate_bc_buffers_6d_part (decomp, id, idx_mn, idx_mx) |
subroutine, public | sll_s_deallocate_bc_buffers (decomp) |
subroutine | dump_ascii (file, arr) |
subroutine | dump_binary (filename, array) |
subroutine | dump_ascii_6d (file, decomp, arr) |
subroutine | dump_dd_information (file, topo, decomp) |
subroutine | dummy_mempool () |
integer function, dimension(6), public | sll_f_set_process_grid (mpi_world_size, process_grid_par) |
type sll_m_decomposition::decomposition_local_6d |
6D decomposition, index limits local to an MPI process.
Definition at line 164 of file sll_m_decomposition.F90.
type sll_m_decomposition::halo_buffer_6d |
Definition at line 188 of file sll_m_decomposition.F90.
type sll_m_decomposition::halo_buffer_3d |
Definition at line 200 of file sll_m_decomposition.F90.
type sll_m_decomposition::decomposition_local_3d |
3D decomposition, index limits local to an MPI process.
Definition at line 249 of file sll_m_decomposition.F90.
|
private |
Definition at line 1181 of file sll_m_decomposition.F90.
|
private |
|
private |
Definition at line 2376 of file sll_m_decomposition.F90.
|
private |
Definition at line 2405 of file sll_m_decomposition.F90.
|
private |
Definition at line 2394 of file sll_m_decomposition.F90.
|
private |
Definition at line 2434 of file sll_m_decomposition.F90.
|
private |
Returns a mpi rank table with the processes transposed.
Definition at line 325 of file sll_m_decomposition.F90.
subroutine sll_m_decomposition::mpi_sendrecv_compressed | ( | dimension(:), pointer | sendbuf, |
dimension(:), pointer | recvbuf, | ||
nel, | |||
rank_send, | |||
rank_recv, | |||
mpi_comm, | |||
logical, intent(in), optional | verbose, | ||
integer, intent(in), optional | mpi_tag | ||
) |
Definition at line 1546 of file sll_m_decomposition.F90.
|
private |
Definition at line 1518 of file sll_m_decomposition.F90.
|
private |
Definition at line 1263 of file sll_m_decomposition.F90.
subroutine, public sll_m_decomposition::sll_f_apply_halo_exchange_slim_3d_real64 | ( | type(sll_t_cartesian_topology_3d), intent(in) | topo, |
type(sll_t_decomposition_slim_3d), intent(inout) | decomp, | ||
real(kind=f64), dimension(decomp%local%mn(1):decomp%local%mx(1), decomp%local%mn(2):decomp%local%mx(2), decomp%local%mn(3):decomp%local%mx(3)), intent(inout) | arr, | ||
integer(kind=i32), intent(in) | id, | ||
integer(kind=i32), intent(in) | hw_left, | ||
integer(kind=i32), intent(in) | hw_right | ||
) |
subroutine, public sll_m_decomposition::sll_f_apply_halo_exchange_slim_6d_real64 | ( | type(sll_t_cartesian_topology_6d), intent(in) | topo, |
type(sll_t_decomposition_slim_6d), intent(inout) | decomp, | ||
dimension(decomp%local%mn(1):decomp%local%mx(1), decomp%local%mn(2):decomp%local%mx(2), decomp%local%mn(3):decomp%local%mx(3), decomp%local%mn(4):decomp%local%mx(4), decomp%local%mn(5):decomp%local%mx(5), decomp%local%mn(6):decomp%local%mx(6)), intent(inout) | arr, | ||
intent(in) | id, | ||
intent(in) | hw_left, | ||
intent(in) | hw_right | ||
) |
Definition at line 1695 of file sll_m_decomposition.F90.
type(sll_t_decomposition_slim_6d) function, pointer, public sll_m_decomposition::sll_f_new_cartesian_cell_domain_decomposition_slim_6d | ( | type(sll_t_cartesian_topology_6d), intent(in), pointer | topology, |
dimension(nd), intent(in) | n_cells, | ||
dimension(nd), intent(in) | degree | ||
) |
Definition at line 921 of file sll_m_decomposition.F90.
type(sll_t_decomposition_3d) function, pointer, public sll_m_decomposition::sll_f_new_cartesian_domain_decomposition_3d | ( | type(sll_t_cartesian_topology_3d), intent(in), pointer | topology, |
dimension(nd), intent(in) | grid_size, | ||
dimension(nd), intent(in) | halo_width | ||
) |
Definition at line 986 of file sll_m_decomposition.F90.
type(sll_t_decomposition_6d) function, pointer, public sll_m_decomposition::sll_f_new_cartesian_domain_decomposition_6d | ( | type(sll_t_cartesian_topology_6d), intent(in), pointer | topology, |
dimension(nd), intent(in) | grid_size, | ||
dimension(nd), intent(in) | halo_width | ||
) |
type(sll_t_decomposition_slim_3d) function, pointer, public sll_m_decomposition::sll_f_new_cartesian_domain_decomposition_slim_3d | ( | type(sll_t_cartesian_topology_3d), intent(in), pointer | topology, |
dimension(nd), intent(in) | grid_size | ||
) |
Definition at line 880 of file sll_m_decomposition.F90.
type(sll_t_decomposition_slim_6d) function, pointer, public sll_m_decomposition::sll_f_new_cartesian_domain_decomposition_slim_6d | ( | type(sll_t_cartesian_topology_6d), intent(in), pointer | topology, |
dimension(nd), intent(in) | grid_size | ||
) |
Definition at line 835 of file sll_m_decomposition.F90.
type(sll_t_cartesian_topology_3d) function, pointer, public sll_m_decomposition::sll_f_new_cartesian_topology_3d | ( | type(sll_t_collective_t), intent(in) | top_collective, |
dimension(nd), intent(in) | procs_per_dimension, | ||
logical, dimension(nd), intent(in) | periodic | ||
) |
3D Cartesian topology constructor function
Definition at line 561 of file sll_m_decomposition.F90.
type(sll_t_cartesian_topology_3d) function, pointer, public sll_m_decomposition::sll_f_new_cartesian_topology_3d_from_6d | ( | type(sll_t_cartesian_topology_6d), intent(in), pointer | t6d, |
logical, dimension(6), intent(in) | keep_dim | ||
) |
6D-->3D topology mapper, creates a 3D sub-topology from a 6D topology.
Definition at line 623 of file sll_m_decomposition.F90.
type(sll_t_cartesian_topology_3d) function, pointer, public sll_m_decomposition::sll_f_new_cartesian_topology_3d_orthogonal | ( | type(sll_t_cartesian_topology_6d), intent(in), pointer | topo_6d, |
type(sll_t_cartesian_topology_3d), intent(in), pointer | topo_3d | ||
) |
Definition at line 688 of file sll_m_decomposition.F90.
type(sll_t_cartesian_topology_6d) function, pointer, public sll_m_decomposition::sll_f_new_cartesian_topology_6d | ( | type(sll_t_collective_t), intent(in) | top_collective, |
dimension(nd), intent(in) | procs_per_dimension, | ||
logical, dimension(nd), intent(in) | periodic | ||
) |
6D Cartesian topology constructor function
Definition at line 379 of file sll_m_decomposition.F90.
logical function, dimension(6), public sll_m_decomposition::sll_f_select_dim | ( | integer(kind=i32), optional | id | ) |
Definition at line 2292 of file sll_m_decomposition.F90.
integer function, dimension(6), public sll_m_decomposition::sll_f_set_process_grid | ( | integer, intent(in) | mpi_world_size, |
integer, dimension(6), intent(in), optional | process_grid_par | ||
) |
Create a distribution of the MPI processes over the dimensions. There is a convenience function provided by MPI as well, however we do this by hand for the moment to have better control.
Definition at line 2473 of file sll_m_decomposition.F90.
subroutine, public sll_m_decomposition::sll_s_allocate_bc_buffers_6d | ( | type(sll_t_decomposition_slim_6d), intent(inout) | decomp, |
integer(kind=i32), intent(in) | id | ||
) |
Definition at line 2305 of file sll_m_decomposition.F90.
subroutine, public sll_m_decomposition::sll_s_allocate_bc_buffers_6d_part | ( | type(sll_t_decomposition_slim_6d), intent(inout) | decomp, |
integer(kind=i32), intent(in) | id, | ||
integer(kind=i32), dimension(5), intent(in) | idx_mn, | ||
integer(kind=i32), dimension(5), intent(in) | idx_mx | ||
) |
Definition at line 2324 of file sll_m_decomposition.F90.
subroutine, public sll_m_decomposition::sll_s_apply_bc_exchange_slim_6d_real64 | ( | type(sll_t_cartesian_topology_6d), intent(in) | topo, |
type(sll_t_decomposition_slim_6d), intent(inout) | decomp, | ||
integer(kind=i32), intent(in) | id | ||
) |
Definition at line 2260 of file sll_m_decomposition.F90.
|
private |
Definition at line 2055 of file sll_m_decomposition.F90.
subroutine, public sll_m_decomposition::sll_s_apply_halo_exchange_slim_6d_real64 | ( | type(sll_t_cartesian_topology_6d), intent(in) | topo, |
type(sll_t_decomposition_slim_6d), intent(inout), target | decomp, | ||
dimension(decomp%local%mn(1):decomp%local%mx(1), decomp%local%mn(2):decomp%local%mx(2), decomp%local%mn(3):decomp%local%mx(3), decomp%local%mn(4):decomp%local%mx(4), decomp%local%mn(5):decomp%local%mx(5), decomp%local%mn(6):decomp%local%mx(6)), intent(inout) | arr, | ||
intent(in) | id, | ||
intent(in) | hw_left, | ||
intent(in) | hw_right, | ||
dimension(6,2), intent(in) | halo_block | ||
) |
Definition at line 1715 of file sll_m_decomposition.F90.
|
private |
Definition at line 1133 of file sll_m_decomposition.F90.
subroutine, public sll_m_decomposition::sll_s_copy_array_to_buffer_6d_real64 | ( | intent(in) | arr, |
intent(in) | arr_lo, | ||
intent(in) | arr_hi, | ||
intent(out) | buf, | ||
intent(in) | ranges, | ||
optional | n_threads | ||
) |
Definition at line 1051 of file sll_m_decomposition.F90.
subroutine, public sll_m_decomposition::sll_s_deallocate_bc_buffers | ( | type(sll_t_decomposition_slim_6d), intent(inout) | decomp | ) |
Definition at line 2365 of file sll_m_decomposition.F90.
|
private |
6D Cartesian slim domain decomposition destructor
Definition at line 979 of file sll_m_decomposition.F90.
|
private |
3D Cartesian domain decomposition destructor
Definition at line 1047 of file sll_m_decomposition.F90.
|
private |
6D Cartesian domain decomposition destructor
Definition at line 830 of file sll_m_decomposition.F90.
|
private |
3D Cartesian slim domain decomposition destructor
Definition at line 916 of file sll_m_decomposition.F90.
|
private |
6D Cartesian slim domain decomposition destructor
Definition at line 876 of file sll_m_decomposition.F90.
|
private |
3D Cartesian topology destructor
Definition at line 618 of file sll_m_decomposition.F90.
|
private |
6D Cartesian topology destructor
Definition at line 557 of file sll_m_decomposition.F90.
subroutine, public sll_m_decomposition::sll_s_mpi_sendrecv_compressed_core | ( | type(sll_t_compressed_buffer) | comp_send, |
type(sll_t_compressed_buffer) | comp_recv, | ||
rank_send, | |||
rank_recv, | |||
mpi_comm, | |||
logical, intent(in), optional | verbose, | ||
integer, intent(in), optional | mpi_tag | ||
) |
MPI sendrecv functionality, wrapped for a compressed buffer.
Definition at line 1644 of file sll_m_decomposition.F90.