active_tree_level_bounds Subroutine

public pure subroutine active_tree_level_bounds(plan, use_target_tree, depth, level_start_pos, level_end_pos)

指定深さのレベル範囲を返す。

Arguments

Type IntentOptional Attributes Name
type(fmm_plan_type), intent(in) :: plan

FMM 計画。

logical, intent(in) :: use_target_tree

target 木を使うなら .true.

integer(kind=i32), intent(in) :: depth

深さ。

integer(kind=i32), intent(out) :: level_start_pos

レベル先頭位置。

integer(kind=i32), intent(out) :: level_end_pos

レベル先頭位置。 レベル末尾位置。


Called by

proc~~active_tree_level_bounds~~CalledByGraph proc~active_tree_level_bounds active_tree_level_bounds proc~core_update_state_impl core_update_state_impl proc~core_update_state_impl->proc~active_tree_level_bounds

Source Code

  pure subroutine active_tree_level_bounds(plan, use_target_tree, depth, level_start_pos, level_end_pos)
    type(fmm_plan_type), intent(in) :: plan
    logical, intent(in) :: use_target_tree
    integer(i32), intent(in) :: depth
    integer(i32), intent(out) :: level_start_pos, level_end_pos

    if (use_target_tree) then
      level_start_pos = plan%target_level_start(depth + 1_i32)
      level_end_pos = plan%target_level_start(depth + 2_i32) - 1_i32
    else
      level_start_pos = plan%node_level_start(depth + 1_i32)
      level_end_pos = plan%node_level_start(depth + 2_i32) - 1_i32
    end if
  end subroutine active_tree_level_bounds