periodic_shell_mean_point_excess Subroutine

public pure subroutine periodic_shell_mean_point_excess(plan, source, target_z, s, dsdh)

点線源 1 個の s と ds/dh。平均をとるセルと画像の層数は plan の値を使う。

Arguments

Type IntentOptional Attributes Name
type(periodic_shell_mean_plan_type), intent(in) :: plan
real(kind=dp), intent(in) :: source(3)
real(kind=dp), intent(in) :: target_z
real(kind=dp), intent(out) :: s
real(kind=dp), intent(out) :: dsdh

Calls

proc~~periodic_shell_mean_point_excess~~CallsGraph proc~periodic_shell_mean_point_excess periodic_shell_mean_point_excess proc~periodic_shell_mean_excess periodic_shell_mean_excess proc~periodic_shell_mean_point_excess->proc~periodic_shell_mean_excess

Called by

proc~~periodic_shell_mean_point_excess~~CalledByGraph proc~periodic_shell_mean_point_excess periodic_shell_mean_point_excess proc~build_periodic_shell_mean_plan build_periodic_shell_mean_plan proc~build_periodic_shell_mean_plan->proc~periodic_shell_mean_point_excess proc~precompute_periodic_root_operator precompute_periodic_root_operator proc~precompute_periodic_root_operator->proc~periodic_shell_mean_point_excess proc~core_complete_plan_impl core_complete_plan_impl proc~core_complete_plan_impl->proc~build_periodic_shell_mean_plan proc~core_complete_plan_impl->proc~precompute_periodic_root_operator proc~core_build_panel_plan_impl core_build_panel_plan_impl proc~core_build_panel_plan_impl->proc~core_complete_plan_impl proc~core_build_plan_impl core_build_plan_impl proc~core_build_plan_impl->proc~core_complete_plan_impl

Source Code

  pure subroutine periodic_shell_mean_point_excess(plan, source, target_z, s, dsdh)
    type(periodic_shell_mean_plan_type), intent(in) :: plan
    real(dp), intent(in) :: source(3), target_z
    real(dp), intent(out) :: s, dsdh
    real(dp) :: lo(2), hi(2), xs, ys

    lo = plan%cell_lo - real(plan%image_layers, dp)*plan%cell_len
    hi = plan%cell_lo + real(plan%image_layers + 1_i32, dp)*plan%cell_len
    xs = source(plan%periodic_axes(1))
    ys = source(plan%periodic_axes(2))
    call periodic_shell_mean_excess( &
      target_z - source(plan%free_axis), lo(1) - xs, hi(1) - xs, lo(2) - ys, hi(2) - ys, &
      plan%cell_len(1)*plan%cell_len(2), plan%soft2, s, dsdh &
      )
  end subroutine periodic_shell_mean_point_excess