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)


Uses

  • module~~m_ordering~~UsesGraph module~m_ordering m_ordering module~m_common m_common module~m_ordering->module~m_common module~m_mesh m_mesh module~m_ordering->module~m_mesh module~m_mesh->module~m_common iso_fortran_env iso_fortran_env module~m_mesh->iso_fortran_env module~m_field m_field module~m_mesh->module~m_field module~m_mesh_content m_mesh_content module~m_mesh->module~m_mesh_content mpi mpi module~m_mesh->mpi module~m_field->module~m_common module~m_mesh_content->module~m_common

Used by

  • module~~m_ordering~~UsedByGraph module~m_ordering m_ordering module~m_omp_backend m_omp_backend module~m_omp_backend->module~m_ordering program~xcompact xcompact program~xcompact->module~m_omp_backend

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
    type(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
    type(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
type(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
type(mesh_t), intent(in) :: mesh