tem_ParentAtLevel Function

private function tem_ParentAtLevel(TreeID, level) result(parentID)

This function provides the parent ID of a given tree ID on a given level.

The parent ID on a given level is calculated using the equation \f[ id_{l-1}=\frac{id_{l}-1}{8} \f] in a loop.

Arguments

Type IntentOptional Attributes Name
integer(kind=long_k), intent(in) :: TreeID

treeID of which the pID is requested

integer, intent(in) :: level

the level on which the pID is requested

Return Value integer(kind=long_k)

resulting parent ID


Source Code

  function tem_ParentAtLevel(TreeID, level) result(parentID)
    ! ---------------------------------------------------------------------------
    !> treeID of which the pID is requested
    integer(kind=long_k),intent(in) :: TreeID
    !> the level on which the pID is requested
    integer,intent(in) :: level
    !> resulting parent ID
    integer(kind=long_k) :: parentID
    ! ---------------------------------------------------------------------------
    integer :: cLevel ! the current level of the tree ID
    integer :: iLevel ! level iterator
    ! ---------------------------------------------------------------------------

    parentID = TreeID
    cLevel = tem_LevelOf(TreeID)

    do iLevel = 1, cLevel-level
      ! parentID = (parentID - 1) / 8
      parentID = ishft( (parentID-1_long_k), -3 )
    end do

  end function tem_ParentAtLevel