buds  0.1
FORTRAN reference counted types
Modules | Data Types | Functions/Subroutines | Variables

Detailed Description

integer(selected_int_kind(18)) data type

Collaboration diagram for Integer (long):

Modules

module  bud_ldist1d
 

Data Types

type  ldist1d
 bud variable More...
 
type  ldist1d_
 bud container for the distributions More...
 
interface  get_comm
 Query communicator of the distribution. More...
 
interface  get_commp
 Query pointer to communicator of the distribution. More...
 
interface  get_group
 Query group of the distribution. More...
 
interface  get_groupp
 Query pointer to group of the distribution. More...
 
interface  get_p
 Query ID for current processor in distribution. More...
 
interface  get_pp
 Query pointer to the ID for current processor in distribution. More...
 
interface  get_np
 Query number of processors in distribution. More...
 
interface  get_npp
 Query pointer to the number of processors in distribution. More...
 
interface  size_block
 Query block-size (if DIST_BLOCK_?) More...
 
interface  get_blocksize
 Query block-size (if DIST_BLOCK_?) More...
 
interface  attach
 Attach/Query several quantities at once. More...
 
interface  is_dist
 Assert the distribution type. More...
 
interface  is_comm
 Query whether a communicator is associated. More...
 
interface  dtype
 Query the distribution type. More...
 
interface  new
 Create a new object. More...
 
interface  new_ldist1d
 Create a new object. More...
 
interface  newfake
 Create a new object which is "fake". More...
 
interface  size_local
 Query number of elements on this node. More...
 
interface  size_global
 Query number of total elements. More...
 
interface  size
 Query number of total elements. More...
 
interface  local2global
 Query global index from a local index. More...
 
interface  global2local
 Query local index from a global index. More...
 
interface  global2p
 Query number of elements on this node. More...
 
interface  fake_sub
 Create a fake distribution on non-participating processors in a sub. More...
 
interface  sub1_root
 Query root processor and number of processors in one sub distribution. More...
 
interface  sub1_root_np
 Query root processor and number of processors in one sub distribution. More...
 
interface  sub1_ranks
 Retrieve the ranks of a sub distribution within a top-level distribution. More...
 
interface  subn_groups
 Query subset information from multiple subsets simultaneously. More...
 
interface  get_mpierr
 Query error of previous MPI calls. More...
 
interface  print
 Print information about the bud. More...
 
interface  assignment(=)
 Assignment of bud to another bud. More...
 
interface  initialize
 Initialization of data container. More...
 
interface  is_initialized
 Query whether bud is associated with any data. More...
 
interface  initialized
 See interface is_initialized More...
 
interface  is_initd
 See interface is_initialized More...
 
interface  is_same
 Check whether two buds point to the same data (function) More...
 
interface  same
 See interface #is_same More...
 
interface  delete
 Deletes the bud by decreasing references to the underlying data. More...
 
interface  nullify
 Nullifies the current bud. More...
 
interface  references
 Query number of references to the bud. More...
 
interface  refs
 See interface #references More...
 

Functions/Subroutines

procedure, public delete => delete_
 See interface delete More...
 
procedure, public nullify => nullify_
 See interface nullify More...
 
procedure, public initialize => initialize_
 See interface initialize More...
 
procedure, public is_initialized => is_initialized_
 See interface is_initialized More...
 
procedure, public is_initd => is_initialized_
 See interface is_initialized More...
 
procedure, public initialized => is_initialized_
 See interface is_initialized More...
 
procedure, public is_same => is_same_
 See interface is_same More...
 
procedure, public same => is_same_
 See interface is_same More...
 
procedure, public references => references_
 See interface references More...
 
procedure, public refs => references_
 See interface references More...
 
procedure, public print => print_
 See interface print More...
 
elemental integer(ii_) function comm_ (this)
 Query the associated communicator. More...
 
integer(ii_) function, pointer commp_ (this)
 Query the associated communicator. More...
 
elemental integer(ii_) function group_ (this)
 Query the associated group. More...
 
integer(ii_) function, pointer groupp_ (this)
 Query the associated group. More...
 
elemental integer(ii_) function p_ (this)
 Query the current processor ID in the communicator. More...
 
integer(ii_) function, pointer pp_ (this)
 Query pointer to the current processor ID in the communicator. More...
 
elemental integer(ii_) function np_ (this)
 Query the number of processors in the communicator. More...
 
integer(ii_) function, pointer npp_ (this)
 Query pointer to the number of processors in the communicator. More...
 
elemental integer(ii_) function blocksize_ (this)
 Query the block-size, -1 if non-block-cyclic. More...
 
elemental integer(ii_) function blocksize_ (this)
 Query the block-size, -1 if non-block-cyclic. More...
 
subroutine attach_ (this, D, P, NP, ng, Comm, Grp, BS, err)
 Query several contained quantities. More...
 
elemental logical function is_dist_ (this, dist)
 Assert the distribution type. More...
 
elemental logical function is_comm_ (this)
 Query whether a communicator is not MPI_COMM_NULL. More...
 
elemental integer(ii_) function dtype_ (this)
 Query distribution type used. More...
 
subroutine new_ (this, Comm)
 Basic routine for initializing a new distribution. More...
 
subroutine new_block_cyclic_ (this, Comm, bs, ng, dist)
 Create a new block cyclic distribution. More...
 
subroutine new_block_ (this, Comm, ng, dist)
 Create a new block distribution. More...
 
subroutine new_ (this, Comm)
 Basic routine for initializing a new distribution. More...
 
subroutine new_block_cyclic_ (this, Comm, bs, ng, dist)
 Create a new block cyclic distribution. More...
 
subroutine new_block_ (this, Comm, ng, dist)
 Create a new block distribution. More...
 
subroutine new_fake_block_cyclic_ (this, NP, BS, ng, dist)
 Create a new block cyclic distribution. More...
 
subroutine new_fake_block_ (this, NP, ng, dist)
 Create a new block distribution (non-cyclic) More...
 
elemental integer(il_) function size_local_default_ (this)
 
elemental integer(il_) function size_local_ng_ (this, ng)
 
elemental integer(ii_) function size_ (this)
 Query the default size of the distribution. More...
 
elemental integer(ii_) function size_ (this)
 Query the default size of the distribution. More...
 
elemental integer(il_) function l2g_default_ (this, il)
 
elemental integer(il_) function l2g_ng_ (this, il, ng)
 
elemental integer(il_) function g2l_default_ (this, ig)
 
elemental integer(il_) function g2l_ng_ (this, ig, ng)
 
elemental integer(il_) function g2p_default_ (this, ig)
 
elemental integer(il_) function g2p_ng_ (this, ig, ng)
 
subroutine fake_sub_ (set, sub)
 Convert a sub distribution to a fake distribution on non-sub processors. More...
 
subroutine fake_sub_explicit_ (set, sub, sub_root)
 Copy a distribution via a set communicator and "sub_root" node. More...
 
subroutine sub1_root_ (set, sub, sub_root)
 Retrieve common information about set/sub relationship. More...
 
subroutine sub1_root_np_ (set, sub, sub_root, sub_NP)
 Retrieve common information about set/sub relationship. More...
 
subroutine sub1_ranks_ (set, sub, rank)
 Retrieve a common rank array from a subset distribution. More...
 
subroutine subn_groups_ (set, sub, sub_root, Ng, groups)
 Retrieve common information about set/sub relationship for N subsets. More...
 
elemental integer(ii_) function get_mpierr_ (this)
 Function for retrieving the latest error messag. More...
 
subroutine print_ (this, info, indent)
 Print, to std-out, some basic information of the data-container. More...
 
subroutine assign_ (lhs, rhs)
 
subroutine initialize_ (this)
 
pure logical function is_initialized_ (this)
 
pure logical function is_initialized_ (this)
 
pure logical function is_initialized_ (this)
 
elemental logical function is_same_ (lhs, rhs)
 
elemental logical function is_same_ (lhs, rhs)
 
subroutine delete_ (this)
 
elemental subroutine nullify_ (this)
 
elemental integer function references_ (this)
 
elemental integer function references_ (this)
 
subroutine initialize_ (this)
 
pure logical function is_initialized_ (this)
 
elemental logical function is_same_ (lhs, rhs)
 
subroutine delete_ (this)
 
elemental subroutine nullify_ (this)
 
subroutine assign_ (lhs, rhs)
 
elemental integer function references_ (this)
 
subroutine, private delete_data (this)
 Internal routine for cleaning up the data container. More...
 
elemental integer(ii_) function comm_ (this)
 Query the associated communicator. More...
 
integer(ii_) function, pointer commp_ (this)
 Query the associated communicator. More...
 
elemental integer(ii_) function group_ (this)
 Query the associated group. More...
 
integer(ii_) function, pointer groupp_ (this)
 Query the associated group. More...
 
elemental integer(ii_) function p_ (this)
 Query the current processor ID in the communicator. More...
 
integer(ii_) function, pointer pp_ (this)
 Query pointer to the current processor ID in the communicator. More...
 
elemental integer(ii_) function np_ (this)
 Query the number of processors in the communicator. More...
 
integer(ii_) function, pointer npp_ (this)
 Query pointer to the number of processors in the communicator. More...
 
elemental integer(ii_) function size_ (this)
 Query the default size of the distribution. More...
 
elemental integer(ii_) function blocksize_ (this)
 Query the block-size, -1 if non-block-cyclic. More...
 
elemental logical function is_dist_ (this, dist)
 Assert the distribution type. More...
 
elemental integer(ii_) function dtype_ (this)
 Query distribution type used. More...
 
subroutine attach_ (this, D, P, NP, ng, Comm, Grp, BS, err)
 Query several contained quantities. More...
 
subroutine new_ (this, Comm)
 Basic routine for initializing a new distribution. More...
 
subroutine new_block_cyclic_ (this, Comm, bs, ng, dist)
 Create a new block cyclic distribution. More...
 
subroutine new_block_ (this, Comm, ng, dist)
 Create a new block distribution. More...
 
subroutine new_fake_block_cyclic_ (this, NP, BS, ng, dist)
 Create a new block cyclic distribution. More...
 
subroutine new_fake_block_ (this, NP, ng, dist)
 Create a new block distribution (non-cyclic) More...
 
elemental integer(il_) function size_local_default_ (this)
 
elemental integer(il_) function size_local_ng_ (this, ng)
 
elemental integer(il_) function l2g_default_ (this, il)
 
elemental integer(il_) function l2g_ng_ (this, il, ng)
 
elemental integer(il_) function g2l_default_ (this, ig)
 
elemental integer(il_) function g2l_ng_ (this, ig, ng)
 
elemental integer(il_) function g2p_default_ (this, ig)
 
elemental integer(il_) function g2p_ng_ (this, ig, ng)
 
elemental logical function is_comm_ (this)
 Query whether a communicator is not MPI_COMM_NULL. More...
 
subroutine fake_sub_ (set, sub)
 Convert a sub distribution to a fake distribution on non-sub processors. More...
 
subroutine fake_sub_explicit_ (set, sub, sub_root)
 Copy a distribution via a set communicator and "sub_root" node. More...
 
subroutine sub1_ranks_ (set, sub, rank)
 Retrieve a common rank array from a subset distribution. More...
 
subroutine sub1_root_ (set, sub, sub_root)
 Retrieve common information about set/sub relationship. More...
 
subroutine sub1_root_np_ (set, sub, sub_root, sub_NP)
 Retrieve common information about set/sub relationship. More...
 
subroutine subn_groups_ (set, sub, sub_root, Ng, groups)
 Retrieve common information about set/sub relationship for N subsets. More...
 
subroutine print_ (this, info, indent)
 Print, to std-out, some basic information of the data-container. More...
 

Variables

character(len=*), parameter, private bud_mod = "bud_" // "bud_lDist1D"
 Name of module. More...
 
character(len=*), parameter, private bud_type = "lDist1D"
 Name of bud in this module. More...
 
integer(ii_), parameter, public dist_none = 1
 Denote no distribution. More...
 
integer(ii_), parameter, public dist_block_cyclic_first = 2
 Block-cyclic distribution, remaining goes to first processor. More...
 
integer(ii_), parameter, public dist_block_cyclic = DIST_BLOCK_CYCLIC_FIRST
 Block-cyclic distribution, remaining goes to last processor. More...
 
integer(ii_), parameter, private dist_explicit = 4
 User defined distribution (DIST_EXPLICIT) More...
 
integer(ii_), parameter, public dist_block_first = 5
 A simple block-partitioning (remainder to first process) More...
 
integer(ii_), parameter, public dist_block_last = 6
 A simple block-partitioning (remainder to last process) More...
 
type(ldist1d_), pointer d => null()
 Stored pointer which contains the reference counting etc. More...
 
integer(ii_) err = MPI_SUCCESS
 Storage for MPI-error, allows external query. More...
 
integer(ii_) comm = MPI_Comm_Null
 The associated communicator. More...
 
integer(ii_) grp = MPI_Group_Null
 The group that encompass the equivalent communicator. More...
 
integer(ii_) p = 0
 The associated processor number. More...
 
integer(ii_) np = 1
 The number of processors in Comm More...
 
integer(ii_) dist = DIST_NONE
 The distribution type. More...
 
integer(il_) ng = -1
 Number of (total) elements in the distribution. More...
 
integer(ii_) bs = -1
 Block-size if BLOCK_CYCLIC distribution is used. More...
 
integer(il_), dimension(:), pointer, contiguous nl => null()
 Number of (local) elements in the distribution. More...
 
integer(il_), dimension(:), pointer, contiguous l2g => null()
 Local index to global index. More...
 
integer(il_), dimension(:), pointer, contiguous i2g => null()
 Global index to processor. More...
 

Function/Subroutine Documentation

subroutine assign_ ( class(ldist1d), intent(inout)  lhs,
class(ldist1d), intent(in)  rhs 
)
private
Parameters
[in,out]lhscontains rhs after exit
[in]rhscopy the containing element bud
subroutine bud_ldist1d::assign_ ( class(ldist1d), intent(inout)  lhs,
class(ldist1d), intent(in)  rhs 
)
private
Parameters
[in,out]lhscontains rhs after exit
[in]rhscopy the containing element bud
subroutine bud_ldist1d::attach_ ( class(ldist1d), intent(in)  this,
logical, intent(in), optional  D,
integer(ii_), intent(out), optional  P,
integer(ii_), intent(out), optional  NP,
integer(ii_), intent(out), optional  ng,
integer(ii_), intent(out), optional  Comm,
integer(ii_), intent(out), optional  Grp,
integer(ii_), intent(out), optional  BS,
integer(ii_), intent(out), optional  err 
)
private

Query several contained quantities.

subroutine attach_ ( class(ldist1d), intent(in)  this,
logical, intent(in), optional  D,
integer(ii_), intent(out), optional  P,
integer(ii_), intent(out), optional  NP,
integer(ii_), intent(out), optional  ng,
integer(ii_), intent(out), optional  Comm,
integer(ii_), intent(out), optional  Grp,
integer(ii_), intent(out), optional  BS,
integer(ii_), intent(out), optional  err 
)
private

Query several contained quantities.

elemental integer(ii_) function blocksize_ ( class(ldist1d), intent(in)  this)
private

Query the block-size, -1 if non-block-cyclic.

elemental integer(ii_) function blocksize_ ( class(ldist1d), intent(in)  this)
private

Query the block-size, -1 if non-block-cyclic.

elemental integer(ii_) function bud_ldist1d::blocksize_ ( class(ldist1d), intent(in)  this)
private

Query the block-size, -1 if non-block-cyclic.

elemental integer(ii_) function bud_ldist1d::comm_ ( class(ldist1d), intent(in)  this)
private

Query the associated communicator.

elemental integer(ii_) function comm_ ( class(ldist1d), intent(in)  this)
private

Query the associated communicator.

integer(ii_) function, pointer bud_ldist1d::commp_ ( class(ldist1d), intent(in)  this)
private

Query the associated communicator.

integer(ii_) function, pointer commp_ ( class(ldist1d), intent(in)  this)
private

Query the associated communicator.

procedure, public delete ( )

See interface delete

subroutine bud_ldist1d::delete_ ( class(ldist1d), intent(inout)  this)
private
Parameters
[in,out]thisreturned bud is un-initialized with no data associated

Here is the call graph for this function:

subroutine delete_ ( class(ldist1d), intent(inout)  this)
private
Parameters
[in,out]thisreturned bud is un-initialized with no data associated
subroutine, private bud_ldist1d::delete_data ( type(ldist1d_), intent(inout)  this)
private

Internal routine for cleaning up the data container.

Developer This routine is only used internally to clean-up any data in the type. Should never be made public.

Here is the caller graph for this function:

elemental integer(ii_) function bud_ldist1d::dtype_ ( class(ldist1d), intent(in)  this)
private

Query distribution type used.

elemental integer(ii_) function dtype_ ( class(ldist1d), intent(in)  this)
private

Query distribution type used.

subroutine fake_sub_ ( class(ldist1d), intent(inout)  set,
class(ldist1d), intent(inout)  sub 
)
private

Convert a sub distribution to a fake distribution on non-sub processors.

Enables to copy a distribution to a fake distribution via a common set-distribution and a common root. Note that root must be equivalent on all nodes.

subroutine bud_ldist1d::fake_sub_ ( class(ldist1d), intent(inout)  set,
class(ldist1d), intent(inout)  sub 
)
private

Convert a sub distribution to a fake distribution on non-sub processors.

Enables to copy a distribution to a fake distribution via a common set-distribution and a common root. Note that root must be equivalent on all nodes.

subroutine fake_sub_explicit_ ( class(ldist1d), intent(inout)  set,
class(ldist1d), intent(inout)  sub,
integer(ii_), intent(in)  sub_root 
)
private

Copy a distribution via a set communicator and "sub_root" node.

Enables to copy a distribution to a fake distribution via a common set-distribution and a common sub_root. Note that sub_root must be equivalent on all nodes.

A fake distribution allows one to use a common interface for determining the parent processor.

subroutine bud_ldist1d::fake_sub_explicit_ ( class(ldist1d), intent(inout)  set,
class(ldist1d), intent(inout)  sub,
integer(ii_), intent(in)  sub_root 
)
private

Copy a distribution via a set communicator and "sub_root" node.

Enables to copy a distribution to a fake distribution via a common set-distribution and a common sub_root. Note that sub_root must be equivalent on all nodes.

A fake distribution allows one to use a common interface for determining the parent processor.

elemental integer(il_) function g2l_default_ ( class(ldist1d), intent(in)  this,
integer(il_), intent(in)  ig 
)
private
elemental integer(il_) function bud_ldist1d::g2l_default_ ( class(ldist1d), intent(in)  this,
integer(il_), intent(in)  ig 
)
private
elemental integer(il_) function g2l_ng_ ( class(ldist1d), intent(in)  this,
integer(il_), intent(in)  ig,
integer(il_), intent(in)  ng 
)
private
elemental integer(il_) function bud_ldist1d::g2l_ng_ ( class(ldist1d), intent(in)  this,
integer(il_), intent(in)  ig,
integer(il_), intent(in)  ng 
)
private
elemental integer(il_) function g2p_default_ ( class(ldist1d), intent(in)  this,
integer(il_), intent(in)  ig 
)
private
elemental integer(il_) function bud_ldist1d::g2p_default_ ( class(ldist1d), intent(in)  this,
integer(il_), intent(in)  ig 
)
private
elemental integer(il_) function bud_ldist1d::g2p_ng_ ( class(ldist1d), intent(in)  this,
integer(il_), intent(in)  ig,
integer(il_), intent(in)  ng 
)
private
elemental integer(il_) function g2p_ng_ ( class(ldist1d), intent(in)  this,
integer(il_), intent(in)  ig,
integer(il_), intent(in)  ng 
)
private
elemental integer(ii_) function get_mpierr_ ( class(ldist1d), intent(in)  this)
private

Function for retrieving the latest error messag.

elemental integer(ii_) function bud_ldist1d::group_ ( class(ldist1d), intent(in)  this)
private

Query the associated group.

elemental integer(ii_) function group_ ( class(ldist1d), intent(in)  this)
private

Query the associated group.

integer(ii_) function, pointer bud_ldist1d::groupp_ ( class(ldist1d), intent(in)  this)
private

Query the associated group.

integer(ii_) function, pointer groupp_ ( class(ldist1d), intent(in)  this)
private

Query the associated group.

procedure, public initialize ( )

See interface initialize

subroutine initialize_ ( class(ldist1d), intent(inout)  this)
private
Parameters
[in,out]thisbud that is initialized
subroutine bud_ldist1d::initialize_ ( class(ldist1d), intent(inout)  this)
private
Parameters
[in,out]thisbud that is initialized
procedure, public initialized ( )

See interface is_initialized

elemental logical function bud_ldist1d::is_comm_ ( class(ldist1d), intent(in)  this)
private

Query whether a communicator is not MPI_COMM_NULL.

This may be used to identify fake distributions vs. real distributions.

elemental logical function is_comm_ ( class(ldist1d), intent(in)  this)
private

Query whether a communicator is not MPI_COMM_NULL.

This may be used to identify fake distributions vs. real distributions.

elemental logical function bud_ldist1d::is_dist_ ( class(ldist1d), intent(in)  this,
integer(ii_), intent(in)  dist 
)
private

Assert the distribution type.

elemental logical function is_dist_ ( class(ldist1d), intent(in)  this,
integer(ii_), intent(in)  dist 
)
private

Assert the distribution type.

procedure, public is_initd ( )

See interface is_initialized

procedure, public is_initialized ( )

See interface is_initialized

pure logical function bud_ldist1d::is_initialized_ ( class(ldist1d), intent(in)  this)
private
Parameters
[in]thischeck if this bud is initialized
Returns
.true. if it is associated, else .false.
pure logical function is_initialized_ ( class(ldist1d), intent(in)  this)
private
Parameters
[in]thischeck if this bud is initialized
Returns
.true. if it is associated, else .false.
pure logical function is_initialized_ ( class(ldist1d), intent(in)  this)
private
Parameters
[in]thischeck if this bud is initialized
Returns
.true. if it is associated, else .false.
pure logical function is_initialized_ ( class(ldist1d), intent(in)  this)
private
Parameters
[in]thischeck if this bud is initialized
Returns
.true. if it is associated, else .false.
procedure, public is_same ( )

See interface is_same

elemental logical function bud_ldist1d::is_same_ ( class(ldist1d), intent(in)  lhs,
class(ldist1d), intent(in)  rhs 
)
private
Parameters
[in]lhsfirst bud
[in]rhssecond bud
Returns
.true. if lhs and rhs point to the same data
elemental logical function is_same_ ( class(ldist1d), intent(in)  lhs,
class(ldist1d), intent(in)  rhs 
)
private
Parameters
[in]lhsfirst bud
[in]rhssecond bud
Returns
.true. if lhs and rhs point to the same data
elemental logical function is_same_ ( class(ldist1d), intent(in)  lhs,
class(ldist1d), intent(in)  rhs 
)
private
Parameters
[in]lhsfirst bud
[in]rhssecond bud
Returns
.true. if lhs and rhs point to the same data
elemental integer(il_) function l2g_default_ ( class(ldist1d), intent(in)  this,
integer(il_), intent(in)  il 
)
private
elemental integer(il_) function bud_ldist1d::l2g_default_ ( class(ldist1d), intent(in)  this,
integer(il_), intent(in)  il 
)
private
elemental integer(il_) function l2g_ng_ ( class(ldist1d), intent(in)  this,
integer(il_), intent(in)  il,
integer(il_), intent(in)  ng 
)
private
elemental integer(il_) function bud_ldist1d::l2g_ng_ ( class(ldist1d), intent(in)  this,
integer(il_), intent(in)  il,
integer(il_), intent(in)  ng 
)
private
subroutine bud_ldist1d::new_ ( class(ldist1d), intent(inout)  this,
integer(ii_), intent(in)  Comm 
)
private

Basic routine for initializing a new distribution.

This basic method does not attach anything associated with the distributino. Hence it may be used to initialize and use a distribution only via the communicator.

Parameters
[in,out]thisthe bud distribution container
[in]Commthe communicator that we will dublicate and attach
subroutine new_ ( class(ldist1d), intent(inout)  this,
integer(ii_), intent(in)  Comm 
)
private

Basic routine for initializing a new distribution.

This basic method does not attach anything associated with the distributino. Hence it may be used to initialize and use a distribution only via the communicator.

Parameters
[in,out]thisthe bud distribution container
[in]Commthe communicator that we will dublicate and attach
subroutine new_ ( class(ldist1d), intent(inout)  this,
integer(ii_), intent(in)  Comm 
)
private

Basic routine for initializing a new distribution.

This basic method does not attach anything associated with the distributino. Hence it may be used to initialize and use a distribution only via the communicator.

Parameters
[in,out]thisthe bud distribution container
[in]Commthe communicator that we will dublicate and attach
subroutine bud_ldist1d::new_block_ ( class(ldist1d), intent(inout)  this,
integer(ii_), intent(in)  Comm,
integer(il_), intent(in)  ng,
integer(ii_), intent(in)  dist 
)
private

Create a new block distribution.

subroutine new_block_ ( class(ldist1d), intent(inout)  this,
integer(ii_), intent(in)  Comm,
integer(il_), intent(in)  ng,
integer(ii_), intent(in)  dist 
)
private

Create a new block distribution.

subroutine new_block_ ( class(ldist1d), intent(inout)  this,
integer(ii_), intent(in)  Comm,
integer(il_), intent(in)  ng,
integer(ii_), intent(in)  dist 
)
private

Create a new block distribution.

subroutine bud_ldist1d::new_block_cyclic_ ( class(ldist1d), intent(inout)  this,
integer(ii_), intent(in)  Comm,
integer(ii_), intent(in)  bs,
integer(il_), intent(in)  ng,
integer(ii_), intent(in)  dist 
)
private

Create a new block cyclic distribution.

subroutine new_block_cyclic_ ( class(ldist1d), intent(inout)  this,
integer(ii_), intent(in)  Comm,
integer(ii_), intent(in)  bs,
integer(il_), intent(in)  ng,
integer(ii_), intent(in)  dist 
)
private

Create a new block cyclic distribution.

subroutine new_block_cyclic_ ( class(ldist1d), intent(inout)  this,
integer(ii_), intent(in)  Comm,
integer(ii_), intent(in)  bs,
integer(il_), intent(in)  ng,
integer(ii_), intent(in)  dist 
)
private

Create a new block cyclic distribution.

subroutine new_fake_block_ ( class(ldist1d), intent(inout)  this,
integer(il_), intent(in)  NP,
integer(il_), intent(in)  ng,
integer(ii_), intent(in)  dist 
)
private

Create a new block distribution (non-cyclic)

subroutine bud_ldist1d::new_fake_block_ ( class(ldist1d), intent(inout)  this,
integer(il_), intent(in)  NP,
integer(il_), intent(in)  ng,
integer(ii_), intent(in)  dist 
)
private

Create a new block distribution (non-cyclic)

subroutine new_fake_block_cyclic_ ( class(ldist1d), intent(inout)  this,
integer(ii_), intent(in)  NP,
integer(ii_), intent(in)  BS,
integer(il_), intent(in)  ng,
integer(ii_), intent(in)  dist 
)
private

Create a new block cyclic distribution.

subroutine bud_ldist1d::new_fake_block_cyclic_ ( class(ldist1d), intent(inout)  this,
integer(ii_), intent(in)  NP,
integer(ii_), intent(in)  BS,
integer(il_), intent(in)  ng,
integer(ii_), intent(in)  dist 
)
private

Create a new block cyclic distribution.

elemental integer(ii_) function bud_ldist1d::np_ ( class(ldist1d), intent(in)  this)
private

Query the number of processors in the communicator.

elemental integer(ii_) function np_ ( class(ldist1d), intent(in)  this)
private

Query the number of processors in the communicator.

integer(ii_) function, pointer npp_ ( class(ldist1d), intent(in)  this)
private

Query pointer to the number of processors in the communicator.

integer(ii_) function, pointer bud_ldist1d::npp_ ( class(ldist1d), intent(in)  this)
private

Query pointer to the number of processors in the communicator.

procedure, public nullify ( )

See interface nullify

elemental subroutine bud_ldist1d::nullify_ ( class(ldist1d), intent(inout)  this)
private
Parameters
[in,out]thisnullify references from this bud
elemental subroutine nullify_ ( class(ldist1d), intent(inout)  this)
private
Parameters
[in,out]thisnullify references from this bud
elemental integer(ii_) function bud_ldist1d::p_ ( class(ldist1d), intent(in)  this)
private

Query the current processor ID in the communicator.

elemental integer(ii_) function p_ ( class(ldist1d), intent(in)  this)
private

Query the current processor ID in the communicator.

integer(ii_) function, pointer pp_ ( class(ldist1d), intent(in)  this)
private

Query pointer to the current processor ID in the communicator.

integer(ii_) function, pointer bud_ldist1d::pp_ ( class(ldist1d), intent(in)  this)
private

Query pointer to the current processor ID in the communicator.

procedure, public print ( )

See interface print

subroutine bud_ldist1d::print_ ( class(ldist1d), intent(in)  this,
character(len=*), intent(in), optional  info,
integer, intent(in), optional  indent 
)
private

Print, to std-out, some basic information of the data-container.

Print out XML-like information regarding the data-container.

wanted Retrieval function of the string that represents the data. This will enable the parent program to show it in the way it wants.

Parameters
[in]thisdata type
[in]infooptional="lDist1D" additional information printed
[in]indentoptional=1 possible indentation of printed statement
subroutine print_ ( class(ldist1d), intent(in)  this,
character(len=*), intent(in), optional  info,
integer, intent(in), optional  indent 
)
private

Print, to std-out, some basic information of the data-container.

Print out XML-like information regarding the data-container.

wanted Retrieval function of the string that represents the data. This will enable the parent program to show it in the way it wants.

Parameters
[in]thisdata type
[in]infooptional="lDist1D" additional information printed
[in]indentoptional=1 possible indentation of printed statement
procedure, public references ( )

See interface references

elemental integer function references_ ( class(ldist1d), intent(in)  this)
private
Parameters
[in]thisreference counted bud
Returns
number of times this has been referenced
elemental integer function references_ ( class(ldist1d), intent(in)  this)
private
Parameters
[in]thisreference counted bud
Returns
number of times this has been referenced
elemental integer function bud_ldist1d::references_ ( class(ldist1d), intent(in)  this)
private
Parameters
[in]thisreference counted bud
Returns
number of times this has been referenced
procedure, public refs ( )

See interface references

procedure, public same ( )

See interface is_same

elemental integer(ii_) function bud_ldist1d::size_ ( class(ldist1d), intent(in)  this)
private

Query the default size of the distribution.

elemental integer(ii_) function size_ ( class(ldist1d), intent(in)  this)
private

Query the default size of the distribution.

elemental integer(ii_) function size_ ( class(ldist1d), intent(in)  this)
private

Query the default size of the distribution.

elemental integer(il_) function size_local_default_ ( class(ldist1d), intent(in)  this)
private
elemental integer(il_) function bud_ldist1d::size_local_default_ ( class(ldist1d), intent(in)  this)
private
elemental integer(il_) function size_local_ng_ ( class(ldist1d), intent(in)  this,
integer(il_), intent(in)  ng 
)
private
elemental integer(il_) function bud_ldist1d::size_local_ng_ ( class(ldist1d), intent(in)  this,
integer(il_), intent(in)  ng 
)
private
subroutine bud_ldist1d::sub1_ranks_ ( class(ldist1d), intent(inout)  set,
class(ldist1d), intent(inout)  sub,
integer(ii_), dimension(:), intent(inout), allocatable  rank 
)
private

Retrieve a common rank array from a subset distribution.

This returns an array which contains the sub processor IDs equivalent in the set communicator.

This equates to the equivalence equation: rank(dist_P(sub)) == dist_P(set)

Hence, upon exit rank has size dist_NP(sub).

subroutine sub1_ranks_ ( class(ldist1d), intent(inout)  set,
class(ldist1d), intent(inout)  sub,
integer(ii_), dimension(:), intent(inout), allocatable  rank 
)
private

Retrieve a common rank array from a subset distribution.

This returns an array which contains the sub processor IDs equivalent in the set communicator.

This equates to the equivalence equation: rank(dist_P(sub)) == dist_P(set)

Hence, upon exit rank has size dist_NP(sub).

subroutine bud_ldist1d::sub1_root_ ( class(ldist1d), intent(inout)  set,
class(ldist1d), intent(in)  sub,
integer(ii_), intent(out)  sub_root 
)
private

Retrieve common information about set/sub relationship.

Query the root and number of nodes in sub distribution in the set distribution.

subroutine sub1_root_ ( class(ldist1d), intent(inout)  set,
class(ldist1d), intent(in)  sub,
integer(ii_), intent(out)  sub_root 
)
private

Retrieve common information about set/sub relationship.

Query the root and number of nodes in sub distribution in the set distribution.

subroutine sub1_root_np_ ( class(ldist1d), intent(inout)  set,
class(ldist1d), intent(in)  sub,
integer(ii_), intent(out)  sub_root,
integer(ii_), intent(out)  sub_NP 
)
private

Retrieve common information about set/sub relationship.

Query the root and number of nodes in sub distribution in the set distribution.

subroutine bud_ldist1d::sub1_root_np_ ( class(ldist1d), intent(inout)  set,
class(ldist1d), intent(in)  sub,
integer(ii_), intent(out)  sub_root,
integer(ii_), intent(out)  sub_NP 
)
private

Retrieve common information about set/sub relationship.

Query the root and number of nodes in sub distribution in the set distribution.

subroutine subn_groups_ ( class(ldist1d), intent(inout)  set,
class(ldist1d), intent(inout)  sub,
integer, intent(out)  sub_root,
integer, intent(out)  Ng,
integer, dimension(:), intent(inout), allocatable  groups 
)
private

Retrieve common information about set/sub relationship for N subsets.

Query the root and number of nodes in sub distribution in the set distribution.

subroutine bud_ldist1d::subn_groups_ ( class(ldist1d), intent(inout)  set,
class(ldist1d), intent(inout)  sub,
integer, intent(out)  sub_root,
integer, intent(out)  Ng,
integer, dimension(:), intent(inout), allocatable  groups 
)
private

Retrieve common information about set/sub relationship for N subsets.

Query the root and number of nodes in sub distribution in the set distribution.

Variable Documentation

integer(ii_) bs = -1
private

Block-size if BLOCK_CYCLIC distribution is used.

character(len=*), parameter, private bud_mod = "bud_" // "bud_lDist1D"
private

Name of module.

character(len=*), parameter, private bud_type = "lDist1D"
private

Name of bud in this module.

integer(ii_) comm = MPI_Comm_Null
private

The associated communicator.

type(ldist1d_), pointer d => null()
private

Stored pointer which contains the reference counting etc.

integer(ii_) dist = DIST_NONE
private

The distribution type.

Todo:
Consider changing this to type. However, it may be ambiguous with either choice.
integer(ii_), parameter, public dist_block_cyclic = DIST_BLOCK_CYCLIC_FIRST

Block-cyclic distribution, remaining goes to last processor.

Block-cyclic distribution (DIST_BLOCK_CYCLIC_FIRST)

integer(ii_), parameter, public dist_block_cyclic_first = 2

Block-cyclic distribution, remaining goes to first processor.

integer(ii_), parameter, public dist_block_first = 5

A simple block-partitioning (remainder to first process)

integer(ii_), parameter, public dist_block_last = 6

A simple block-partitioning (remainder to last process)

integer(ii_), parameter, private dist_explicit = 4
private

User defined distribution (DIST_EXPLICIT)

integer(ii_), parameter, public dist_none = 1

Denote no distribution.

integer(ii_) err = MPI_SUCCESS
private

Storage for MPI-error, allows external query.

integer(ii_) grp = MPI_Group_Null
private

The group that encompass the equivalent communicator.

integer(il_), dimension(:), pointer, contiguous i2g => null()
private

Global index to processor.

integer(il_), dimension(:), pointer, contiguous l2g => null()
private

Local index to global index.

integer(il_) ng = -1
private

Number of (total) elements in the distribution.

Although strictly not necessary this can be used to store a default size of the distribution

integer(il_), dimension(:), pointer, contiguous nl => null()
private

Number of (local) elements in the distribution.

integer(ii_) np = 1
private

The number of processors in Comm

integer(ii_) p = 0
private

The associated processor number.