init Interface

public interface init

Module Procedures

private subroutine initd_(othercomp, GSMap, mycomm, Rout, name)

!!!!!!!!!!!!!!!Begin comparison of globalsegmaps

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: othercomp
type(GlobalSegMap), intent(in) :: GSMap
integer, intent(in) :: mycomm
type(Router), intent(out) :: Rout
character(len=*), intent(in), optional :: name

private subroutine initp_(inGSMap, inRGSMap, mycomm, Rout, name)

determine the global segments on this processor just once, so the info be used repeatedly below same code was used in m_GlobalToLocal - should make a subroutine...

determine the possibly overlapping segments in RGSMap that are local to each proc

count number of potentially overlapping remote segments and which and how many processes hold these

number of potentially overlapping segments in RGSMap local to proc and mapping from processes that hold these to actual process id

build list of potentially overlapping remote segments

original size of rgs_lb()/ub() was (r_ngseg,nprocs) at the cost of looping to compute it (within GlobalSegMap_max_nlseg), reduced size to (r_max_nlseg,nprocs) then further reduced to (max_rgs_count,feas_nprocs)

(note: redefining rgs_count to be indexed as 1:feas_nprocs instead of as 1:nprocs) !!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!

pull this out of the loop to vectorize !!!!!!!!!!!!!!!!!!end of search through remote GSMap

Arguments

Type IntentOptional Attributes Name
type(GlobalSegMap), intent(in) :: inGSMap
type(GlobalSegMap), intent(in) :: inRGSMap
integer, intent(in) :: mycomm
type(Router), intent(out) :: Rout
character(len=*), intent(in), optional :: name