set_neighbor_ipe Subroutine

public subroutine set_neighbor_ipe()

Uses

  • proc~~set_neighbor_ipe~~UsesGraph proc~set_neighbor_ipe set_neighbor_ipe module~mod_global_parameters mod_global_parameters proc~set_neighbor_ipe->module~mod_global_parameters module~mod_basic_types mod_basic_types module~mod_global_parameters->module~mod_basic_types module~mod_connectivity mod_connectivity module~mod_global_parameters->module~mod_connectivity module~mod_constants mod_constants module~mod_global_parameters->module~mod_constants module~mod_physicaldata mod_physicaldata module~mod_global_parameters->module~mod_physicaldata module~mod_variables mod_variables module~mod_global_parameters->module~mod_variables mpi mpi module~mod_global_parameters->mpi module~mod_variables->module~mod_basic_types

Arguments

None

Calls

proc~~set_neighbor_ipe~~CallsGraph proc~set_neighbor_ipe set_neighbor_ipe proc~ipe_cf ipe_cf proc~set_neighbor_ipe->proc~ipe_cf proc~ipe_fc ipe_fc proc~set_neighbor_ipe->proc~ipe_fc proc~ipe_srl ipe_srl proc~set_neighbor_ipe->proc~ipe_srl

Called by

proc~~set_neighbor_ipe~~CalledByGraph proc~set_neighbor_ipe set_neighbor_ipe proc~handle_particles handle_particles proc~handle_particles->proc~set_neighbor_ipe proc~advance advance proc~advance->proc~handle_particles proc~main main proc~main->proc~handle_particles proc~timeintegration timeintegration proc~main->proc~timeintegration proc~timeintegration->proc~advance program~agile agile program~agile->proc~main

Source Code

  subroutine set_neighbor_ipe()
    use mod_global_parameters

    integer              :: igrid, iigrid,ipe
    integer              :: my_neighbor_type, i1,i2,i3
    logical              :: ipe_is_neighbor(0:npe-1)

    ipe_is_neighbor(:) = .false.
    do iigrid=1,igridstail; igrid=igrids(iigrid);

      do i3=-1,1
      do i2=-1,1
      do i1=-1,1
      if (i1==0.and.i2==0.and.i3==0) then
        cycle
      end if
      my_neighbor_type=neighbor_type(i1,i2,i3,igrid)

      select case (my_neighbor_type)
      case (neighbor_boundary) ! boundary
        ! do nothing
      case (neighbor_coarse) ! fine-coarse
        call ipe_fc(i1,i2,i3,igrid,ipe_is_neighbor)
      case (neighbor_sibling) ! same level
        call ipe_srl(i1,i2,i3,igrid,ipe_is_neighbor)
      case (neighbor_fine) ! coarse-fine
        call ipe_cf(i1,i2,i3,igrid,ipe_is_neighbor)
      end select

      end do
      end do
      end do

    end do

    ! remove self as neighbor
    ipe_is_neighbor(mype) = .false.

    ! Now make the list of neighbors
    npe_neighbors = 0
    do ipe=0,npe-1
      if (ipe_is_neighbor(ipe)) then
        npe_neighbors = npe_neighbors + 1
        ipe_neighbor(npe_neighbors) = ipe
      end if
    end do ! ipe

  end subroutine set_neighbor_ipe