Report Typos and Errors    
Semi-Lagrangian Library
Modular library for kinetic and gyrokinetic simulations of plasmas in fusion energy devices.
Derived types and interfaces | Functions/Subroutines
sll_m_decomposition Module Reference

Description

Module providing data structures and tools to implement domain decompositions.

Author
Klaus Reuter, Max Planck Computing and Data Facility (MPCDF)

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)
 

Data Type Documentation

◆ sll_m_decomposition::decomposition_local_6d

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.

◆ sll_m_decomposition::halo_buffer_6d

type sll_m_decomposition::halo_buffer_6d

Definition at line 188 of file sll_m_decomposition.F90.

◆ sll_m_decomposition::halo_buffer_3d

type sll_m_decomposition::halo_buffer_3d

Definition at line 200 of file sll_m_decomposition.F90.

◆ sll_m_decomposition::decomposition_local_3d

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.

Function/Subroutine Documentation

◆ copy_buffer_to_array_6d_real64()

subroutine sll_m_decomposition::copy_buffer_to_array_6d_real64 ( intent(in)  buf,
intent(out)  arr,
intent(in)  arr_lo,
intent(in)  arr_hi,
intent(in)  ranges,
optional  n_threads 
)
private

Definition at line 1181 of file sll_m_decomposition.F90.

Here is the caller graph for this function:

◆ dummy_mempool()

subroutine sll_m_decomposition::dummy_mempool
private

Definition at line 2466 of file sll_m_decomposition.F90.

Here is the call graph for this function:

◆ dump_ascii()

subroutine sll_m_decomposition::dump_ascii ( character(len=*), intent(in)  file,
real(kind=f64), dimension(:), intent(in)  arr 
)
private

Definition at line 2376 of file sll_m_decomposition.F90.

◆ dump_ascii_6d()

subroutine sll_m_decomposition::dump_ascii_6d ( character(len=*), intent(in)  file,
type(sll_t_decomposition_6d), intent(in)  decomp,
real(kind=f64), dimension(decomp%local%lo(1):decomp%local%hi(1), decomp%local%lo(2):decomp%local%hi(2), decomp%local%lo(3):decomp%local%hi(3), decomp%local%lo(4):decomp%local%hi(4), decomp%local%lo(5):decomp%local%hi(5), decomp%local%lo(6):decomp%local%hi(6)), intent(inout)  arr 
)
private

Definition at line 2405 of file sll_m_decomposition.F90.

◆ dump_binary()

subroutine sll_m_decomposition::dump_binary ( character(len=*), intent(in)  filename,
real(kind=f64), dimension(:), intent(in)  array 
)
private

Definition at line 2394 of file sll_m_decomposition.F90.

◆ dump_dd_information()

subroutine sll_m_decomposition::dump_dd_information ( character(len=*), intent(in)  file,
type(sll_t_cartesian_topology_6d), intent(in)  topo,
type(sll_t_decomposition_6d), intent(in)  decomp 
)
private

Definition at line 2434 of file sll_m_decomposition.F90.

◆ get_transposed_process_map()

subroutine sll_m_decomposition::get_transposed_process_map ( dimension(nd), intent(in)  procs_per_dimension,
dimension(0:), intent(inout)  rank_map 
)
private

Returns a mpi rank table with the processes transposed.

Definition at line 325 of file sll_m_decomposition.F90.

Here is the caller graph for this function:

◆ mpi_sendrecv_compressed()

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.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mpi_sendrecv_compressed_6d_real64()

subroutine sll_m_decomposition::mpi_sendrecv_compressed_6d_real64 ( dimension(:), pointer  sendbuf,
dimension(:,:,:,:,:,:), pointer  recvbuf,
  nel,
  rank_send,
  rank_recv,
  mpi_comm,
logical, intent(in), optional  verbose,
integer, intent(in), optional  mpi_tag 
)
private

Definition at line 1518 of file sll_m_decomposition.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_f_apply_halo_exchange_6d_real64()

subroutine sll_m_decomposition::sll_f_apply_halo_exchange_6d_real64 ( type(sll_t_cartesian_topology_6d), intent(in)  topo,
type(sll_t_decomposition_6d), intent(in)  decomp,
dimension(decomp%local%lo(1):decomp%local%hi(1), decomp%local%lo(2):decomp%local%hi(2), decomp%local%lo(3):decomp%local%hi(3), decomp%local%lo(4):decomp%local%hi(4), decomp%local%lo(5):decomp%local%hi(5), decomp%local%lo(6):decomp%local%hi(6)), intent(inout)  arr,
logical, dimension(nd), intent(in), optional  dim_mask_in 
)
private

Definition at line 1263 of file sll_m_decomposition.F90.

◆ sll_f_apply_halo_exchange_slim_3d_real64()

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 
)

Definition at line 2039 of file sll_m_decomposition.F90.

Here is the call graph for this function:

◆ sll_f_apply_halo_exchange_slim_6d_real64()

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.

Here is the caller graph for this function:

◆ sll_f_new_cartesian_cell_domain_decomposition_slim_6d()

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.

◆ sll_f_new_cartesian_domain_decomposition_3d()

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.

◆ sll_f_new_cartesian_domain_decomposition_6d()

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 
)

Definition at line 768 of file sll_m_decomposition.F90.

Here is the caller graph for this function:

◆ sll_f_new_cartesian_domain_decomposition_slim_3d()

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.

◆ sll_f_new_cartesian_domain_decomposition_slim_6d()

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.

◆ sll_f_new_cartesian_topology_3d()

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.

◆ sll_f_new_cartesian_topology_3d_from_6d()

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.

◆ sll_f_new_cartesian_topology_3d_orthogonal()

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.

◆ sll_f_new_cartesian_topology_6d()

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.

Here is the caller graph for this function:

◆ sll_f_select_dim()

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.

◆ sll_f_set_process_grid()

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.

Here is the call graph for this function:

◆ sll_s_allocate_bc_buffers_6d()

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.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_allocate_bc_buffers_6d_part()

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.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_apply_bc_exchange_slim_6d_real64()

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.

Here is the caller graph for this function:

◆ sll_s_apply_halo_exchange_slim_3d_real64()

subroutine sll_m_decomposition::sll_s_apply_halo_exchange_slim_3d_real64 ( type(sll_t_cartesian_topology_3d), intent(in)  topo,
type(sll_t_decomposition_slim_3d), intent(inout), target  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,
integer(kind=i32), dimension(3,2), intent(in)  halo_block 
)
private

Definition at line 2055 of file sll_m_decomposition.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_apply_halo_exchange_slim_6d_real64()

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.

Here is the caller graph for this function:

◆ sll_s_copy_array_to_buffer_3d_real64()

subroutine sll_m_decomposition::sll_s_copy_array_to_buffer_3d_real64 ( intent(in)  arr,
intent(in)  arr_lo,
intent(in)  arr_hi,
intent(out)  buf,
intent(in)  ranges,
optional  n_threads 
)
private

Definition at line 1133 of file sll_m_decomposition.F90.

Here is the caller graph for this function:

◆ sll_s_copy_array_to_buffer_6d_real64()

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.

Here is the caller graph for this function:

◆ sll_s_deallocate_bc_buffers()

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.

Here is the caller graph for this function:

◆ sll_s_deallocate_cartesian_cell_domain_decomposition_slim_6d()

subroutine sll_m_decomposition::sll_s_deallocate_cartesian_cell_domain_decomposition_slim_6d
private

6D Cartesian slim domain decomposition destructor

Definition at line 979 of file sll_m_decomposition.F90.

◆ sll_s_deallocate_cartesian_domain_decomposition_3d()

subroutine sll_m_decomposition::sll_s_deallocate_cartesian_domain_decomposition_3d
private

3D Cartesian domain decomposition destructor

Definition at line 1047 of file sll_m_decomposition.F90.

◆ sll_s_deallocate_cartesian_domain_decomposition_6d()

subroutine sll_m_decomposition::sll_s_deallocate_cartesian_domain_decomposition_6d
private

6D Cartesian domain decomposition destructor

Definition at line 830 of file sll_m_decomposition.F90.

◆ sll_s_deallocate_cartesian_domain_decomposition_slim_3d()

subroutine sll_m_decomposition::sll_s_deallocate_cartesian_domain_decomposition_slim_3d
private

3D Cartesian slim domain decomposition destructor

Definition at line 916 of file sll_m_decomposition.F90.

◆ sll_s_deallocate_cartesian_domain_decomposition_slim_6d()

subroutine sll_m_decomposition::sll_s_deallocate_cartesian_domain_decomposition_slim_6d
private

6D Cartesian slim domain decomposition destructor

Definition at line 876 of file sll_m_decomposition.F90.

◆ sll_s_deallocate_cartesian_topology_3d()

subroutine sll_m_decomposition::sll_s_deallocate_cartesian_topology_3d
private

3D Cartesian topology destructor

Definition at line 618 of file sll_m_decomposition.F90.

◆ sll_s_deallocate_cartesian_topology_6d()

subroutine sll_m_decomposition::sll_s_deallocate_cartesian_topology_6d
private

6D Cartesian topology destructor

Definition at line 557 of file sll_m_decomposition.F90.

◆ sll_s_mpi_sendrecv_compressed_core()

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.

Here is the call graph for this function:
Here is the caller graph for this function:
    Report Typos and Errors