wrap_src_pos_to_primary_cell Subroutine

public subroutine wrap_src_pos_to_primary_cell(plan)

plan 内の全ソース位置を primary cell [target_box_min, target_box_min+L) へ折り返す。

Arguments

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

FMM 計画(plan%src_pos が変更される)。


Called by

proc~~wrap_src_pos_to_primary_cell~~CalledByGraph proc~wrap_src_pos_to_primary_cell wrap_src_pos_to_primary_cell proc~core_build_plan_impl core_build_plan_impl proc~core_build_plan_impl->proc~wrap_src_pos_to_primary_cell

Source Code

  subroutine wrap_src_pos_to_primary_cell(plan)
    type(fmm_plan_type), intent(inout) :: plan
    integer(i32) :: i, k, axis
    real(dp) :: len_k, lo

    if (.not. plan%options%use_periodic2) return
    do i = 1_i32, plan%nsrc
      do k = 1_i32, 2_i32
        axis = plan%options%periodic_axes(k)
        len_k = plan%options%periodic_len(k)
        lo = plan%options%target_box_min(axis)
        plan%src_pos(axis, i) = lo + modulo(plan%src_pos(axis, i) - lo, len_k)
      end do
    end do
  end subroutine wrap_src_pos_to_primary_cell