gs2_layouts Module

FIXME : Add documentation



Contents

handle_processor_request setup_dist_fn_layouts is_idx_g il_idx_g ie_idx_g it_idx_g ik_idx_g proc_id_g idx_g idx_local_g ig_local_g setup_fields_layouts ik_idx_f it_idx_f im_idx_f if_idx_f idx_f proc_id_f idx_local_f ig_local_f in_idx_f ig_idx_f ij_idx_f ifield_idx_f setup_jfields_layouts ik_idx_jf it_idx_jf if_idx_jf ig_idx_jf ifield_idx_jf idx_jf ij_idx_jf proc_id_jf idx_local_jf ig_local_jf setup_le_layouts is_idx_le it_idx_le ik_idx_le ig_idx_le idx_le proc_id_le idx_local_le ig_local_le setup_gf_layouts it_idx_gf ik_idx_gf idx_gf proc_id_gf idx_local_gf ig_local_gf setup_energy_layouts is_idx_e il_idx_e isign_idx_e it_idx_e ik_idx_e ig_idx_e idx_e proc_id_e idx_local_e ig_local_e setup_lambda_layouts is_idx_lz ie_idx_lz it_idx_lz ik_idx_lz ig_idx_lz idx_lz proc_id_lz idx_local_lz ig_local_lz setup_parity_layouts idx_parity idx_local_parity ig_local_parity proc_id_parity ik_idx_parity is_idx_parity il_idx_parity ie_idx_parity setup_x_transform_layouts is_idx_xxf ie_idx_xxf il_idx_xxf isign_idx_xxf ig_idx_xxf ik_idx_xxf idx_xxf proc_id_xxf idx_local_xxf ig_local_xxf setup_y_transform_layouts is_idx_yxf ie_idx_yxf il_idx_yxf isign_idx_yxf ig_idx_yxf it_idx_yxf idx_accelx idx_yxf proc_id_accelx proc_id_yxf idx_local_accelx ig_local_accelx idx_local_yxf ig_local_yxf setup_accelx_transform_layouts setup_accel_transform_layouts is_idx_accelx ie_idx_accelx il_idx_accelx it_idx_accelx ik_idx_accelx it_idx_accel ik_idx_accel dealiasing get_gs2_layouts_config get_default_name_layouts_config get_default_requires_index_layouts_config

Variables

Type Visibility Attributes Name Initial
logical, private :: initialized = .false.
logical, private :: initialized_x_transform = .false.
logical, private :: initialized_y_transform = .false.
logical, private :: initialized_layouts = .false.
logical, private :: initialized_dist_fn_layouts = .false.
logical, private :: initialized_fields_layouts = .false.
logical, private :: initialized_jfields_layouts = .false.
logical, private :: initialized_le_layouts = .false.
logical, private :: initialized_gf_layouts = .false.
logical, private :: initialized_energy_layouts = .false.
logical, private :: initialized_lambda_layouts = .false.
logical, private :: initialized_parity_layouts = .false.
logical, private :: initialized_accel_transform_layouts = .false.
logical, public :: opt_local_copy
logical, public :: intmom_sub
logical, public :: intspec_sub
logical, public :: local_field_solve
logical, private :: accel_lxyes
logical, private :: lambda_local
logical, private :: unbalanced_xxf
logical, private :: unbalanced_yxf
integer, private :: nproc_e_lo
integer, private :: nproc_g_lo
integer, private :: nproc_le_lo
integer, private :: nproc_lz_lo
integer, private :: nproc_xxf_lo
integer, private :: nproc_yxf_lo
real, private :: max_unbalanced_xxf
real, private :: max_unbalanced_yxf
character(len=5), public :: layout
character(len=run_name_size), public :: fft_wisdom_file
logical, public :: fft_use_wisdom
logical, public :: fft_measure_plan
logical, private :: exist
logical, public :: simple_gf_decomposition
logical, public :: gf_local_fields
type(g_layout_type), public :: g_lo
type(le_layout_type), public :: le_lo
type(gf_layout_type), public :: gf_lo

layout for fields_gf_local and gf_lo integration

type(p_layout_type), public :: p_lo
type(f_layout_type), public, dimension(:), allocatable :: f_lo
type(jf_layout_type), public :: jf_lo
type(lz_layout_type), public :: lz_lo
type(e_layout_type), public :: e_lo
type(xxf_layout_type), public :: xxf_lo
type(yxf_layout_type), public :: yxf_lo
type(accel_layout_type), public :: accel_lo
type(accelx_layout_type), public :: accelx_lo
type(layouts_config_type), private :: layouts_config

Interfaces

public interface ij_idx

  • private function ij_idx_f(lo, ig, if, n)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(f_layout_type), intent(in) :: lo
    integer, intent(in) :: ig
    integer, intent(in) :: if
    integer, intent(in) :: n

    Return Value integer

  • private function ij_idx_jf(lo, ig, if, ik, it)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(jf_layout_type), intent(in) :: lo
    integer, intent(in) :: ig
    integer, intent(in) :: if
    integer, intent(in) :: ik
    integer, intent(in) :: it

    Return Value integer

public interface im_idx

  • private function im_idx_f(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(f_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

public interface in_idx

  • private function in_idx_f(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(f_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

public interface ifield_idx

  • private function ifield_idx_f(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(f_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private function ifield_idx_jf(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(jf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

public interface if_idx

  • private function if_idx_f(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(f_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private function if_idx_jf(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(jf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

public interface ig_idx

  • private elemental function ig_idx_lz(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(lz_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function ig_idx_e(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(e_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function ig_idx_le(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(le_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function ig_idx_xxf(lo, i)

    Return the theta index, given xxf-layout and a global index

    Arguments

    Type IntentOptional Attributes Name
    type(xxf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function ig_idx_yxf(lo, i)

    Return the theta index, given yxf-layout and a global index of a point on this proc

    Arguments

    Type IntentOptional Attributes Name
    type(yxf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private function ig_idx_f(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(f_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private function ig_idx_jf(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(jf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

public interface ik_idx

  • private elemental function ik_idx_g(lo, i)

    Return the ky index, given g-layout and a global index

    Arguments

    Type IntentOptional Attributes Name
    type(g_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private function ik_idx_jf(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(jf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function ik_idx_lz(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(lz_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function ik_idx_e(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(e_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function ik_idx_le(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(le_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function ik_idx_gf(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(gf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function ik_idx_xxf(lo, i)

    Return the ky index, given xxf-layout and a global index

    Arguments

    Type IntentOptional Attributes Name
    type(xxf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function ik_idx_accel(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(accel_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function ik_idx_accelx(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(accelx_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function ik_idx_parity(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(p_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private function ik_idx_f(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(f_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

public interface it_idx

  • private elemental function it_idx_g(lo, i)

    Return the kx index, given g-layout and a global index

    Arguments

    Type IntentOptional Attributes Name
    type(g_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private function it_idx_jf(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(jf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function it_idx_lz(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(lz_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function it_idx_e(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(e_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function it_idx_le(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(le_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function it_idx_gf(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(gf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function it_idx_yxf(lo, i)

    Return the kx index, given yxf-layout and a global index

    Arguments

    Type IntentOptional Attributes Name
    type(yxf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function it_idx_accel(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(accel_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function it_idx_accelx(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(accelx_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private function it_idx_f(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(f_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

public interface il_idx

  • private elemental function il_idx_g(lo, i)

    Return the lambda index, given g-layout and a global index

    Arguments

    Type IntentOptional Attributes Name
    type(g_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function il_idx_e(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(e_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function il_idx_xxf(lo, i)

    Return the lambda index, given xxf-layout and a global index

    Arguments

    Type IntentOptional Attributes Name
    type(xxf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function il_idx_yxf(lo, i)

    Return the lambda index, given yxf-layout and a global index

    Arguments

    Type IntentOptional Attributes Name
    type(yxf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function il_idx_accelx(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(accelx_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function il_idx_parity(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(p_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

public interface ie_idx

  • private elemental function ie_idx_g(lo, i)

    Return the energy index, given g-layout and a global index

    Arguments

    Type IntentOptional Attributes Name
    type(g_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function ie_idx_lz(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(lz_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function ie_idx_xxf(lo, i)

    Return the energy index, given xxf-layout and a global index

    Arguments

    Type IntentOptional Attributes Name
    type(xxf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function ie_idx_yxf(lo, i)

    Return the energy index, given yxf-layout and a global index

    Arguments

    Type IntentOptional Attributes Name
    type(yxf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function ie_idx_accelx(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(accelx_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function ie_idx_parity(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(p_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

public interface is_idx

  • private elemental function is_idx_g(lo, i)

    Return the species index, given g-layout and a global index

    Arguments

    Type IntentOptional Attributes Name
    type(g_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function is_idx_lz(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(lz_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function is_idx_e(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(e_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function is_idx_le(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(le_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function is_idx_xxf(lo, i)

    Return the species index, given xxf-layout and a global index

    Arguments

    Type IntentOptional Attributes Name
    type(xxf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function is_idx_yxf(lo, i)

    Return the species index, given yxf-layout and a global index

    Arguments

    Type IntentOptional Attributes Name
    type(yxf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function is_idx_accelx(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(accelx_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function is_idx_parity(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(p_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

public interface isign_idx

  • private elemental function isign_idx_xxf(lo, i)

    Return the sign index, given xxf-layout and a global index

    Arguments

    Type IntentOptional Attributes Name
    type(xxf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function isign_idx_yxf(lo, i)

    Return the sign index, given yxf-layout and a global index

    Arguments

    Type IntentOptional Attributes Name
    type(yxf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function isign_idx_e(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(e_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

public interface proc_id

  • private elemental function proc_id_g(lo, i)

    Return the processor id that has the point i in the g_lo layout

    Arguments

    Type IntentOptional Attributes Name
    type(g_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private function proc_id_f(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(f_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private function proc_id_jf(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(jf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function proc_id_lz(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(lz_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function proc_id_e(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(e_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function proc_id_le(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(le_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function proc_id_gf(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(gf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function proc_id_xxf(lo, i)

    Return the processor id that has the point i in the xxf_lo layout

    Arguments

    Type IntentOptional Attributes Name
    type(xxf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function proc_id_yxf(lo, i)

    Return the processor id that has the point i in the yxf_lo layout

    Arguments

    Type IntentOptional Attributes Name
    type(yxf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function proc_id_accelx(lo, i)

    Arguments

    Type IntentOptional Attributes Name
    type(accelx_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

  • private elemental function proc_id_parity(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(p_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value integer

public interface idx

  • private elemental function idx_g(lo, ik, it, il, ie, is)

    Return the global index in the g_lo layout given the dimensional indices

    Arguments

    Type IntentOptional Attributes Name
    type(g_layout_type), intent(in) :: lo
    integer, intent(in) :: ik
    integer, intent(in) :: it
    integer, intent(in) :: il
    integer, intent(in) :: ie
    integer, intent(in) :: is

    Return Value integer

  • private function idx_f(lo, if, im)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(f_layout_type), intent(in) :: lo
    integer, intent(in) :: if
    integer, intent(in) :: im

    Return Value integer

  • private function idx_jf(lo, if, ik, it)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(jf_layout_type), intent(in) :: lo
    integer, intent(in) :: if
    integer, intent(in) :: ik
    integer, intent(in) :: it

    Return Value integer

  • private elemental function idx_lz(lo, ig, ik, it, ie, is)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(lz_layout_type), intent(in) :: lo
    integer, intent(in) :: ig
    integer, intent(in) :: ik
    integer, intent(in) :: it
    integer, intent(in) :: ie
    integer, intent(in) :: is

    Return Value integer

  • private elemental function idx_e(lo, ig, isign, ik, it, il, is)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(e_layout_type), intent(in) :: lo
    integer, intent(in) :: ig
    integer, intent(in) :: isign
    integer, intent(in) :: ik
    integer, intent(in) :: it
    integer, intent(in) :: il
    integer, intent(in) :: is

    Return Value integer

  • private elemental function idx_le(lo, ig, ik, it, is)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(le_layout_type), intent(in) :: lo
    integer, intent(in) :: ig
    integer, intent(in) :: ik
    integer, intent(in) :: it
    integer, intent(in) :: is

    Return Value integer

  • private elemental function idx_gf(lo, ik, it)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(gf_layout_type), intent(in) :: lo
    integer, intent(in) :: ik
    integer, intent(in) :: it

    Return Value integer

  • private elemental function idx_xxf(lo, ig, isign, ik, il, ie, is)

    Return the global index in the xxf_lo layout given the dimensional indices

    Arguments

    Type IntentOptional Attributes Name
    type(xxf_layout_type), intent(in) :: lo
    integer, intent(in) :: ig
    integer, intent(in) :: isign
    integer, intent(in) :: ik
    integer, intent(in) :: il
    integer, intent(in) :: ie
    integer, intent(in) :: is

    Return Value integer

  • private elemental function idx_yxf(lo, ig, isign, it, il, ie, is)

    Return the global index in the yxf_lo layout given the dimensional indices

    Arguments

    Type IntentOptional Attributes Name
    type(yxf_layout_type), intent(in) :: lo
    integer, intent(in) :: ig
    integer, intent(in) :: isign
    integer, intent(in) :: it
    integer, intent(in) :: il
    integer, intent(in) :: ie
    integer, intent(in) :: is

    Return Value integer

  • private elemental function idx_accelx(lo, ik, it, il, ie, is)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(accelx_layout_type), intent(in) :: lo
    integer, intent(in) :: ik
    integer, intent(in) :: it
    integer, intent(in) :: il
    integer, intent(in) :: ie
    integer, intent(in) :: is

    Return Value integer

  • private elemental function idx_parity(lo, ik, il, ie, is)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(p_layout_type), intent(in) :: lo
    integer, intent(in) :: ik
    integer, intent(in) :: il
    integer, intent(in) :: ie
    integer, intent(in) :: is

    Return Value integer

public interface idx_local

  • private elemental function idx_local_g(lo, ik, it, il, ie, is)

    Return whether a point is local to a processor given the dimensional indices

    Arguments

    Type IntentOptional Attributes Name
    type(g_layout_type), intent(in) :: lo
    integer, intent(in) :: ik
    integer, intent(in) :: it
    integer, intent(in) :: il
    integer, intent(in) :: ie
    integer, intent(in) :: is

    Return Value logical

  • private elemental function ig_local_g(lo, ig)

    Return whether a point is local to a processor given the global index

    Arguments

    Type IntentOptional Attributes Name
    type(g_layout_type), intent(in) :: lo
    integer, intent(in) :: ig

    Return Value logical

  • private function idx_local_f(lo, if, im)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(f_layout_type), intent(in) :: lo
    integer, intent(in) :: if
    integer, intent(in) :: im

    Return Value logical

  • private function ig_local_f(lo, ig)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(f_layout_type), intent(in) :: lo
    integer, intent(in) :: ig

    Return Value logical

  • private function idx_local_jf(lo, if, ik, it)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(jf_layout_type), intent(in) :: lo
    integer, intent(in) :: if
    integer, intent(in) :: ik
    integer, intent(in) :: it

    Return Value logical

  • private function ig_local_jf(lo, ig)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(jf_layout_type), intent(in) :: lo
    integer, intent(in) :: ig

    Return Value logical

  • private elemental function idx_local_lz(lo, ig, ik, it, ie, is)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(lz_layout_type), intent(in) :: lo
    integer, intent(in) :: ig
    integer, intent(in) :: ik
    integer, intent(in) :: it
    integer, intent(in) :: ie
    integer, intent(in) :: is

    Return Value logical

  • private elemental function ig_local_lz(lo, ig)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(lz_layout_type), intent(in) :: lo
    integer, intent(in) :: ig

    Return Value logical

  • private elemental function idx_local_e(lo, ig, isign, ik, it, il, is)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(e_layout_type), intent(in) :: lo
    integer, intent(in) :: ig
    integer, intent(in) :: isign
    integer, intent(in) :: ik
    integer, intent(in) :: it
    integer, intent(in) :: il
    integer, intent(in) :: is

    Return Value logical

  • private elemental function ig_local_e(lo, ig)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(e_layout_type), intent(in) :: lo
    integer, intent(in) :: ig

    Return Value logical

  • private elemental function idx_local_le(lo, ig, ik, it, is)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(le_layout_type), intent(in) :: lo
    integer, intent(in) :: ig
    integer, intent(in) :: ik
    integer, intent(in) :: it
    integer, intent(in) :: is

    Return Value logical

  • private elemental function ig_local_le(lo, ig)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(le_layout_type), intent(in) :: lo
    integer, intent(in) :: ig

    Return Value logical

  • private elemental function idx_local_gf(lo, ik, it)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(gf_layout_type), intent(in) :: lo
    integer, intent(in) :: ik
    integer, intent(in) :: it

    Return Value logical

  • private elemental function ig_local_gf(lo, ig)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(gf_layout_type), intent(in) :: lo
    integer, intent(in) :: ig

    Return Value logical

  • private elemental function idx_local_xxf(lo, ig, isign, ik, il, ie, is)

    Return whether a point is local to a processor given the dimensional indices

    Arguments

    Type IntentOptional Attributes Name
    type(xxf_layout_type), intent(in) :: lo
    integer, intent(in) :: ig
    integer, intent(in) :: isign
    integer, intent(in) :: ik
    integer, intent(in) :: il
    integer, intent(in) :: ie
    integer, intent(in) :: is

    Return Value logical

  • private elemental function ig_local_xxf(lo, i)

    Return whether a point is local to a processor given the global index

    Arguments

    Type IntentOptional Attributes Name
    type(xxf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value logical

  • private elemental function idx_local_yxf(lo, ig, isign, it, il, ie, is)

    Return whether a point is local to a processor given the dimensional indices

    Arguments

    Type IntentOptional Attributes Name
    type(yxf_layout_type), intent(in) :: lo
    integer, intent(in) :: ig
    integer, intent(in) :: isign
    integer, intent(in) :: it
    integer, intent(in) :: il
    integer, intent(in) :: ie
    integer, intent(in) :: is

    Return Value logical

  • private elemental function ig_local_yxf(lo, i)

    Return whether a point is local to a processor given the global index

    Arguments

    Type IntentOptional Attributes Name
    type(yxf_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value logical

  • private elemental function idx_local_accelx(lo, ik, it, il, ie, is)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(accelx_layout_type), intent(in) :: lo
    integer, intent(in) :: ik
    integer, intent(in) :: it
    integer, intent(in) :: il
    integer, intent(in) :: ie
    integer, intent(in) :: is

    Return Value logical

  • private elemental function ig_local_accelx(lo, i)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(accelx_layout_type), intent(in) :: lo
    integer, intent(in) :: i

    Return Value logical

  • private elemental function idx_local_parity(lo, ik, il, ie, is)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(p_layout_type), intent(in) :: lo
    integer, intent(in) :: ik
    integer, intent(in) :: il
    integer, intent(in) :: ie
    integer, intent(in) :: is

    Return Value logical

  • private elemental function ig_local_parity(lo, ip)

    FIXME : Add documentation

    Arguments

    Type IntentOptional Attributes Name
    type(p_layout_type), intent(in) :: lo
    integer, intent(in) :: ip

    Return Value logical

private interface set_dimension_order

  • private subroutine set_dimension_order_g(lo, it_ord, ik_ord, il_ord, ie_ord, is_ord)

    Sets the order of x y l e s in g_lo

    Arguments

    Type IntentOptional Attributes Name
    type(g_layout_type), intent(inout) :: lo
    integer, intent(in) :: it_ord
    integer, intent(in) :: ik_ord
    integer, intent(in) :: il_ord
    integer, intent(in) :: ie_ord
    integer, intent(in) :: is_ord
  • private subroutine set_dimension_order_le(lo, ig_ord, it_ord, ik_ord, is_ord)

    Sets the order of x y th s in le_lo

    Arguments

    Type IntentOptional Attributes Name
    type(le_layout_type), intent(inout) :: lo
    integer, intent(in) :: ig_ord
    integer, intent(in) :: it_ord
    integer, intent(in) :: ik_ord
    integer, intent(in) :: is_ord
  • private subroutine set_dimension_order_lz(lo, ig_ord, it_ord, ik_ord, ie_ord, is_ord)

    Sets the order of x y e th s in lz_lo

    Arguments

    Type IntentOptional Attributes Name
    type(lz_layout_type), intent(inout) :: lo
    integer, intent(in) :: ig_ord
    integer, intent(in) :: it_ord
    integer, intent(in) :: ik_ord
    integer, intent(in) :: ie_ord
    integer, intent(in) :: is_ord
  • private subroutine set_dimension_order_e(lo, ig_ord, isgn_ord, it_ord, ik_ord, il_ord, is_ord)

    Sets the order of th sgn x y l s in e_lo

    Arguments

    Type IntentOptional Attributes Name
    type(e_layout_type), intent(inout) :: lo
    integer, intent(in) :: ig_ord
    integer, intent(in) :: isgn_ord
    integer, intent(in) :: it_ord
    integer, intent(in) :: ik_ord
    integer, intent(in) :: il_ord
    integer, intent(in) :: is_ord
  • private subroutine set_dimension_order_xxf(lo, ik_ord, ig_ord, isgn_ord, il_ord, ie_ord, is_ord)

    Sets the order of y th sgn l e s in xxf_lo Note: usually the order is y, theta, sign, then "les" in the order they appear in the g_lo layout

    Arguments

    Type IntentOptional Attributes Name
    type(xxf_layout_type), intent(inout) :: lo
    integer, intent(in) :: ik_ord
    integer, intent(in) :: ig_ord
    integer, intent(in) :: isgn_ord
    integer, intent(in) :: il_ord
    integer, intent(in) :: ie_ord
    integer, intent(in) :: is_ord
  • private subroutine set_dimension_order_yxf(lo, it_ord, ig_ord, isgn_ord, il_ord, ie_ord, is_ord)

    Sets the order of x th sgn l e s in yxf_lo Note: usually the order is x, theta, sign, then "les" in the order they appear in the g_lo layout

    Arguments

    Type IntentOptional Attributes Name
    type(yxf_layout_type), intent(inout) :: lo
    integer, intent(in) :: it_ord
    integer, intent(in) :: ig_ord
    integer, intent(in) :: isgn_ord
    integer, intent(in) :: il_ord
    integer, intent(in) :: ie_ord
    integer, intent(in) :: is_ord

Derived Types

type, public ::  f_layout_type

FIXME : Add documentation

Components

Type Visibility Attributes Name Initial
integer, public :: iproc
integer, public :: nproc
integer, public :: nidx
integer, public :: nfield
integer, public :: ntgrid
integer, public :: nindex
integer, public :: naky
integer, public :: ntheta0
integer, public :: M_class
integer, public :: N_class
integer, public :: i_class
integer, public :: llim_world
integer, public :: ulim_world
integer, public :: llim_proc
integer, public :: ulim_proc
integer, public :: ulim_alloc
integer, public :: blocksize
integer, public, dimension(:,:), pointer :: ik => null()
integer, public, dimension(:,:), pointer :: it => null()

type, public ::  jf_layout_type

FIXME : Add documentation

Components

Type Visibility Attributes Name Initial
integer, public :: iproc
integer, public :: nproc
integer, public :: nindex
integer, public :: naky
integer, public :: ntheta0
integer, public :: ntgrid
integer, public :: nfield
integer, public :: llim_world
integer, public :: ulim_world
integer, public :: llim_proc
integer, public :: ulim_proc
integer, public :: ulim_alloc
integer, public :: blocksize
integer, public :: ig_min
integer, public :: ig_max
integer, public :: ifield_min
integer, public :: ifield_max
integer, public :: it_min
integer, public :: it_max
integer, public :: ik_min
integer, public :: ik_max
integer, public, dimension(:), allocatable :: ij
integer, public, dimension(:), allocatable :: mj
integer, public, dimension(:,:), allocatable :: dj

type, public, extends(abstract_config_type) ::  layouts_config_type

Used to represent the input configuration of layouts

Components

Type Visibility Attributes Name Initial
logical, public :: exist = .false.

Does the related namelist exist in the target input file?

integer, public :: index = 0

Used to hold the specific index of numbered namelists

logical, public :: skip_read = .false.

Do we want to skip the read step in init?

logical, public :: skip_broadcast = .false.

Do we want to skip the broadcast step in init?

logical, public :: fft_measure_plan = .false.

If false then fftw will use heuristics to determine the best fft plan. If true then timing measurements will be made to determine an optimal plan. When true it can take somewhat longer to initialise the fft plans.

Read more…
logical, public :: fft_use_wisdom = .true.

Try to load and save wisdom about fftw plans to fft_wisdom_file. This can speed up the fft initialisation when running new cases with the same grid sizes as previous runs.

character(len=run_name_size), public :: fft_wisdom_file = 'default'

Location of fftw wisdom file, if left as default, this is set to run_name//'.fftw_wisdom', unless overriden by the environment variable GK_FFTW3_WISDOM. If set to anything other than default, overrides GK_FFTW3_WISDOM.

logical, public :: gf_local_fields = .false.

If true then perform initial decomposition setup related to the gf_local field approach, setting up the gf_lo decomposition. This is forced to false if the number of processors is less than naky * ntheta0. See also the field_option input of fields_knobs.

logical, public :: intmom_sub = .false.

When set to true use sub-communicators in the velocity space integration routines associated with taking moments of the distribution function. The sub-communicator involves all processors with a given xys part of the domain (i.e. the same range in theta0, ky and species dimensions). As such this is forced to false if one or more of these three dimensions are not split "nicely" (typically meaning if we're not using an appropriate sweetspot). Can provide a small performance improvement when true in certain cases.

Read more…
logical, public :: intspec_sub = .false.

When set to true use sub-communicators in the velocity space integration routines associated with taking species summed moments of the distribution function. The sub-communicator involves all processors with a given xy part of the domain (i.e. the same range in theta0 and ky dimensions). As such this is forced to false if one or more of these two dimensions are not split "nicely" (typically meaning if we're not using an appropriate sweetspot). Can provide a small performance improvement when true in certain cases.

character(len=5), public :: layout = 'lxyes'

This string determines how the distributed dimensions (k)x, (k)y, l(ambda), e(nergy) and s(pecies) are laid out in (global) memory. The rightmost dimensions are parallelised first, with the leftmost dimension being most local. This can strongly impact performance and the sweetspots suggested by ingen.

Read more…
logical, public :: local_field_solve = .false.

Can strongly affect initialization time on some parallel computers. Recommendation: Set true on computers with slow communication networks. It's probably worth trying changing this on your favourite machine to see how much difference it makes for you.

Read more…
real, public :: max_unbalanced_xxf = 0.0

Sets maximum allowable fractional imbalance between the two different blocksizes used in the xxf_lo decomposition used in the nonlinear term calculation if unbalanced_xxf is true. See Adrian Jackson's DCSE report for more details.

real, public :: max_unbalanced_yxf = 0.0

Sets maximum allowable fractional imbalance between the two different blocksizes used in the yxf_lo decomposition used in the nonlinear term calculation if unbalanced_yxf is true. See Adrian Jackson's DCSE report for more details.

integer, public :: nproc_e_lo = 0

The number of processors to use in e_lo layout. Capped to number of processors in comm world. If not set (<=0) defaults to global nproc.

integer, public :: nproc_g_lo = 0

The number of processors to use in g_lo layout. Capped to number of processors in comm world. If not set (<=0) defaults to global nproc.

integer, public :: nproc_le_lo = 0

The number of processors to use in le_lo layout. Capped to number of processors in comm world. If not set (<=0) defaults to global nproc.

integer, public :: nproc_lz_lo = 0

The number of processors to use in lz_lo layout. Capped to number of processors in comm world. If not set (<=0) defaults to global nproc.

integer, public :: nproc_xxf_lo = 0

The number of processors to use in xxf_lo layout. Capped to number of processors in comm world. If not set (<=0) defaults to global nproc.

integer, public :: nproc_yxf_lo = 0

The number of processors to use in yxf_lo layout. Capped to number of processors in comm world. If not set (<=0) defaults to global nproc.

logical, public :: opt_local_copy = .false.

Setting to true enables optimising redistribute code, used in FFTs for evaluating nonlinear terms, that avoids indirect addressing. This can introduces worthwhile savings in nonlinear GS2 simulations at lower core counts. See Adrian Jackson's DCSE report for more details.

logical, public :: opt_redist_nbk = .true.

Set to true to use non-blocking communications in the redistribute routines. This is generally more performant but has been observed to be slower in one or two rare cases.

logical, public :: opt_redist_persist = .false.

Set to true to use persistent (non-blocking) communications in the redistribute routines. Requires opt_redist_nbk to be true. Can help improve scaling efficiency at large core counts.

logical, public :: opt_redist_persist_overlap = .false.

Set to true to try to overlap the mpi and local parts of the gather/scatter routines. Should only be used with opt_redist_persist. This is typically not seen to have any impact on performance. See optimising your runs for more details.

logical, public :: simple_gf_decomposition = .true.

When in gf_lo, if there are fewer points than processors , then assign the points to the first and leave the rest of the processors empty

logical, public :: unbalanced_xxf = .false.

Setting to true allows GS2 to adopt a more flexible domain decomposition of the xxf data decomposition (used in nonlinear FFTs). By default GS2 allocates each 1 task with the same uniform blocksize in xxf_lo, one task may have a smaller block of data, and other tasks may be empty. There is no attempt to keep both x and y as local as possible, and sometimes large 1 data transfers are required to map from xxf to yxf and vice-versa during FFTs. With unbalanced_xxf = .true., two slightly different blocksizes are chosen in order to keep both x and y as local as possible, and avoid this potentially large 1 communication overhead. The level of imbalance is limited by max_unbalanced_xxf.

Read more…
logical, public :: unbalanced_yxf = .false.

Setting to true allows GS2 to adopt a more flexible domain decomposition of the yxf data decomposition (used in nonlinear FFTs). By default GS2 allocates each 1 task with the same uniform blocksize in yxf_lo, one task may have a smaller block of data, and other tasks may be empty. There is no attempt to keep both x and y as local as possible, and sometimes large 1 data transfers are required to map from xxf to yxf and vice-versa during FFTs. With unbalanced_yxf = .true., two slightly different blocksizes are chosen in order to keep both x and y as local as possible, and avoid this potentially large 1 communication overhead. The level of imbalance is limited by max_unbalanced_yxf.

Read more…

Type-Bound Procedures

procedure , public , :: is_initialised => is_initialised_generic Function
procedure , public , :: init => init_generic Subroutine
procedure , public , :: setup => setup_generic Subroutine
procedure , public , :: write_namelist_header Subroutine
procedure , public , :: get_name => get_name_generic Function
procedure , public , :: get_requires_index => get_requires_index_generic Function
procedure , public , nopass :: write_namelist_footer Subroutine
generic, public , :: write_key_val => write_key_val_string, write_key_val_real, write_key_val_complex, write_key_val_integer, write_key_val_logical, write_key_val_real_array, write_key_val_complex_array, write_key_val_integer_array
procedure , public :: read => read_layouts_config Subroutine
procedure , public :: write => write_layouts_config Subroutine
procedure , public :: reset => reset_layouts_config Subroutine
procedure , public :: broadcast => broadcast_layouts_config Subroutine
procedure , public , nopass :: get_default_name => get_default_name_layouts_config Function
procedure , public , nopass :: get_default_requires_index => get_default_requires_index_layouts_config Function

Functions

private elemental function handle_processor_request(nproc_in, upper_limit) result(nproc)

Handle nproc values outside valid range (i.e. <= 0 or > nproc_total). Values outside of this range are replaced with nproc_total

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nproc_in
integer, intent(in) :: upper_limit

Return Value integer

private function setup_dist_fn_layouts(ntgrid, naky, ntheta0, nlambda, negrid, nspec, nproc, iproc) result(g_lo)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Distribution function layouts !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Setup a g_layout (g_lo) type data decomposition object describing the work decomposition for a problem with passed grid sizes running on nproc. Returns the values for the processor with rank iproc. Note this involves collective 1 routines so requires all processors on comm world to take part. This does not require the input nproc to match the nproc of the world communicator.

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ntgrid
integer, intent(in) :: naky
integer, intent(in) :: ntheta0
integer, intent(in) :: nlambda
integer, intent(in) :: negrid
integer, intent(in) :: nspec
integer, intent(in) :: nproc
integer, intent(in) :: iproc

Return Value type(g_layout_type)

private elemental function is_idx_g(lo, i)

Return the species index, given g-layout and a global index

Arguments

Type IntentOptional Attributes Name
type(g_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function il_idx_g(lo, i)

Return the lambda index, given g-layout and a global index

Arguments

Type IntentOptional Attributes Name
type(g_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function ie_idx_g(lo, i)

Return the energy index, given g-layout and a global index

Arguments

Type IntentOptional Attributes Name
type(g_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function it_idx_g(lo, i)

Return the kx index, given g-layout and a global index

Arguments

Type IntentOptional Attributes Name
type(g_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function ik_idx_g(lo, i)

Return the ky index, given g-layout and a global index

Arguments

Type IntentOptional Attributes Name
type(g_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function proc_id_g(lo, i)

Return the processor id that has the point i in the g_lo layout

Arguments

Type IntentOptional Attributes Name
type(g_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function idx_g(lo, ik, it, il, ie, is)

Return the global index in the g_lo layout given the dimensional indices

Arguments

Type IntentOptional Attributes Name
type(g_layout_type), intent(in) :: lo
integer, intent(in) :: ik
integer, intent(in) :: it
integer, intent(in) :: il
integer, intent(in) :: ie
integer, intent(in) :: is

Return Value integer

private elemental function idx_local_g(lo, ik, it, il, ie, is)

Return whether a point is local to a processor given the dimensional indices

Arguments

Type IntentOptional Attributes Name
type(g_layout_type), intent(in) :: lo
integer, intent(in) :: ik
integer, intent(in) :: it
integer, intent(in) :: il
integer, intent(in) :: ie
integer, intent(in) :: is

Return Value logical

private elemental function ig_local_g(lo, ig)

Return whether a point is local to a processor given the global index

Arguments

Type IntentOptional Attributes Name
type(g_layout_type), intent(in) :: lo
integer, intent(in) :: ig

Return Value logical

private function setup_fields_layouts(nfield, nindex, naky, ntheta0, M_class, N_class, i_class, nproc, iproc) result(f_lo)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Field layouts !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! M_class(i) = number of i_th supercell N_class(i) = size of i_th supercell i_class = number of classes of (different sized) supercells.
Construct a fields layout instance

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nfield
integer, intent(in) :: nindex
integer, intent(in) :: naky
integer, intent(in) :: ntheta0
integer, intent(in), dimension(:) :: M_class
integer, intent(in), dimension(:) :: N_class
integer, intent(in) :: i_class
integer, intent(in) :: nproc
integer, intent(in) :: iproc

Return Value type(f_layout_type), dimension(:), allocatable

private function ik_idx_f(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(f_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private function it_idx_f(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(f_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private function im_idx_f(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(f_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private function if_idx_f(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(f_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private function idx_f(lo, if, im)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(f_layout_type), intent(in) :: lo
integer, intent(in) :: if
integer, intent(in) :: im

Return Value integer

private function proc_id_f(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(f_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private function idx_local_f(lo, if, im)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(f_layout_type), intent(in) :: lo
integer, intent(in) :: if
integer, intent(in) :: im

Return Value logical

private function ig_local_f(lo, ig)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(f_layout_type), intent(in) :: lo
integer, intent(in) :: ig

Return Value logical

private function in_idx_f(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(f_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private function ig_idx_f(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(f_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private function ij_idx_f(lo, ig, if, n)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(f_layout_type), intent(in) :: lo
integer, intent(in) :: ig
integer, intent(in) :: if
integer, intent(in) :: n

Return Value integer

private function ifield_idx_f(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(f_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private function setup_jfields_layouts(nfield, nindex, naky, ntheta0, i_class, nproc, iproc) result(jf_lo)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Fast field layouts !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Construct a jfields instance

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nfield
integer, intent(in) :: nindex
integer, intent(in) :: naky
integer, intent(in) :: ntheta0
integer, intent(in) :: i_class
integer, intent(in) :: nproc
integer, intent(in) :: iproc

Return Value type(jf_layout_type)

private function ik_idx_jf(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(jf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private function it_idx_jf(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(jf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private function if_idx_jf(lo, i)

FIXME : Add documentation

Read more…

Arguments

Type IntentOptional Attributes Name
type(jf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private function ig_idx_jf(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(jf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private function ifield_idx_jf(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(jf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private function idx_jf(lo, if, ik, it)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(jf_layout_type), intent(in) :: lo
integer, intent(in) :: if
integer, intent(in) :: ik
integer, intent(in) :: it

Return Value integer

private function ij_idx_jf(lo, ig, if, ik, it)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(jf_layout_type), intent(in) :: lo
integer, intent(in) :: ig
integer, intent(in) :: if
integer, intent(in) :: ik
integer, intent(in) :: it

Return Value integer

private function proc_id_jf(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(jf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private function idx_local_jf(lo, if, ik, it)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(jf_layout_type), intent(in) :: lo
integer, intent(in) :: if
integer, intent(in) :: ik
integer, intent(in) :: it

Return Value logical

private function ig_local_jf(lo, ig)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(jf_layout_type), intent(in) :: lo
integer, intent(in) :: ig

Return Value logical

private function setup_le_layouts(ntgrid, naky, ntheta0, nspec, nproc, iproc) result(le_lo)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Lambda-Energy layouts !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Construct a le_layout_type instance.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ntgrid
integer, intent(in) :: naky
integer, intent(in) :: ntheta0
integer, intent(in) :: nspec
integer, intent(in) :: nproc
integer, intent(in) :: iproc

Return Value type(le_layout_type)

private elemental function is_idx_le(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(le_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function it_idx_le(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(le_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function ik_idx_le(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(le_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function ig_idx_le(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(le_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function idx_le(lo, ig, ik, it, is)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(le_layout_type), intent(in) :: lo
integer, intent(in) :: ig
integer, intent(in) :: ik
integer, intent(in) :: it
integer, intent(in) :: is

Return Value integer

private elemental function proc_id_le(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(le_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function idx_local_le(lo, ig, ik, it, is)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(le_layout_type), intent(in) :: lo
integer, intent(in) :: ig
integer, intent(in) :: ik
integer, intent(in) :: it
integer, intent(in) :: is

Return Value logical

private elemental function ig_local_le(lo, ig)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(le_layout_type), intent(in) :: lo
integer, intent(in) :: ig

Return Value logical

private function setup_gf_layouts(ntgrid, naky, ntheta0, negrid, nlambda, nspec, nproc, iproc) result(gf_lo)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Fields Local layout: This is used to calculate velocity space integration and other fields related calculations on a restricted process count for large core count simulations. It takes naky and ntheta and distributed that amongst theta so that a single naky,ntheta point is only owned by a single process. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Construct a gf_layout_type instance.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ntgrid
integer, intent(in) :: naky
integer, intent(in) :: ntheta0
integer, intent(in) :: negrid
integer, intent(in) :: nlambda
integer, intent(in) :: nspec
integer, intent(in) :: nproc
integer, intent(in) :: iproc

Return Value type(gf_layout_type)

private elemental function it_idx_gf(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(gf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function ik_idx_gf(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(gf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function idx_gf(lo, ik, it)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(gf_layout_type), intent(in) :: lo
integer, intent(in) :: ik
integer, intent(in) :: it

Return Value integer

private elemental function proc_id_gf(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(gf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function idx_local_gf(lo, ik, it)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(gf_layout_type), intent(in) :: lo
integer, intent(in) :: ik
integer, intent(in) :: it

Return Value logical

private elemental function ig_local_gf(lo, ig)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(gf_layout_type), intent(in) :: lo
integer, intent(in) :: ig

Return Value logical

private function setup_energy_layouts(ntgrid, naky, ntheta0, nlambda, nspec, nproc, iproc) result(e_lo)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Energy layouts !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Construct an energy layout instance.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ntgrid
integer, intent(in) :: naky
integer, intent(in) :: ntheta0
integer, intent(in) :: nlambda
integer, intent(in) :: nspec
integer, intent(in) :: nproc
integer, intent(in) :: iproc

Return Value type(e_layout_type)

private elemental function is_idx_e(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(e_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function il_idx_e(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(e_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function isign_idx_e(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(e_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function it_idx_e(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(e_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function ik_idx_e(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(e_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function ig_idx_e(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(e_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function idx_e(lo, ig, isign, ik, it, il, is)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(e_layout_type), intent(in) :: lo
integer, intent(in) :: ig
integer, intent(in) :: isign
integer, intent(in) :: ik
integer, intent(in) :: it
integer, intent(in) :: il
integer, intent(in) :: is

Return Value integer

private elemental function proc_id_e(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(e_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function idx_local_e(lo, ig, isign, ik, it, il, is)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(e_layout_type), intent(in) :: lo
integer, intent(in) :: ig
integer, intent(in) :: isign
integer, intent(in) :: ik
integer, intent(in) :: it
integer, intent(in) :: il
integer, intent(in) :: is

Return Value logical

private elemental function ig_local_e(lo, ig)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(e_layout_type), intent(in) :: lo
integer, intent(in) :: ig

Return Value logical

private function setup_lambda_layouts(ntgrid, naky, ntheta0, nlambda, negrid, nspec, ng2, nproc, iproc) result(lz_lo)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Lambda layouts !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Construct a lambda layout instance

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ntgrid
integer, intent(in) :: naky
integer, intent(in) :: ntheta0
integer, intent(in) :: nlambda
integer, intent(in) :: negrid
integer, intent(in) :: nspec
integer, intent(in) :: ng2
integer, intent(in) :: nproc
integer, intent(in) :: iproc

Return Value type(lz_layout_type)

private elemental function is_idx_lz(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(lz_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function ie_idx_lz(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(lz_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function it_idx_lz(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(lz_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function ik_idx_lz(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(lz_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function ig_idx_lz(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(lz_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function idx_lz(lo, ig, ik, it, ie, is)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(lz_layout_type), intent(in) :: lo
integer, intent(in) :: ig
integer, intent(in) :: ik
integer, intent(in) :: it
integer, intent(in) :: ie
integer, intent(in) :: is

Return Value integer

private elemental function proc_id_lz(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(lz_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function idx_local_lz(lo, ig, ik, it, ie, is)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(lz_layout_type), intent(in) :: lo
integer, intent(in) :: ig
integer, intent(in) :: ik
integer, intent(in) :: it
integer, intent(in) :: ie
integer, intent(in) :: is

Return Value logical

private elemental function ig_local_lz(lo, ig)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(lz_layout_type), intent(in) :: lo
integer, intent(in) :: ig

Return Value logical

private function setup_parity_layouts(naky, nlambda, negrid, nspec, nproc, iproc) result(p_lo)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! layouts for parity diagnostic !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Construct a parity layout instance.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: naky
integer, intent(in) :: nlambda
integer, intent(in) :: negrid
integer, intent(in) :: nspec
integer, intent(in) :: nproc
integer, intent(in) :: iproc

Return Value type(p_layout_type)

private elemental function idx_parity(lo, ik, il, ie, is)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(p_layout_type), intent(in) :: lo
integer, intent(in) :: ik
integer, intent(in) :: il
integer, intent(in) :: ie
integer, intent(in) :: is

Return Value integer

private elemental function idx_local_parity(lo, ik, il, ie, is)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(p_layout_type), intent(in) :: lo
integer, intent(in) :: ik
integer, intent(in) :: il
integer, intent(in) :: ie
integer, intent(in) :: is

Return Value logical

private elemental function ig_local_parity(lo, ip)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(p_layout_type), intent(in) :: lo
integer, intent(in) :: ip

Return Value logical

private elemental function proc_id_parity(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(p_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function ik_idx_parity(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(p_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function is_idx_parity(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(p_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function il_idx_parity(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(p_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function ie_idx_parity(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(p_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private function setup_x_transform_layouts(ntgrid, naky, ntheta0, nlambda, negrid, nspec, nx, nproc, iproc) result(xxf_lo)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! X-space layouts !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Construct an xxf_lo instance.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ntgrid
integer, intent(in) :: naky
integer, intent(in) :: ntheta0
integer, intent(in) :: nlambda
integer, intent(in) :: negrid
integer, intent(in) :: nspec
integer, intent(in) :: nx
integer, intent(in) :: nproc
integer, intent(in) :: iproc

Return Value type(xxf_layout_type)

private elemental function is_idx_xxf(lo, i)

Return the species index, given xxf-layout and a global index

Arguments

Type IntentOptional Attributes Name
type(xxf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function ie_idx_xxf(lo, i)

Return the energy index, given xxf-layout and a global index

Arguments

Type IntentOptional Attributes Name
type(xxf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function il_idx_xxf(lo, i)

Return the lambda index, given xxf-layout and a global index

Arguments

Type IntentOptional Attributes Name
type(xxf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function isign_idx_xxf(lo, i)

Return the sign index, given xxf-layout and a global index

Arguments

Type IntentOptional Attributes Name
type(xxf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function ig_idx_xxf(lo, i)

Return the theta index, given xxf-layout and a global index

Arguments

Type IntentOptional Attributes Name
type(xxf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function ik_idx_xxf(lo, i)

Return the ky index, given xxf-layout and a global index

Arguments

Type IntentOptional Attributes Name
type(xxf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function idx_xxf(lo, ig, isign, ik, il, ie, is)

Return the global index in the xxf_lo layout given the dimensional indices

Arguments

Type IntentOptional Attributes Name
type(xxf_layout_type), intent(in) :: lo
integer, intent(in) :: ig
integer, intent(in) :: isign
integer, intent(in) :: ik
integer, intent(in) :: il
integer, intent(in) :: ie
integer, intent(in) :: is

Return Value integer

private elemental function proc_id_xxf(lo, i)

Return the processor id that has the point i in the xxf_lo layout

Arguments

Type IntentOptional Attributes Name
type(xxf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function idx_local_xxf(lo, ig, isign, ik, il, ie, is)

Return whether a point is local to a processor given the dimensional indices

Arguments

Type IntentOptional Attributes Name
type(xxf_layout_type), intent(in) :: lo
integer, intent(in) :: ig
integer, intent(in) :: isign
integer, intent(in) :: ik
integer, intent(in) :: il
integer, intent(in) :: ie
integer, intent(in) :: is

Return Value logical

private elemental function ig_local_xxf(lo, i)

Return whether a point is local to a processor given the global index

Arguments

Type IntentOptional Attributes Name
type(xxf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value logical

private function setup_y_transform_layouts(ntgrid, naky, ntheta0, nlambda, negrid, nspec, nx, ny, nproc, iproc) result(yxf_lo)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Y-space layouts !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Construct a yxf_lo instance.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ntgrid
integer, intent(in) :: naky
integer, intent(in) :: ntheta0
integer, intent(in) :: nlambda
integer, intent(in) :: negrid
integer, intent(in) :: nspec
integer, intent(in) :: nx
integer, intent(in) :: ny
integer, intent(in) :: nproc
integer, intent(in) :: iproc

Return Value type(yxf_layout_type)

private elemental function is_idx_yxf(lo, i)

Return the species index, given yxf-layout and a global index

Arguments

Type IntentOptional Attributes Name
type(yxf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function ie_idx_yxf(lo, i)

Return the energy index, given yxf-layout and a global index

Arguments

Type IntentOptional Attributes Name
type(yxf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function il_idx_yxf(lo, i)

Return the lambda index, given yxf-layout and a global index

Arguments

Type IntentOptional Attributes Name
type(yxf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function isign_idx_yxf(lo, i)

Return the sign index, given yxf-layout and a global index

Arguments

Type IntentOptional Attributes Name
type(yxf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function ig_idx_yxf(lo, i)

Return the theta index, given yxf-layout and a global index of a point on this proc

Arguments

Type IntentOptional Attributes Name
type(yxf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function it_idx_yxf(lo, i)

Return the kx index, given yxf-layout and a global index

Arguments

Type IntentOptional Attributes Name
type(yxf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function idx_accelx(lo, ik, it, il, ie, is)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(accelx_layout_type), intent(in) :: lo
integer, intent(in) :: ik
integer, intent(in) :: it
integer, intent(in) :: il
integer, intent(in) :: ie
integer, intent(in) :: is

Return Value integer

private elemental function idx_yxf(lo, ig, isign, it, il, ie, is)

Return the global index in the yxf_lo layout given the dimensional indices

Arguments

Type IntentOptional Attributes Name
type(yxf_layout_type), intent(in) :: lo
integer, intent(in) :: ig
integer, intent(in) :: isign
integer, intent(in) :: it
integer, intent(in) :: il
integer, intent(in) :: ie
integer, intent(in) :: is

Return Value integer

private elemental function proc_id_accelx(lo, i)

Arguments

Type IntentOptional Attributes Name
type(accelx_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function proc_id_yxf(lo, i)

Return the processor id that has the point i in the yxf_lo layout

Arguments

Type IntentOptional Attributes Name
type(yxf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function idx_local_accelx(lo, ik, it, il, ie, is)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(accelx_layout_type), intent(in) :: lo
integer, intent(in) :: ik
integer, intent(in) :: it
integer, intent(in) :: il
integer, intent(in) :: ie
integer, intent(in) :: is

Return Value logical

private elemental function ig_local_accelx(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(accelx_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value logical

private elemental function idx_local_yxf(lo, ig, isign, it, il, ie, is)

Return whether a point is local to a processor given the dimensional indices

Arguments

Type IntentOptional Attributes Name
type(yxf_layout_type), intent(in) :: lo
integer, intent(in) :: ig
integer, intent(in) :: isign
integer, intent(in) :: it
integer, intent(in) :: il
integer, intent(in) :: ie
integer, intent(in) :: is

Return Value logical

private elemental function ig_local_yxf(lo, i)

Return whether a point is local to a processor given the global index

Arguments

Type IntentOptional Attributes Name
type(yxf_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value logical

private function setup_accelx_transform_layouts(ntgrid, naky, ntheta0, nlambda, negrid, nspec, nx, ny, nproc, iproc) result(accelx_lo)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Accelerated FFTW3 layouts !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Construct an accelx layout instance

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ntgrid
integer, intent(in) :: naky
integer, intent(in) :: ntheta0
integer, intent(in) :: nlambda
integer, intent(in) :: negrid
integer, intent(in) :: nspec
integer, intent(in) :: nx
integer, intent(in) :: ny
integer, intent(in) :: nproc
integer, intent(in) :: iproc

Return Value type(accelx_layout_type)

private function setup_accel_transform_layouts(ntgrid, naky, ntheta0, nlambda, negrid, nspec, nx, ny, nproc, iproc) result(accel_lo)

Construct an accel layout instance

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ntgrid
integer, intent(in) :: naky
integer, intent(in) :: ntheta0
integer, intent(in) :: nlambda
integer, intent(in) :: negrid
integer, intent(in) :: nspec
integer, intent(in) :: nx
integer, intent(in) :: ny
integer, intent(in) :: nproc
integer, intent(in) :: iproc

Return Value type(accel_layout_type)

private elemental function is_idx_accelx(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(accelx_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function ie_idx_accelx(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(accelx_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function il_idx_accelx(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(accelx_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function it_idx_accelx(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(accelx_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function ik_idx_accelx(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(accelx_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function it_idx_accel(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(accel_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

private elemental function ik_idx_accel(lo, i)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(accel_layout_type), intent(in) :: lo
integer, intent(in) :: i

Return Value integer

public elemental function dealiasing(lo, ia)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(accel_layout_type), intent(in) :: lo
integer, intent(in) :: ia

Return Value logical

public function get_gs2_layouts_config()

Get the module level config instance

Arguments

None

Return Value type(layouts_config_type)

Gets the default name for this namelist

Arguments

None

Return Value character(len=CONFIG_MAX_NAME_LEN)

Gets the default requires index for this namelist

Arguments

None

Return Value logical


Subroutines

public subroutine wnml_gs2_layouts(unit)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: unit

public subroutine init_gs2_layouts(layouts_config_in)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(layouts_config_type), intent(in), optional :: layouts_config_in

public subroutine finish_gs2_layouts()

FIXME : Add documentation

Arguments

None

private subroutine read_parameters(layouts_config_in)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(layouts_config_type), intent(in), optional :: layouts_config_in

public subroutine set_overrides(opt_ov)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(optimisations_overrides_type), intent(in) :: opt_ov

private subroutine ensure_redist_persist_consistency(opt_redist_nbk, opt_redist_persist, opt_redist_persist_overlap)

Disable opt_redist_persist and opt_redist_persist_overlap if dependent settings not set

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: opt_redist_nbk
logical, intent(inout) :: opt_redist_persist
logical, intent(inout) :: opt_redist_persist_overlap

private subroutine get_wisdom_file(wisdom_file)

Set the fft_wisdom_file based on the value set in the namelist (if any) and the value in the GK_FFTW3_WISDOM environment variable

Read more…

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(inout) :: wisdom_file

private subroutine check_accel(ntheta0, naky, nlambda, negrid, nspec, nblock)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ntheta0
integer, intent(in) :: naky
integer, intent(in) :: nlambda
integer, intent(in) :: negrid
integer, intent(in) :: nspec
integer, intent(out) :: nblock

private subroutine check_llocal(ntheta0, naky, nlambda, negrid, nspec)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ntheta0
integer, intent(in) :: naky
integer, intent(in) :: nlambda
integer, intent(in) :: negrid
integer, intent(in) :: nspec

public subroutine init_dist_fn_layouts(ntgrid, naky, ntheta0, nlambda, negrid, nspec, nproc, iproc)

Construct the work decomposition for the g_layout and store it in the module level g_lo instance.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ntgrid
integer, intent(in) :: naky
integer, intent(in) :: ntheta0
integer, intent(in) :: nlambda
integer, intent(in) :: negrid
integer, intent(in) :: nspec
integer, intent(in) :: nproc
integer, intent(in) :: iproc

public subroutine init_fields_layouts(nfield, nindex, naky, ntheta0, M_class, N_class, i_class, nproc, iproc)

Construct the module level fields_layout instance

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nfield
integer, intent(in) :: nindex
integer, intent(in) :: naky
integer, intent(in) :: ntheta0
integer, intent(in), dimension(:) :: M_class
integer, intent(in), dimension(:) :: N_class
integer, intent(in) :: i_class
integer, intent(in) :: nproc
integer, intent(in) :: iproc

public subroutine finish_fields_layouts()

FIXME : Add documentation

Arguments

None

public subroutine finish_layouts()

FIXME : Add documentation

Read more…

Arguments

None

public subroutine finish_dist_fn_layouts()

FIXME : Add documentation

Arguments

None

public subroutine init_jfields_layouts(nfield, nindex, naky, ntheta0, i_class, nproc, iproc)

Setup the module level jfields instance

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nfield
integer, intent(in) :: nindex
integer, intent(in) :: naky
integer, intent(in) :: ntheta0
integer, intent(in) :: i_class
integer, intent(in) :: nproc
integer, intent(in) :: iproc

public subroutine finish_jfields_layouts()

FIXME : Add documentation

Arguments

None

public subroutine init_le_layouts(ntgrid, naky, ntheta0, nspec, nproc, iproc)

Setup the module level le_lo

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ntgrid
integer, intent(in) :: naky
integer, intent(in) :: ntheta0
integer, intent(in) :: nspec
integer, intent(in) :: nproc
integer, intent(in) :: iproc

public subroutine init_gf_layouts(ntgrid, naky, ntheta0, negrid, nlambda, nspec, nproc, iproc)

Setup the module level gf_lo instance.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ntgrid
integer, intent(in) :: naky
integer, intent(in) :: ntheta0
integer, intent(in) :: negrid
integer, intent(in) :: nlambda
integer, intent(in) :: nspec
integer, intent(in) :: nproc
integer, intent(in) :: iproc

public subroutine init_energy_layouts(ntgrid, naky, ntheta0, nlambda, nspec, nproc, iproc)

Setup the module level energy layout.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ntgrid
integer, intent(in) :: naky
integer, intent(in) :: ntheta0
integer, intent(in) :: nlambda
integer, intent(in) :: nspec
integer, intent(in) :: nproc
integer, intent(in) :: iproc

public subroutine init_lambda_layouts(ntgrid, naky, ntheta0, nlambda, negrid, nspec, ng2, nproc, iproc)

Setup the module level lz_lo instance

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ntgrid
integer, intent(in) :: naky
integer, intent(in) :: ntheta0
integer, intent(in) :: nlambda
integer, intent(in) :: negrid
integer, intent(in) :: nspec
integer, intent(in) :: ng2
integer, intent(in) :: nproc
integer, intent(in) :: iproc

public subroutine init_parity_layouts(naky, nlambda, negrid, nspec, nproc, iproc)

Setup the module level p_lo instance

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: naky
integer, intent(in) :: nlambda
integer, intent(in) :: negrid
integer, intent(in) :: nspec
integer, intent(in) :: nproc
integer, intent(in) :: iproc

public subroutine init_x_transform_layouts(ntgrid, naky, ntheta0, nlambda, negrid, nspec, nx, nproc, iproc)

Setup the module level xxf_lo instance

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ntgrid
integer, intent(in) :: naky
integer, intent(in) :: ntheta0
integer, intent(in) :: nlambda
integer, intent(in) :: negrid
integer, intent(in) :: nspec
integer, intent(in) :: nx
integer, intent(in) :: nproc
integer, intent(in) :: iproc

public subroutine calculate_unbalanced_x(nproc, iproc, unbalanced_amount)

This subroutine (calculate_unbalanced_x) wraps up all the functionality required to calculate the xxf blocksizes and work out if and unbalanced decomposition should be used, and if so the size of the unbalanced blocks.

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nproc
integer, intent(in) :: iproc
real, intent(out) :: unbalanced_amount

private subroutine calculate_block_breakdown(k, i, m, j, level_proc_num)

This subroutine (calculate_block_breakdown) is used in the code to create unbalanced xxf and yxf layouts to address 1 communication overheads in the redistribution of data for the FFTs used in the nonlinear calculations to move from Fourier space to real space and back again.

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: k
integer, intent(out) :: i
integer, intent(out) :: m
integer, intent(out) :: j
integer, intent(in) :: level_proc_num

private subroutine calculate_unbalanced_decomposition(k, j, i, numsmall, numlarge, localprocs)

This subroutine (calculate_unbalanced_decomposition) is used in the code to create unbalanced xxf and yxf layouts to address 1 communication overheads in the redistribution of data for the FFTs used in the nonlinear calculations to move from Fourier space to real space and back again.

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: k
integer, intent(out) :: j
integer, intent(out) :: i
integer, intent(out) :: numsmall
integer, intent(out) :: numlarge
integer, intent(in) :: localprocs

private subroutine calculate_block_size(iproc, numsmall, numlarge, smalldecomp, largedecomp, sizeblock, blocksize, smallblocksize, largeblocksize, block_multiple, llim, ulim, ulim_alloc)

This subroutine (calculate_block_size) is used in the code to create unbalanced xxf and yxf layouts to address 1 communication overheads in the redistribution of data for the FFTs used in the nonlinear calculations to move from Fourier space to real space and back again.

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: iproc
integer, intent(in) :: numsmall
integer, intent(in) :: numlarge
integer, intent(in) :: smalldecomp
integer, intent(in) :: largedecomp
integer, intent(in) :: sizeblock
integer, intent(out) :: blocksize
integer, intent(out) :: smallblocksize
integer, intent(out) :: largeblocksize
integer, intent(out) :: block_multiple
integer, intent(out) :: llim
integer, intent(out) :: ulim
integer, intent(out) :: ulim_alloc

public subroutine calculate_idle_processes(nprocs, idle_percentage)

This subroutine (calculate_idle_processes) is used to calculate the difference between the number of processes used in the xxf and yxf data layouts. This is important as it can affect the amount of communication that the code has to undertake when moving between linear and non-linear calculations.

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nprocs
real, intent(out) :: idle_percentage

public subroutine init_y_transform_layouts(ntgrid, naky, ntheta0, nlambda, negrid, nspec, nx, ny, nproc, iproc)

Setup the module level yxf_lo instance.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ntgrid
integer, intent(in) :: naky
integer, intent(in) :: ntheta0
integer, intent(in) :: nlambda
integer, intent(in) :: negrid
integer, intent(in) :: nspec
integer, intent(in) :: nx
integer, intent(in) :: ny
integer, intent(in) :: nproc
integer, intent(in) :: iproc

public subroutine calculate_unbalanced_y(nproc, iproc, unbalanced_amount)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nproc
integer, intent(in) :: iproc
real, intent(out) :: unbalanced_amount

public subroutine init_accel_transform_layouts(ntgrid, naky, ntheta0, nlambda, negrid, nspec, nx, ny, nproc, iproc)

Setup the module level accelx_lo and accel_lo instances

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ntgrid
integer, intent(in) :: naky
integer, intent(in) :: ntheta0
integer, intent(in) :: nlambda
integer, intent(in) :: negrid
integer, intent(in) :: nspec
integer, intent(in) :: nx
integer, intent(in) :: ny
integer, intent(in) :: nproc
integer, intent(in) :: iproc

public elemental subroutine gidx2xxfidx(ig, isign, iglo, g_lo, xxf_lo, it, ixxf)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Transformation subroutines !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ig
integer, intent(in) :: isign
integer, intent(in) :: iglo
type(g_layout_type), intent(in) :: g_lo
type(xxf_layout_type), intent(in) :: xxf_lo
integer, intent(out) :: it
integer, intent(out) :: ixxf

public elemental subroutine xxfidx2yxfidx(it, ixxf, xxf_lo, yxf_lo, ik, iyxf)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: it
integer, intent(in) :: ixxf
type(xxf_layout_type), intent(in) :: xxf_lo
type(yxf_layout_type), intent(in) :: yxf_lo
integer, intent(out) :: ik
integer, intent(out) :: iyxf

public subroutine pe_layout(char)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(out) :: char

public subroutine factors(n, j, div)

Get the factors of an integer n

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n

The number to factorize

integer, intent(out) :: j

The number of factors

integer, intent(out), dimension (:) :: div

Array containing the j factors of n

private subroutine set_dimension_order_g(lo, it_ord, ik_ord, il_ord, ie_ord, is_ord)

Sets the order of x y l e s in g_lo

Arguments

Type IntentOptional Attributes Name
type(g_layout_type), intent(inout) :: lo
integer, intent(in) :: it_ord
integer, intent(in) :: ik_ord
integer, intent(in) :: il_ord
integer, intent(in) :: ie_ord
integer, intent(in) :: is_ord

private subroutine set_dimension_order_le(lo, ig_ord, it_ord, ik_ord, is_ord)

Sets the order of x y th s in le_lo

Arguments

Type IntentOptional Attributes Name
type(le_layout_type), intent(inout) :: lo
integer, intent(in) :: ig_ord
integer, intent(in) :: it_ord
integer, intent(in) :: ik_ord
integer, intent(in) :: is_ord

private subroutine set_dimension_order_lz(lo, ig_ord, it_ord, ik_ord, ie_ord, is_ord)

Sets the order of x y e th s in lz_lo

Arguments

Type IntentOptional Attributes Name
type(lz_layout_type), intent(inout) :: lo
integer, intent(in) :: ig_ord
integer, intent(in) :: it_ord
integer, intent(in) :: ik_ord
integer, intent(in) :: ie_ord
integer, intent(in) :: is_ord

private subroutine set_dimension_order_e(lo, ig_ord, isgn_ord, it_ord, ik_ord, il_ord, is_ord)

Sets the order of th sgn x y l s in e_lo

Arguments

Type IntentOptional Attributes Name
type(e_layout_type), intent(inout) :: lo
integer, intent(in) :: ig_ord
integer, intent(in) :: isgn_ord
integer, intent(in) :: it_ord
integer, intent(in) :: ik_ord
integer, intent(in) :: il_ord
integer, intent(in) :: is_ord

private subroutine set_dimension_order_xxf(lo, ik_ord, ig_ord, isgn_ord, il_ord, ie_ord, is_ord)

Sets the order of y th sgn l e s in xxf_lo Note: usually the order is y, theta, sign, then "les" in the order they appear in the g_lo layout

Arguments

Type IntentOptional Attributes Name
type(xxf_layout_type), intent(inout) :: lo
integer, intent(in) :: ik_ord
integer, intent(in) :: ig_ord
integer, intent(in) :: isgn_ord
integer, intent(in) :: il_ord
integer, intent(in) :: ie_ord
integer, intent(in) :: is_ord

private subroutine set_dimension_order_yxf(lo, it_ord, ig_ord, isgn_ord, il_ord, ie_ord, is_ord)

Sets the order of x th sgn l e s in yxf_lo Note: usually the order is x, theta, sign, then "les" in the order they appear in the g_lo layout

Arguments

Type IntentOptional Attributes Name
type(yxf_layout_type), intent(inout) :: lo
integer, intent(in) :: it_ord
integer, intent(in) :: ig_ord
integer, intent(in) :: isgn_ord
integer, intent(in) :: il_ord
integer, intent(in) :: ie_ord
integer, intent(in) :: is_ord

private subroutine check_unique_integers(array, message)

Checks that the given array contains unique integers 1 to (array size) (in any order), aborts if not.

Arguments

Type IntentOptional Attributes Name
integer, intent(inout), dimension(:) :: array

Dimension of input

character(len=*), intent(in) :: message

Error message

public subroutine set_gs2_layouts_config(gs2_layouts_config_in)

Set the module level config type Will abort if the module has already been initialised to avoid inconsistencies.

Arguments

Type IntentOptional Attributes Name
type(layouts_config_type), intent(in), optional :: gs2_layouts_config_in

private subroutine read_layouts_config(self)

Reads in the layouts_knobs namelist and populates the member variables

Arguments

Type IntentOptional Attributes Name
class(layouts_config_type), intent(inout) :: self

private subroutine write_layouts_config(self, unit)

Writes out a namelist representing the current state of the config object

Arguments

Type IntentOptional Attributes Name
class(layouts_config_type), intent(in) :: self
integer, intent(in), optional :: unit

private subroutine reset_layouts_config(self)

Resets the config object to the initial empty state

Arguments

Type IntentOptional Attributes Name
class(layouts_config_type), intent(inout) :: self

private subroutine broadcast_layouts_config(self)

Broadcasts all config parameters so object is populated identically on all processors

Arguments

Type IntentOptional Attributes Name
class(layouts_config_type), intent(inout) :: self