g_layout_type Derived Type

type, public :: g_layout_type

FIXME : Add documentation


Contents

Source Code


Components

Type Visibility Attributes Name Initial
integer, public :: iproc
integer, public :: nproc
integer, public :: naky
integer, public :: ntheta0
integer, public :: nlambda
integer, public :: negrid
integer, public :: nspec
integer, public :: ntgrid
integer, public :: ntgridtotal
integer, public :: llim_world

DD>

integer, public :: ulim_world

DD>

integer, public :: llim_proc

DD>

integer, public :: ulim_proc

DD>

integer, public :: ulim_alloc

DD>

integer, public :: blocksize

DD>

integer, public :: ik_ord
integer, public :: it_ord
integer, public :: il_ord
integer, public :: ie_ord
integer, public :: is_ord
integer, public :: ik_comp
integer, public :: it_comp
integer, public :: il_comp
integer, public :: ie_comp
integer, public :: is_comp
integer, public, dimension(5) :: compound_count
integer, public, dimension(5) :: dim_size
integer, public :: d1_min
integer, public :: d1_max
integer, public :: d2_min
integer, public :: d2_max
integer, public :: d3_min
integer, public :: d3_max
integer, public :: d4_min
integer, public :: d4_max
integer, public :: d5_min
integer, public :: d5_max
integer, public :: ik_min
integer, public :: ik_max
integer, public :: it_min
integer, public :: it_max
integer, public :: il_min
integer, public :: il_max
integer, public :: ie_min
integer, public :: ie_max
integer, public :: is_min
integer, public :: is_max
integer, public :: xyblock_comm
integer, public :: xysblock_comm
integer, public :: lesblock_comm
integer, public, dimension(:,:), allocatable :: les_kxky_range
type(ikitprocs), public, dimension(:,:), allocatable :: ikit_procs_assignment
integer, public :: ikitrange
integer, public :: max_ikit_nprocs
type(ikit), public, dimension(:), allocatable :: local_ikit_points
logical, public :: x_before_y
logical, public :: x_local
logical, public :: y_local
logical, public :: l_local
logical, public :: e_local
logical, public :: s_local
integer, public :: ppn
integer, public :: llim_node
integer, public :: ulim_node
integer, public :: nnd
integer, public :: bpn
integer, public, allocatable :: proc_map(:)

Source Code

  type :: g_layout_type
     integer :: iproc, nproc
     integer :: naky, ntheta0, nlambda, negrid, nspec, ntgrid, ntgridtotal
     integer :: llim_world, ulim_world, llim_proc, ulim_proc, ulim_alloc, blocksize
     !<DD>
     !    For branchless index lookup routines
     integer :: ik_ord, it_ord, il_ord, ie_ord, is_ord
     integer :: ik_comp, it_comp, il_comp, ie_comp, is_comp
     integer,dimension(5) :: compound_count, dim_size
     !    For replacing loops over iglo with 5 separate loops
     !    This is not currently implemented, but involves replacing "do iglo=...." with
     !    EQUIVALENCE(dind(1),d1),(dind(2),d2).... !Note this is just a short hand for storing currently d values in an array
     !    ik=>dind(g_lo%ik_ord) !This is a pointer assignment, so that whatever layout we use ik points to the correct d value
     !    do d5=d5_min,d5max ; do d4=d4_min,d4_max ...
     integer :: d1_min,d1_max,d2_min,d2_max,d3_min,d3_max
     integer :: d4_min,d4_max,d5_min,d5_max
     !    Used in deciding colour for sub-communicator creation.
     !    Also used to select slices of array to take part in sub-comm global reductions
     !    (in order to reduce message size by avoiding regions of arrays outside this procs domain)
     integer :: ik_min, ik_max, it_min, it_max, il_min, il_max, ie_min, ie_max, is_min, is_max
     integer :: xyblock_comm !Sub comms for xy blocks (i.e. l-e-s integrals)
     integer :: xysblock_comm !Sub comms for xys blocks (i.e. l-e integrals)
     integer :: lesblock_comm !Sub comms for les blocks (i.e. x-y integrals)
     integer,dimension(:,:),allocatable :: les_kxky_range !Used in integrate species, holds start and stop indices for flattened kxky dimension
     type(ikitprocs),dimension(:,:),allocatable :: ikit_procs_assignment !Used to record processes that have been assigned specific it ik points in g
     integer :: ikitrange
     integer :: max_ikit_nprocs ! Used to record the largest proc_list size for all the ikitprocs points.  This is useful for setting the size of non-blocking request arrays for communications
     type(ikit),dimension(:),allocatable :: local_ikit_points
     logical :: x_before_y !Information about layout order
     logical :: x_local, y_local, l_local, e_local, s_local !Used to record if various dimensions are entirely local
     ! shm data
     integer :: ppn, llim_node, ulim_node
     ! Only used during setup so could be moved to the init routine
     integer :: nnd, bpn
     integer, allocatable :: proc_map(:) ! llimit on all ranks
  end type g_layout_type