Nodes of different colours represent the following:
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Source Code
subroutine set_neighbor_ipe()use mod_global_parametersinteger::igrid,iigrid,ipeinteger::my_neighbor_type,i1,i2,i3logical::ipe_is_neighbor(0:npe-1)ipe_is_neighbor(:)=.false.do iigrid=1,igridstail;igrid=igrids(iigrid);do i3=-1,1do i2=-1,1do i1=-1,1if(i1==0.and.i2==0.and.i3==0)then cycle end ifmy_neighbor_type=neighbor_type(i1,i2,i3,igrid)select case(my_neighbor_type)case(neighbor_boundary)! boundary! do nothingcase(neighbor_coarse)! fine-coarsecall ipe_fc(i1,i2,i3,igrid,ipe_is_neighbor)case(neighbor_sibling)! same levelcall ipe_srl(i1,i2,i3,igrid,ipe_is_neighbor)case(neighbor_fine)! coarse-finecall ipe_cf(i1,i2,i3,igrid,ipe_is_neighbor)end select end do end do end do end do! remove self as neighboripe_is_neighbor(mype)=.false.! Now make the list of neighborsnpe_neighbors=0do ipe=0,npe-1if(ipe_is_neighbor(ipe))thennpe_neighbors=npe_neighbors+1ipe_neighbor(npe_neighbors)=ipeend if end do! ipeend subroutine set_neighbor_ipe