corner_between Subroutine

public subroutine corner_between(edge_from, edge_to, x_min, x_max, y_min, y_max, z_plane, corner)

反時計回りに隣接する辺ペアに対し、対応する長方形コーナー座標を返す。

Arguments

Type IntentOptional Attributes Name
integer(kind=i32), intent(in) :: edge_from
integer(kind=i32), intent(in) :: edge_to
real(kind=dp), intent(in) :: x_min
real(kind=dp), intent(in) :: x_max
real(kind=dp), intent(in) :: y_min
real(kind=dp), intent(in) :: y_max
real(kind=dp), intent(in) :: z_plane
real(kind=dp), intent(out) :: corner(3)

Called by

proc~~corner_between~~CalledByGraph proc~corner_between corner_between proc~transition_corners transition_corners proc~transition_corners->proc~corner_between proc~make_plate_hole make_plate_hole proc~make_plate_hole->proc~transition_corners proc~build_one_template build_one_template proc~build_one_template->proc~make_plate_hole proc~build_template_mesh build_template_mesh proc~build_template_mesh->proc~build_one_template proc~build_mesh_from_config build_mesh_from_config proc~build_mesh_from_config->proc~build_template_mesh proc~load_or_init_run_state load_or_init_run_state proc~load_or_init_run_state->proc~build_mesh_from_config program~main main program~main->proc~load_or_init_run_state

Source Code

  subroutine corner_between(edge_from, edge_to, x_min, x_max, y_min, y_max, z_plane, corner)
    integer(i32), intent(in) :: edge_from, edge_to
    real(dp), intent(in) :: x_min, x_max, y_min, y_max, z_plane
    real(dp), intent(out) :: corner(3)

    select case (edge_from)
    case (2_i32)
      if (edge_to /= 4_i32) error stop "invalid edge transition"
      corner = [x_max, y_max, z_plane]
    case (4_i32)
      if (edge_to /= 1_i32) error stop "invalid edge transition"
      corner = [x_min, y_max, z_plane]
    case (1_i32)
      if (edge_to /= 3_i32) error stop "invalid edge transition"
      corner = [x_min, y_min, z_plane]
    case (3_i32)
      if (edge_to /= 2_i32) error stop "invalid edge transition"
      corner = [x_max, y_min, z_plane]
    case default
      error stop "unknown edge id"
    end select
  end subroutine corner_between