precompute_periodic_root_operator Subroutine

public subroutine precompute_periodic_root_operator(plan)

periodic2 の root operator を前計算する。

Arguments

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

FMM 計画。


Calls

proc~~precompute_periodic_root_operator~~CallsGraph proc~precompute_periodic_root_operator precompute_periodic_root_operator proc~active_tree_child_count active_tree_child_count proc~precompute_periodic_root_operator->proc~active_tree_child_count proc~active_tree_child_idx active_tree_child_idx proc~precompute_periodic_root_operator->proc~active_tree_child_idx proc~active_tree_max_depth active_tree_max_depth proc~precompute_periodic_root_operator->proc~active_tree_max_depth proc~active_tree_nnode active_tree_nnode proc~precompute_periodic_root_operator->proc~active_tree_nnode proc~active_tree_node_center active_tree_node_center proc~precompute_periodic_root_operator->proc~active_tree_node_center proc~active_tree_node_half_size active_tree_node_half_size proc~precompute_periodic_root_operator->proc~active_tree_node_half_size proc~add_periodic2_exact_ewald_correction_single_source add_periodic2_exact_ewald_correction_single_source proc~precompute_periodic_root_operator->proc~add_periodic2_exact_ewald_correction_single_source proc~build_axis_powers build_axis_powers proc~precompute_periodic_root_operator->proc~build_axis_powers proc~use_periodic2_m2l_root_oracle use_periodic2_m2l_root_oracle proc~precompute_periodic_root_operator->proc~use_periodic2_m2l_root_oracle

Called by

proc~~precompute_periodic_root_operator~~CalledByGraph proc~precompute_periodic_root_operator precompute_periodic_root_operator proc~core_build_plan_impl core_build_plan_impl proc~core_build_plan_impl->proc~precompute_periodic_root_operator

Source Code

  subroutine precompute_periodic_root_operator(plan)
    type(fmm_plan_type), intent(inout) :: plan

    if (allocated(plan%periodic_root_target_nodes)) deallocate (plan%periodic_root_target_nodes)
    if (allocated(plan%periodic_root_operator)) deallocate (plan%periodic_root_operator)
    plan%periodic_root_operator_ready = .false.
    plan%periodic_root_target_count = 0_i32

    if (use_periodic2_m2l_root_oracle(plan)) then
      call precompute_periodic_root_oracle_operator(plan)
    end if
  end subroutine precompute_periodic_root_operator