asign_tree_neighbor Subroutine

public subroutine asign_tree_neighbor(tree)

Uses

  • proc~~asign_tree_neighbor~~UsesGraph proc~asign_tree_neighbor asign_tree_neighbor module~mod_forest mod_forest proc~asign_tree_neighbor->module~mod_forest module~mod_global_parameters mod_global_parameters proc~asign_tree_neighbor->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

asign tree node neighor

Arguments

Type IntentOptional Attributes Name
type(tree_node_ptr) :: tree

Calls

proc~~asign_tree_neighbor~~CallsGraph proc~asign_tree_neighbor asign_tree_neighbor proc~find_neighbor find_neighbor proc~asign_tree_neighbor->proc~find_neighbor proc~find_root_neighbor find_root_neighbor proc~find_neighbor->proc~find_root_neighbor

Called by

proc~~asign_tree_neighbor~~CalledByGraph proc~asign_tree_neighbor asign_tree_neighbor proc~read_forest read_forest proc~read_forest->proc~asign_tree_neighbor proc~read_snapshot read_snapshot proc~read_snapshot->proc~read_forest proc~read_snapshot_old read_snapshot_old proc~read_snapshot->proc~read_snapshot_old proc~read_snapshot_old->proc~read_forest proc~main main proc~main->proc~read_snapshot program~agile agile program~agile->proc~main

Source Code

  subroutine asign_tree_neighbor(tree)
    use mod_forest
    use mod_global_parameters
  
    type(tree_node_ptr) :: tree
  
    logical, dimension(ndim) :: pole
    integer :: my_neighbor_type, i1,i2,i3, iside
    type(tree_node_ptr) :: my_neighbor
  
    do iside=1,2
       i1=kr(1,1)*(2*iside-3);i2=kr(2,1)*(2*iside-3);i3=kr(3,1)*(2*iside-3);
       call find_neighbor(my_neighbor,my_neighbor_type,tree,i1,i2,i3,pole)
       select case (my_neighbor_type)
       case (neighbor_sibling, neighbor_fine)
          tree%node%neighbor(iside,1)%node => my_neighbor%node
          if (associated(my_neighbor%node)) then
             if (pole(1)) then
                my_neighbor%node%neighbor(iside,1)%node => tree%node
             else
                my_neighbor%node%neighbor(3-iside,1)%node => tree%node
             end if
          end if
       case default
          nullify(tree%node%neighbor(iside,1)%node)
       end select
    end do
    do iside=1,2
       i1=kr(1,2)*(2*iside-3);i2=kr(2,2)*(2*iside-3);i3=kr(3,2)*(2*iside-3);
       call find_neighbor(my_neighbor,my_neighbor_type,tree,i1,i2,i3,pole)
       select case (my_neighbor_type)
       case (neighbor_sibling, neighbor_fine)
          tree%node%neighbor(iside,2)%node => my_neighbor%node
          if (associated(my_neighbor%node)) then
             if (pole(2)) then
                my_neighbor%node%neighbor(iside,2)%node => tree%node
             else
                my_neighbor%node%neighbor(3-iside,2)%node => tree%node
             end if
          end if
       case default
          nullify(tree%node%neighbor(iside,2)%node)
       end select
    end do
    do iside=1,2
       i1=kr(1,3)*(2*iside-3);i2=kr(2,3)*(2*iside-3);i3=kr(3,3)*(2*iside-3);
       call find_neighbor(my_neighbor,my_neighbor_type,tree,i1,i2,i3,pole)
       select case (my_neighbor_type)
       case (neighbor_sibling, neighbor_fine)
          tree%node%neighbor(iside,3)%node => my_neighbor%node
          if (associated(my_neighbor%node)) then
             if (pole(3)) then
                my_neighbor%node%neighbor(iside,3)%node => tree%node
             else
                my_neighbor%node%neighbor(3-iside,3)%node => tree%node
             end if
          end if
       case default
          nullify(tree%node%neighbor(iside,3)%node)
       end select
    end do
  
  end subroutine asign_tree_neighbor