m_ordering Module

"Application storage" stores spatial data with a directionality for better cache locality This set of functions converts indices from this application storage (_dir) to cartesian indices (_ijk)



Interfaces

public interface get_index_reordering

  • public pure subroutine get_index_reordering_rdr(out_i, out_j, out_k, in_i, in_j, in_k, reorder_dir, mesh)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(out) :: out_i
    integer, intent(out) :: out_j
    integer, intent(out) :: out_k
    integer, intent(in) :: in_i
    integer, intent(in) :: in_j
    integer, intent(in) :: in_k
    integer, intent(in) :: reorder_dir
    class(mesh_t), intent(in) :: mesh
  • public pure subroutine get_index_reordering_dirs(out_i, out_j, out_k, in_i, in_j, in_k, dir_from, dir_to, mesh)

    Converts a set of application storage directional index to an other direction. The two directions are defined by the reorder_dir variable, RDR_X2Y will go from storage in X to Y etc.

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(out) :: out_i
    integer, intent(out) :: out_j
    integer, intent(out) :: out_k
    integer, intent(in) :: in_i
    integer, intent(in) :: in_j
    integer, intent(in) :: in_k
    integer, intent(in) :: dir_from
    integer, intent(in) :: dir_to
    class(mesh_t), intent(in) :: mesh

Subroutines

public pure subroutine get_index_ijk(i, j, k, dir_i, dir_j, dir_k, dir, SZ, nx_padded, ny_padded, nz_padded)

Get cartesian index from application storage directional one

Arguments

Type IntentOptional Attributes Name
integer, intent(out) :: i
integer, intent(out) :: j
integer, intent(out) :: k
integer, intent(in) :: dir_i
integer, intent(in) :: dir_j
integer, intent(in) :: dir_k
integer, intent(in) :: dir
integer, intent(in) :: SZ
integer, intent(in) :: nx_padded
integer, intent(in) :: ny_padded
integer, intent(in) :: nz_padded

public pure subroutine get_index_dir(dir_i, dir_j, dir_k, i, j, k, dir, SZ, nx_padded, ny_padded, nz_padded)

Get application storage directional index from cartesian index

Arguments

Type IntentOptional Attributes Name
integer, intent(out) :: dir_i
integer, intent(out) :: dir_j
integer, intent(out) :: dir_k
integer, intent(in) :: i
integer, intent(in) :: j
integer, intent(in) :: k
integer, intent(in) :: dir
integer, intent(in) :: SZ
integer, intent(in) :: nx_padded
integer, intent(in) :: ny_padded
integer, intent(in) :: nz_padded

public pure subroutine get_index_reordering_dirs(out_i, out_j, out_k, in_i, in_j, in_k, dir_from, dir_to, mesh)

Converts a set of application storage directional index to an other direction. The two directions are defined by the reorder_dir variable, RDR_X2Y will go from storage in X to Y etc.

Arguments

Type IntentOptional Attributes Name
integer, intent(out) :: out_i
integer, intent(out) :: out_j
integer, intent(out) :: out_k
integer, intent(in) :: in_i
integer, intent(in) :: in_j
integer, intent(in) :: in_k
integer, intent(in) :: dir_from
integer, intent(in) :: dir_to
class(mesh_t), intent(in) :: mesh

public pure subroutine get_index_reordering_rdr(out_i, out_j, out_k, in_i, in_j, in_k, reorder_dir, mesh)

Arguments

Type IntentOptional Attributes Name
integer, intent(out) :: out_i
integer, intent(out) :: out_j
integer, intent(out) :: out_k
integer, intent(in) :: in_i
integer, intent(in) :: in_j
integer, intent(in) :: in_k
integer, intent(in) :: reorder_dir
class(mesh_t), intent(in) :: mesh