Octopus
partition_oct_m Module Reference

Data Types

interface  partition_get_partition_number
 
type  partition_t
 The partition is an array that contains the mapping between some global index and a process, such that point ip will be stored in process partitionpart(ip). More...
 

Functions/Subroutines

subroutine, public partition_init (partition, np_global, mpi_grp)
 initialize the partition table More...
 
subroutine, public partition_end (partition)
 
subroutine, public partition_set (partition, part)
 
subroutine, public partition_dump (partition, dir, filename, ierr)
 write the partition data More...
 
subroutine, public partition_load (partition, dir, filename, ierr)
 read the partition data More...
 
subroutine, public partition_get_local_size (partition, istart, np_local)
 
subroutine, public partition_get_global (partition, part_global, root)
 Returns the global partition. If root is present, the partition is gathered only in that node. Otherwise it is gathered in all nodes. More...
 
subroutine partition_get_partition_number_4 (partition, np, points, partno)
 Given a list of global indices, return the partition number where those points are stored. Note that this routine will accept global indices equal to 0. In that case it will return 0 as a partition number. More...
 
subroutine partition_get_partition_number_8 (partition, np, points, partno)
 
subroutine, public partition_get_np_local (partition, np_local_vec)
 Given the partition, returns the corresponding number of local points that each partition has. More...
 
pure integer function, public partition_get_npart (partition)
 Returns the total number of partitions. More...
 
pure integer function, public partition_get_part (partition, local_point)
 Returns the partition of the local point. More...
 
pure integer function partition_get_number (partition, global_point)
 Returns the partition number for a given global index If the index is zero, return local partition. More...
 
subroutine, public partition_get_local (partition, rbuffer, np_local)
 Calculates the local vector of all partitions in parallel. Local vector stores the global point indices that each partition has. More...
 

Function/Subroutine Documentation

◆ partition_init()

subroutine, public partition_oct_m::partition_init ( type(partition_t), intent(out)  partition,
integer(int64), intent(in)  np_global,
type(mpi_grp_t), intent(in)  mpi_grp 
)

initialize the partition table

Parameters
[out]partitionthe partition table
[in]np_globaltotal number of points to distribute
[in]mpi_grpthe mpi groups

Definition at line 193 of file partition.F90.

◆ partition_end()

subroutine, public partition_oct_m::partition_end ( type(partition_t), intent(inout)  partition)

Definition at line 230 of file partition.F90.

◆ partition_set()

subroutine, public partition_oct_m::partition_set ( type(partition_t), intent(inout)  partition,
integer, dimension(:), intent(in)  part 
)
Parameters
[in]partThe local portion of the partition.

Definition at line 241 of file partition.F90.

◆ partition_dump()

subroutine, public partition_oct_m::partition_dump ( type(partition_t), intent(in)  partition,
character(len=*), intent(in)  dir,
character(len=*), intent(in)  filename,
integer, intent(out)  ierr 
)

write the partition data

Partition is written in parallel if MPI2 is available. Otherwise, is gathered in root and then written.

Definition at line 258 of file partition.F90.

◆ partition_load()

subroutine, public partition_oct_m::partition_load ( type(partition_t), intent(inout)  partition,
character(len=*), intent(in)  dir,
character(len=*), intent(in)  filename,
integer, intent(out)  ierr 
)

read the partition data

Partition is read in parallel if MPI2 is available. Otherwise, is read by the root and then scattered

Definition at line 303 of file partition.F90.

◆ partition_get_local_size()

subroutine, public partition_oct_m::partition_get_local_size ( type(partition_t), intent(in)  partition,
integer(int64), intent(out)  istart,
integer, intent(out)  np_local 
)
Parameters
[out]istartThe number of points of the partition stored in this process.
[out]np_localThe position of the first point stored in this process.

Definition at line 379 of file partition.F90.

◆ partition_get_global()

subroutine, public partition_oct_m::partition_get_global ( type(partition_t), intent(in)  partition,
integer, dimension(:), intent(out)  part_global,
integer, intent(in), optional  root 
)

Returns the global partition. If root is present, the partition is gathered only in that node. Otherwise it is gathered in all nodes.

Definition at line 395 of file partition.F90.

◆ partition_get_partition_number_4()

subroutine partition_oct_m::partition_get_partition_number_4 ( type(partition_t), intent(in)  partition,
integer, intent(in)  np,
integer(int64), dimension(:), intent(in)  points,
integer, dimension(:), intent(out)  partno 
)
private

Given a list of global indices, return the partition number where those points are stored. Note that this routine will accept global indices equal to 0. In that case it will return 0 as a partition number.

Definition at line 440 of file partition.F90.

◆ partition_get_partition_number_8()

subroutine partition_oct_m::partition_get_partition_number_8 ( type(partition_t), intent(in)  partition,
integer(int64), intent(in)  np,
integer(int64), dimension(:), intent(in)  points,
integer, dimension(:), intent(out)  partno 
)
private

Definition at line 535 of file partition.F90.

◆ partition_get_np_local()

subroutine, public partition_oct_m::partition_get_np_local ( type(partition_t), intent(in)  partition,
integer, dimension(:), intent(inout), contiguous  np_local_vec 
)

Given the partition, returns the corresponding number of local points that each partition has.

Parameters
[in]partitionCurrent partition
[in,out]np_local_vecVector of local points (np_local)

Definition at line 561 of file partition.F90.

◆ partition_get_npart()

pure integer function, public partition_oct_m::partition_get_npart ( type(partition_t), intent(in)  partition)

Returns the total number of partitions.

Definition at line 590 of file partition.F90.

◆ partition_get_part()

pure integer function, public partition_oct_m::partition_get_part ( type(partition_t), intent(in)  partition,
integer, intent(in)  local_point 
)

Returns the partition of the local point.

Definition at line 597 of file partition.F90.

◆ partition_get_number()

pure integer function partition_oct_m::partition_get_number ( type(partition_t), intent(in)  partition,
integer(int64), intent(in)  global_point 
)
private

Returns the partition number for a given global index If the index is zero, return local partition.

Definition at line 606 of file partition.F90.

◆ partition_get_local()

subroutine, public partition_oct_m::partition_get_local ( type(partition_t), intent(in)  partition,
integer(int64), dimension(:), intent(inout), contiguous  rbuffer,
integer, intent(out)  np_local 
)

Calculates the local vector of all partitions in parallel. Local vector stores the global point indices that each partition has.

Parameters
[in,out]rbufferThe actual result, the local vector from 1 to np_local
[out]np_localNumber of elements, might be less than partitionnp_local

Definition at line 621 of file partition.F90.